问题标签 [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 投票
0 回答
433 浏览

java - 使用 KMS 的弹性 beanstalk 环境变量加密

我正在开发一个托管在 AWS 弹性豆茎上的应用程序。我将一些密钥和密码作为环境变量存储在弹性 beantalk 中。这些变量使用@data 和@value 注释存储到java 变量中。我想使用 KMS 加密这些环境变量并在将其存储在变量中之前对其进行解密。

我应该如何实现这一目标?

0 投票
0 回答
1990 浏览

java - AWS - 允许其他账户使用 KMS (Java) 读取和解密 DynamoDB 数据

我有一个账户 A,它有一个 DynamoDB 表,其中的内容使用 KMS 密钥加密,也在账户 A 中。

我想授予对账户 B 的访问权限,以便它能够读取 DynamoDB 数据并使用相同的 KMS 密钥对其进行解密。

第一步:跨账户访问 DynamoDB

我使用了这篇文章:https ://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html 。

  • 在账户 A 中创建了一个角色,将账户 B 的 IAM 用户指定为可信实体
  • 在账户 B 中创建了一个 IAM 用户,该用户具有 AssumeRole 策略来访问账户 A 中的角色
  • 对于在账户 B 的上下文中运行的代码,创建了 DynamoDBMapper,它使用 STSAssumeRoleSessionCredentialsProvider 来承担角色

这行得通!

第二步:使用KMS加密/解密数据(非跨账户)

为此使用了aws-dynamodb-encryption-java库。在创建 DynamoDBMapper 时,传入从 KMS Material Provider 派生的 AttributeEncryptor:

这也有效!

第三步:允许账户 B 解密来自 DynamoDB 的数据

关注这篇文章:https ://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying.html#key-policy-modifying-external-accounts

  • 修改账户 A 中的密钥策略以授予账户 B 的根访问权限
  • 在账户 B 中创建了一个 IAM 策略,以拥有能够访问账户 A 中的 KMS 密钥的适当权限。

从代码的角度来看,我使用与第二步相同的代码来创建 AWSKMS 实例,尽管使用的是在第 3 步中创建的 IAM 策略。我收到以下错误:

为什么要在账户 B 中查找密钥?是因为我还需要 Assume Role 才能访问 KMS 密钥吗?但是文档没有提到这一点。此外,我还没有在账户 B 中创建任何 IAM 策略来承担 KMS 的角色。

任何指针表示赞赏。

0 投票
1 回答
925 浏览

amazon-web-services - 带有 KMS 的 S3 默认 SSE 仍然需要 aws-cli 的参数

我创建了一个 S3 存储桶并将默认 SSE 配置为使用 KMS。

aws-cli只要我通过--sse aws:kms标志, 我就可以将文件上传到存储桶,例如: aws s3 cp --sse aws:kms test.txt s3://my-bucket

但我希望这可以在没有--sse aws:kms标志的情况下工作,因为这是默认加密,即它应该在没有指定加密标头时应用。

当我尝试没有标题时,它失败了: aws s3 cp test.txt s3://my-bucket upload failed: ./test.txt to s3://my-bucket/test.txt An error occurred (AccessDenied) when calling the PutObject operation: Access Denied

如果我从使用 AWS KMS 更改为 S3 托管的 SSE,它可以在没有任何--sse标志的情况下工作,但我需要使用 AWS KMS。我已尝试向发出请求的 IAM 用户添加以下策略,但仍然失败: { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:*", "kms:*" ], "Resource": [ "arn:aws:s3:::my-bucket", "arn:aws:s3:::my-bucket/*", "arn:aws:kms:eu-west-2:1111112222:key/aaaabbbb-1122-2222-4444-eeeeff3333" ] } ] }

为了让这个工作,我缺少什么?

0 投票
0 回答
60 浏览

amazon-web-services - 自动增加所有 AWS 区域的 KMS 请求

我有一个 AWS 账户,我只使用 N.Virginia 和 Ohio 地区进行工作。

但是,当我转到计费仪表板时,我看到其他地区也有 KMS 的请求。我附上了图片截图以供参考:

在此处输入图像描述

这并没有让我花钱,但我想知道这些请求是如何产生的。

我怎样才能找到这个?

0 投票
3 回答
6795 浏览

node.js - 在 NodeJs 中使用 AWS KMS 解密文本

我正在尝试使用 aws-sdk 和 NodeJs 解密一些使用 AWS KMS 加密的文本。我今天开始玩 NodeJs,所以我是一个新手。我已经用 Java 解决了这个问题,但我正在尝试将现有的 Alexa 技能从 Java 迁移到 NodeJs。

解密的代码是:

当我使用正确的 CiphertextBlob 运行此代码时,我收到此错误:

我不明白为什么我会收到 ifCiphertextBlob在 params 变量中。

有谁知道?提前致谢!

编辑 01/07

测试编码功能:第一个功能:

随日志提供的解密功能:

输出:

2019-07-01T19:01:12.814Z 38b45272-809d-4c84-b155-928bee61a4f8 INFO 从第 3 个 API 检索到期日期 2019-07-01T19:01:12.814Z 38b45272-809d-4c84-b155-928BEENPUT1:4ffunc6 AYADeHK9xoVE19u/3vBTiug3LuYAewACABVhd3MtY3J5cHRvLXB1YmxpYy1rZXkAREF4UW0rcW5PSElnY1ZnZ2l1bHQ2bzc3ZnFLZWZMM2J6YWJEdnFCNVNGNzEyZGVQZ1dXTDB3RkxsdDJ2dFlRaEY4UT09AA10dHBDYXJkTnVtYmVyAAt0aXRsZU51bWJlcgABAAdhd3Mta21zAEthcm46YXdzOmttczpldS13ZXN0LTE6MjQwMTE3MzU1MTg4OmtleS81YTRkNmFmZS03MzkxLTRkMDQtYmUwYi0zZDJlMWRhZTRkMmIAuAECAQB4sE8Iv75TZ0A9b/ila9Yi/3vTSja3wM7mN/B0ThqiHZEBxYsoWpX7jCqHMoeoYOkVtAAAAH4wfAYJKoZIhvcNAQcGoG8wbQIBADBoBgkqhkiG9w0BBwEwHgYJYIZIAWUDBAEuMBEEDNnGIwghz+b42E07KAIBEIA76sV3Gmp5ib99S9H4MnY0d1l............ 2019-07-01T19:01:12.925Z 38b45272-809d-4c84-b155-928bee61a4f8 INFO Error handled: handlerInput.responseBuilder.说话(...).shouldEndSession 不是函数 2019-07-01T19:01:13.018Z 38b45272-809d-4c84-b155-928bee61a4f8 错误未处理的承诺拒绝 {"errorType":"Runtime.UnhandledPromiseRejection","errorMessage":"InvalidCiphertextException: null" ,"堆栈":["Runtime.UnhandledPromiseRejection: InvalidCiphertextException: null","...

0 投票
2 回答
5833 浏览

amazon-web-services - AWS 中 kms:GenerateDataKey 的用途是什么?

我正在 AWS Lambda 上编写一个无服务器函数。

在某些情况下,我需要使用kms:GenerateDataKey*权限。

这究竟是什么目的。我检查了 AWS 文档,但它太神秘了。有人可以举一个实际的例子来说明它的用途吗?

0 投票
1 回答
401 浏览

amazon-ec2 - AWS CMK vs Data Key 澄清问题

我是 AWS 的新手,我希望有人可以为我澄清一些关于加密的事情。

我正在阅读有关 Amazon EBS 加密的 AWS 文档,在文档中,在“ EBS 加密的工作原理”部分下,我注意到其中一个步骤是“ Amazon EBS 向 AWS KMS 发送 GenerateDataKeyWithoutPlaintext 请求,指定用于加密的 CMK音量

CMK 不应该加密然后用于加密卷的数据密钥吗?这是因为 CMK 无法加密大小超过 4KB 的数据。

我理解的方式是,CMK(位于 KMS 中)将加密没有 CMK 大小限制的数据密钥,然后数据密钥将加密 EC2 实例的卷并坐在同一个加密卷,因为数据密钥本身也是加密的。

我没有正确理解这一步吗?

文档链接:https ://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html?icmpid=docs_ec2_console

0 投票
1 回答
219 浏览

amazon-web-services - S3 和加密的 SQS 集成问题

我为 S3 存储桶设置了 SQS 事件。当在 S3 中上传名为 xyz.txt 的文件时,将调用 SQS 事件,然后此 SQS 调用 lambda。

此工作流程运行良好。

现在我想为此加密我的 SQS 队列,我正在使用现有的 CMK“services-cmk”之一。队列加密后,S3 无法调用 SQS。当我将消息直接放入加密的 SQS 时,它的工作和 lambda 也会被触发。

我检查了 services-cmk 的策略,它允许 S3。我无法找出我在这里缺少的东西?

0 投票
2 回答
1304 浏览

java - 使用 AWS KMS 返回的数字签名签署 PdfDocument

我正在尝试使用通过使用 AWS KMS 对我的 PdfDocument 的 SHA256 摘要进行签名而获得的签名,以在 PDF 本身上应用签名。我什至不确定我是否朝着正确的方向前进。

一切运行正常,但生成的文件的签名会引发错误:

如果这很重要,我可以从 AWS 检索公钥,但私钥保留在他们身边。我在网上看到的大多数文档都预设了您对私钥的访问权限。此外,由于 AWS 处理签名,我不确定如何或从何处获取证书链。我发现的所有文档也都需要该证书链。

代码

首先,我创建了一个空的签名字段,因为大多数文档都指示您这样做。我认为可能存在问题,PdfName.Adbe_pkcs7_detached但如果这是错误的,我不知道还有什么可以代替它。

然后我尝试签署文件:

作为参考,kmsBackedSignatureContainer 如下。 从其文档中定义的fileSigner.signAWS KMS a 返回:byte[]

此值是由 ANS X9.62–2005 和 RFC 3279 第 2.2.3 节定义的 DER 编码对象。

0 投票
1 回答
260 浏览

amazon-web-services - 秘密管理器 - 在 AWS 控制台中隐藏秘密

我正在从 AWS 控制台在 AWS 密钥管理器中创建一个新密钥,我使用默认加密密钥对其进行加密。当我从控制台检索秘密时,我将其视为纯文本。可以将秘密加密(不将其视为纯文本)并保存在 AWS 控制台中吗