amazon-web-services - AWS KMS 解密:如何配置 KMS 密钥?
问题描述
我对如何使用 AWS KMS 客户端解密密文 blob 感到有些困惑。这是 AWS Docs 中的一个示例:
// Encrypt a data key
//
// Replace the following fictitious CMK ARN with a valid CMK ID or ARN
String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-
56ef-1234567890ab";
ByteBuffer plaintext = ByteBuffer.wrap(new byte[]{1,2,3,4,5,6,7,8,9,0});
EncryptRequest req = new
EncryptRequest().withKeyId(keyId).withPlaintext(plaintext);
ByteBuffer ciphertext = kmsClient.encrypt(req).getCiphertextBlob();
// Decrypt a data key
//
ByteBuffer ciphertextBlob = Place your ciphertext here;
DecryptRequest req = new DecryptRequest().withCiphertextBlob(ciphertextBlob);
ByteBuffer plainText = kmsClient.decrypt(req).getPlaintext();
解密方法中没有提供 KMS 密钥。这是否意味着 KMS 密钥以某种方式在密文 blob 中加密?如果是这样...
- 如何授予解密加密密文 blob 的权限?
- 如果我想解密来自 AWS 服务的值,是否需要创建一个 IAM 角色来执行此操作并配置 KMS 密钥以允许该角色解密?
解决方案
您的示例来自加密和解密数据密钥:
这些操作旨在加密和解密数据密钥。他们在加密操作中使用 AWS KMS客户主密钥(CMK),并且不能接受超过 4 KB(4096 字节)的数据。尽管您可能会使用它们来加密少量数据,例如密码或 RSA 密钥,但它们并非旨在加密应用程序数据。
CMK:
是在 AWS KMS 中创建的,并且永远不会让 AWS KMS 处于未加密状态。要使用或管理您的 CMK,您可以通过 AWS KMS 访问它们。
这些操作都使用您的 AWS 设置中配置的主密钥,而不是动态提供的密钥。使用 AWS 管理控制台来管理这些密钥。
使用encrypt 方法时,密钥 ID 存储在响应中:
{
"CiphertextBlob": blob,
"KeyId": "string"
}
它将在解密期间使用。
推荐阅读
- swift - 在 xcode 中使用 swift 添加按钮标题
- javascript - 即使使用错误的 if 语句,Onscroll 也会保持触发功能
- flutter - 如何在 Flutter 中为圆形或矩形的外观设置动画?
- react-native - 如何将 API 数据获取到 Text Element React Native
- arrays - 将一个结构中的 id 代码与另一个结构中的字符串值链接 - SwiftUI
- c++ - 当输入预期为整数时如何检测浮点数?
- python - 在linux上禁用python中的键盘
- java - JPA 事务将插入直接存储在数据库中
- php - 如何将值数组更改为数组
- python - 如何使用 django 查询集和序列化程序对数据按照月份和年份进行排序