问题标签 [amazon-kms]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
337 浏览

python-3.x - 将 AWS KMS 公钥(从字节)转换为 .pem 文件

我正在使用 Python3 和 Boto3 以编程方式使用 AWS KMS(密钥管理服务)。我在 KMS 本身中创建了一个非对称密钥对(公共和私有)。现在有一种方法可以将公共和私有文件本地保存到在 KMS 上创建的磁盘上。

这是我的代码:

现在我的观点是如何将内容保存pub_key_dec到文件并将其转换为 pem 格式。同样,我也可以下载私钥。希望我的问题很清楚。

0 投票
1 回答
136 浏览

amazon-s3 - 如何使用 Python Jupyter Notebook 通过 KMS 加密从 S3 读取文件

我正在尝试使用 spark.read.csv 从 S3 读取文件。但是,我无法读取具有 KMS 加密的文件。我有可用的 KMS 密钥。如何在配置时在 spark 会话中指定它们。

0 投票
1 回答
188 浏览

amazon-web-services - Terraform 从非对称 KMS 密钥对获取公钥

您可以在 AWS KMS 中创建非对称密钥对(加密/解密)。当前的 AWS CLI 允许访问公钥 ( https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/get-public-key.html )

我无法在 Terraform 的 KMS 资源中看到此功能。我是否遗漏了什么,或者这在最新版本中还没有,

0 投票
1 回答
443 浏览

amazon-web-services - AWS KMS 签名为我的 JWT 返回无效签名

我正在尝试使用 ES256 和 KMS 生成一个简单的 JWT。肉眼看起来一切都很好。但是当我通过 jwt.io 测试它时,我得到“无效的签名”。代码很简单:

SigningService看起来像这样:

_keyManagementService来自IAmazonKeyManagementServiceAWSSDK.KeyManagementService 3.5.2.6

在 KMS 中,密钥设置如下:

  • 关键规格:ECC_NIST_P256
  • 密钥用法:签名和验证
  • 签名算法:ECDSA_SHA_256

KMS 中的公钥(使用 localstack)

生成输出示例

如果它使用内置工具(仅通过替换上面的 signatureData 行)使用相同的输入对其进行签名,我会在 jwt.io 中对其进行验证。

任何输入都会受到欢迎,因为感觉就像我已经测试了一切......

0 投票
0 回答
1037 浏览

amazon-web-services - 从 Lambda 向加密的 SQS 队列发送消息

我有一个需要将消息发送到加密 SQS 队列的 AWS Lambda 函数。有一次,我的 AWS Lambda 函数可以向这个加密的 SQS 队列发送消息。在我开始工作后,我对权限进行了一些调整,使它们更加具体。然后,即使在我恢复到真正广泛的权限后,它也突然停止工作。

现在我总是收到以下错误:

我的 CMK 有以下政策,并且只允许:

我编辑了资源,但我三次检查了 ARN,它是正确的。

我的 Lambda 函数附加了以下策略:

这还不足以让我的 Lambda 向这个 SQS 队列发送消息吗?就像我在上面提到的那样,这比我试图限制我的 Lambda 上的策略更有效,然后即使在我将它改回来之后它也停止了工作。

我在这里想念什么?我不确定我还能改变什么以及为什么它起作用然后它停止工作......


编辑

似乎有效但现在无效的权限:

CMK 政策

Lambda 政策


编辑 2

必须有一些我不理解的东西在起作用,因为这无法预测......

我使用 CDK 进行了以下更改:

第一个变化:

结果:我可以再次向 SQS 队列发送消息

第二个变化:

结果:我不能再向 SQS 队列发送消息了?!?为什么?

第三个变化:

结果:我仍然无法向 SQS 队列发送消息?!?这里发生了什么?这是与第一次更改相同的策略状态....

0 投票
2 回答
493 浏览

python-3.x - 如何使用带有 KMS(客户管理的密钥)的预签名帖子发布对象

当我使用预签名的帖子生成 url 和其他属性时,当我尝试使用服务器端加密(即客户管理的密钥)上传我的图像时,这个密钥是由我创建的。就我而言,我可以使用{"x-amz-server-side-encryption": "aws:kms"}. 如何上传客户管理的密钥?如果,我想使用客户管理的密钥上传图像,我是否使用x-amz-server-side​-encryption​-customer-keyand x-amz-server-side​-encryption​-customer-key-MD5

这是我的示例代码:

使用后"x-amz-server-side-encryption-aws-kms-key-id": "<KEY ID>",我可以访问 d9

这是新的示例代码:

错误消息

0 投票
1 回答
714 浏览

amazon-web-services - AWS owned CMKs vs AWS managed CMKs

Question # 0: AWS console displays AWS managed keys and Customer Managed Keys; it doesn't display AWS owned CMKs as an item in the list. As per documentation, customers cannot view or manage AWS-owned CMKs. However, under AWS managed keys, I see keys that were not created by me either implicitly or explicitly. Particularly I see this key with the alias aws/dynamodb. When I created DynamoDB tables, I used default settings which means, it will use AWS-owned CMKs for encryption at rest. Does this mean, "aws/dynamodb" is an AWS-owned CMK? It is a bit ambiguous. Is there a field in aws kms describe-key that displays the type?

Console

The default option in us-east-1 is AWS owned CMK

enter image description here

Question # 1: Other than rotation policy, ownership, and the cost, is there a fundamental difference in the way AWS-owned CMKs encrypt/decrypt data when compared to AWS-managed CMKs?

Question # 2: As per the documentation, AWS-owned CMK usage is not limited to one particular account, this means there is a possibility that AWS uses the same CMK across multiple different accounts Is this understanding correct?

Question # 3: What services besides DynamoDB use AWS-owned CMKs for encryption at rest? In the picture, I see some more keys, and those are corresponding services that I tried.

Appreciate any help. Thanks in advance.

0 投票
2 回答
184 浏览

pyspark - 在 AWS Glue 的 pySpark 中使用 KMS 解密记录

我们正在对某些文本内容执行客户端加密,并将它们存储到 s3 中的单个文件中。我们希望阅读这些文件并处理 AWS Glue 中的内容。我们能够读取内容,但在解密过程中,我们得到一个选择错误。

这是我们得到的错误:

有没有办法做到这一点?

0 投票
0 回答
215 浏览

amazon-web-services - 哪种方法适合加密大小大于 4KB 的消息?

我一直在努力使用 AWS KMS 加密大小大于 4Kb 的消息。在我浏览AWS KMS 文档时,可以使用 AWS KMS 加密的消息的最大大小仅为 4Kb。我尝试使用对称和非对称密钥类型来加密消息,但无法获得预期的结果。这是错误截图: 在此处输入图像描述

而且我很确定这个错误是由于我的消息大于 4Kb。我有以下限制。

  1. 加密必须在前端。这给使用对称方法带来了问题,因为即使前端代码被缩小,最终用户也可以很容易地看到我使用的密钥。
  2. 我正在寻找一种轻量级的方法,这样我就不会在前端代码中添加很多库和插件。
  3. 当我浏览了几篇文章时,我发现如果我使用非对称方法,那么可以加密的消息大小总是有限制的。

我专注于 AWS KMS,因为我aws-sdk已经在我的前端代码中使用了,任何具有相同 SDK 的解决方案都不会增加我的代码大小。

因此,根据我的研究(不是 100% 确定),我发现的可能替代方案是:

  1. 混合加密(AWS 之外):使用对称密钥加密消息,使用非对称密钥加密对称密钥。
  2. 信封加密(使用 AWS)(不确定我们如何实现这一点)

因此,我正在围绕 AWS 搜索说明信封加密的参考资料(如果可能,请提供示例)或任何其他满足上述约束的解决方案。如果无法在 AWS 周围实现,那么任何可以在前端实现的轻量级方法(具有实际实现)也将受到高度赞赏。

编程语言:Javascript

0 投票
1 回答
42 浏览

javascript - 从 generateDataKeyPairWithoutPlaintext() 获取字符串数据

我正在尝试从 AWS KMS 调用(Node.js SDK)的返回值中获取字符串数据:

它同时返回pair.PrivateKeyCiphertextBlobpair.PublicKey作为 Uint8Array blob。我需要先制作一个 base64 字符串,然后再制作一个纯文本。

我得到了第一个:

(虽然我不确定)而且我真的很难从第二个中提取纯文本。就像是

不会产生预期的结果。

我做的第一个对吗?我该怎么做第二个?