问题标签 [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.
java - 使用 KMS 的弹性 beanstalk 环境变量加密
我正在开发一个托管在 AWS 弹性豆茎上的应用程序。我将一些密钥和密码作为环境变量存储在弹性 beantalk 中。这些变量使用@data 和@value 注释存储到java 变量中。我想使用 KMS 加密这些环境变量并在将其存储在变量中之前对其进行解密。
我应该如何实现这一目标?
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 的数据
- 修改账户 A 中的密钥策略以授予账户 B 的根访问权限
- 在账户 B 中创建了一个 IAM 策略,以拥有能够访问账户 A 中的 KMS 密钥的适当权限。
从代码的角度来看,我使用与第二步相同的代码来创建 AWSKMS 实例,尽管使用的是在第 3 步中创建的 IAM 策略。我收到以下错误:
为什么要在账户 B 中查找密钥?是因为我还需要 Assume Role 才能访问 KMS 密钥吗?但是文档没有提到这一点。此外,我还没有在账户 B 中创建任何 IAM 策略来承担 KMS 的角色。
任何指针表示赞赏。
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"
]
}
]
}
为了让这个工作,我缺少什么?
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","...
amazon-web-services - AWS 中 kms:GenerateDataKey 的用途是什么?
我正在 AWS Lambda 上编写一个无服务器函数。
在某些情况下,我需要使用kms:GenerateDataKey*
权限。
这究竟是什么目的。我检查了 AWS 文档,但它太神秘了。有人可以举一个实际的例子来说明它的用途吗?
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
amazon-web-services - S3 和加密的 SQS 集成问题
我为 S3 存储桶设置了 SQS 事件。当在 S3 中上传名为 xyz.txt 的文件时,将调用 SQS 事件,然后此 SQS 调用 lambda。
此工作流程运行良好。
现在我想为此加密我的 SQS 队列,我正在使用现有的 CMK“services-cmk”之一。队列加密后,S3 无法调用 SQS。当我将消息直接放入加密的 SQS 时,它的工作和 lambda 也会被触发。
我检查了 services-cmk 的策略,它允许 S3。我无法找出我在这里缺少的东西?
java - 使用 AWS KMS 返回的数字签名签署 PdfDocument
我正在尝试使用通过使用 AWS KMS 对我的 PdfDocument 的 SHA256 摘要进行签名而获得的签名,以在 PDF 本身上应用签名。我什至不确定我是否朝着正确的方向前进。
一切运行正常,但生成的文件的签名会引发错误:
如果这很重要,我可以从 AWS 检索公钥,但私钥保留在他们身边。我在网上看到的大多数文档都预设了您对私钥的访问权限。此外,由于 AWS 处理签名,我不确定如何或从何处获取证书链。我发现的所有文档也都需要该证书链。
代码
首先,我创建了一个空的签名字段,因为大多数文档都指示您这样做。我认为可能存在问题,PdfName.Adbe_pkcs7_detached
但如果这是错误的,我不知道还有什么可以代替它。
然后我尝试签署文件:
作为参考,kmsBackedSignatureContainer 如下。 从其文档中定义的fileSigner.sign
AWS KMS a 返回:byte[]
此值是由 ANS X9.62–2005 和 RFC 3279 第 2.2.3 节定义的 DER 编码对象。
amazon-web-services - 秘密管理器 - 在 AWS 控制台中隐藏秘密
我正在从 AWS 控制台在 AWS 密钥管理器中创建一个新密钥,我使用默认加密密钥对其进行加密。当我从控制台检索秘密时,我将其视为纯文本。可以将秘密加密(不将其视为纯文本)并保存在 AWS 控制台中吗