我刚刚使用AWS Key Management Service进行设置并调用该方法generateDataKey
.该方法正在工作并返回CiphertextBlob和Plaintext blob.
但是,blob的格式如下:
?g?'??w?i?<??a*\B4p 1IG
Run Code Online (Sandbox Code Playgroud)
我正在使用API,根据文档,它没有编码.我试图理解明文是否能以某种方式在PHP中"解码",这样我就可以存储它/使用它而不需要看起来奇怪的ASCII字符.我期待的是一长串字符而不是上面的特殊字符.我觉得我错过了一些简单的事情.
谢谢!
由于多种原因,我无法使用AWS开发工具包,而必须对API进行其余调用。我已经弄清楚了身份验证,但是需要了解要调用的资源。大多数AWS文档都指向其SDK。我该如何计算“ AWS密钥管理(KMS)”的“待命通知”?
DynamoDB:我们可以一起使用加密和跨区域复制吗?
我们正在为新应用程序评估DynamoDB.我们的要求是:
使用AWS提供的Java库可以单独满足我们的要求.解决方案是:
但是,我们不确定这些解决方案是否可以协同工作.我们担心我们将无法解密跨区域复制记录.客户端加密解决方案建议在根目录下使用KMS管理的密钥建立密钥层次结构.KMS是区域特定的,因此如果我们将记录复制到另一个区域,我们将无法解密记录.加密密钥在其他区域无法访问.
问题是:
encryption replication amazon-web-services amazon-dynamodb aws-kms
我试图将其Amazon S3
用作具有加密功能的文件系统。
我可以使用KMS
加密密钥(服务器端加密)成功实现在AWS S3服务器上上传文件。请在下面找到工作代码:
对于加密:
private static final String AWS_KMS_KEY = "---KMS Key---"
private static final String BUCKET_NAME = "---bucket name---"
private static final String keyName = "---display key name---"
private static final String filePath = "---File Path---"
private static final String ACCESS_KEY_ID = "---aws accesskey---"
private static final String SECRET_ACCESS_KEY = "---aws secret key---"
AWSCredentials awsCredentials = new BasicAWSCredentials(ACCESS_KEY_ID, SECRET_ACCESS_KEY);
AmazonS3 s3Client = AmazonS3ClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(awsCredentials))
.withRegion(Regions.US_WEST_2).withForceGlobalBucketAccessEnabled(true).build();
FileInputStream stream = new FileInputStream(filePath);
ObjectMetadata objectMetadata = new …
Run Code Online (Sandbox Code Playgroud) 我正在尝试设置跨帐户访问权限,以允许外部帐户使用我的KMS密钥来解密S3存储桶中的数据。我拥有我认为是正确的赠款设置的密钥,策略,角色,但是我无法从外部帐户描述密钥。希望得到一些关于我做错事情的信息。
帐户111:具有策略许可权的密钥到外部帐户的根(999)
{
"Version": "2012-10-17",
"Id": "key-consolepolicy-3",
"Statement": [
{
"Sid": "Enable IAM User Permissions",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111:root"
},
"Action": "kms:*",
"Resource": "*"
},
{
"Sid": "Allow use of the key",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::999:root"
]
},
"Action": [
"kms:Encrypt",
"kms:Decrypt",
"kms:ReEncrypt*",
"kms:GenerateDataKey*",
"kms:DescribeKey"
],
"Resource": "*"
},
{
"Sid": "Allow attachment of persistent resources",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::999:root"
]
},
"Action": [
"kms:CreateGrant",
"kms:ListGrants",
"kms:RevokeGrant"
],
"Resource": "*",
"Condition": { …
Run Code Online (Sandbox Code Playgroud) 我在无服务器框架字上使用serverless-kms-secrets来设置一些我想使用Ruby使用的ENV变量。
我可以确认该插件运行正常,它使用加密变量生成了文件,并且可以在我的环境中在AWS lambda上看到该加密变量。问题是我无法在Ruby中解密它。在插件中(正确)解密它的代码在这里,我知道它获取保存在文件中的字符串并使用Base64对其进行编码,因此没什么大不了的。在Ruby中:
token = "blablabla"
client = Aws::KMS::Client.new(region: 'us-east-1')
blob = Base64.encode64(token)
client.decrypt({ciphertext_blob: blob})
....
Aws::KMS::Errors::InvalidCiphertextException ()
Run Code Online (Sandbox Code Playgroud)
客户端应该自动获取我的凭据,但是我不确定我是否了解keyArn的使用方式,尽管看起来并不相关。
有谁知道如何解决这个问题?
我已经根据用户指南在 Amazon 新的 AWS Transfer for SFTP 托管 SFTP 服务下设置了一个服务器,但我一直无法让它与 KMS 加密密钥一起使用。我的 SFTP 客户端可以很好地进行身份验证,但是当我尝试put
文件时,文件上传但随后无法保存并出现Couldn't close file: Failure
错误。
我在关键用户列表中有与我的 SFTP 用户关联的角色,但我怀疑“逐步降低”策略(用于防止 SFTP 用户查看关联 S3 存储桶中的其他文件夹)中的某些内容阻止了密钥正在使用,因为我尝试删除降压策略,然后一切正常(但是这将整个存储桶暴露给每个用户,这显然是不可接受的)。
我需要在降级策略(或密钥策略)中添加什么想法以允许以这种方式使用 KMS 密钥?
我正在为 S3 设置 Kinesis Firehose 传输流,我注意到您可以设置自定义 KMS 密钥以用于加密 S3 上的文件。
但是,如果 S3 存储桶已启用 KMS 加密,则无论如何都会对文件进行加密。不同之处当然是将使用默认的 AWS 管理器 S3 KMS 密钥,而不是提供给 Firehose 的客户管理的自定义 KMS 密钥。
通常有什么理由使用自定义 KMS 密钥来加密 S3 上的 Firehose 数据,而不是依赖默认的 S3 KMS 密钥?如果您也是 S3 存储桶的所有者并控制其设置,或者在您无法控制目标的设置时也是启用加密的主要用途,那么这样做是否有任何意义桶?
还是 Firehose 关联的 KMS 密钥也用于加密传输中的数据,而不是 S3 提供的用于加密静态数据的 KMS 密钥?
我从 github 收到了一个 pem 文件,我正在为其在 AWS 上编写应用程序。Github 要求使用此密钥对 JWT 进行签名,以便对服务进行身份验证。由于应用程序在 AWS 上运行,因此存储和使用私有密钥的最安全方式是使用 AWS 密钥管理服务。通过这种方式,公钥永远不会公开,API 可以进行签名。
亚马逊提供了如何导入密钥的指南 ( https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html ) 但是它们生成的源密钥是二进制格式而不是 PEM 文件.
有没有办法加密 PEM 文件以上传到 KMS?
谢谢,
斯图尔特
我正在管理跨 AWS 账户的 CMK 的 KMS 权限,以证明一个账户可以访问另一个账户的 KMS 密钥我使用的是授权而不是策略,因为 AWS 建议它们更临时,这符合我对所有意图的需求和目的。
我知道每个资源有一个最大的授权限制,所以在我授予权限并且不再需要它们之后,我应该清理授权。
根据 AWS 的说法,有两种方法可以解决此问题Retire a grant
或Revoke a grant
. 每个都有略微不同的描述:
Retire: To retire a grant for an AWS KMS customer master key, use the RetireGrant operation.
You should retire a grant to clean up after you are done using it.
Revoke: To revoke a grant to an AWS KMS customer master key, use the RevokeGrant operation.
You can revoke a grant to explicitly deny operations that …
Run Code Online (Sandbox Code Playgroud) aws-kms ×10
amazon-s3 ×3
encryption ×2
amazon-iam ×1
ios ×1
java ×1
node.js ×1
php ×1
replication ×1
rsa ×1
ruby ×1
sftp ×1