如何使用来自不同账户的 KMS CMK 通过 AWS Secret Manager 启用静态加密?
问问题
1348 次
1 回答
2
AWS Secret manager无法使用 AWS 管理控制台使用跨账户密钥加密,您必须使用 AWS CLI
如果您想创建密钥并将其共享给另一个帐户
首先创建具有正确访问共享帐户的密钥策略的 KMS CMK 密钥。有很多关于这个的教程。
在这里,我们授予对 AccountA 根目录的密钥访问权限。此外,我们还限制了密钥用于自动缩放和 secretsmanager。
{
"Sid": "Allow use of the key for SSM only",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::AccountA:root"
},
"Action": [
"kms:Encrypt",
"kms:Decrypt",
"kms:ReEncrypt*",
"kms:GenerateDataKey*"
],
"Resource": "*",
"Condition": {
"StringLike": {
"kms:ViaService": [
"secretsmanager.*.amazonaws.com",
"autoscaling.*.amazonaws.com"
]
}
}
},
{
"Sid": "Allow reading of key metadata",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::AccountA:root"
},
"Action": "kms:DescribeKey",
"Resource": "*"
},
{
"Sid": "Allow attachment of persistent resources",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::AccountA:root"
},
"Action": [
"kms:CreateGrant",
"kms:ListGrants",
"kms:RevokeGrant"
],
"Resource": "*"
}
现在 Account A root 必须授予用户或角色访问权限才能使用密钥。授予访问权限的典型 IAM 策略如下所示。此策略应与账户 A 中的角色或用户相关联。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor2",
"Effect": "Allow",
"Action": [
"kms:Encrypt",
"kms:Decrypt",
"kms:ReEncrypt*",
"kms:GenerateDataKey*"
],
"Resource": [
"arn:aws:kms:<KEY>"
]
}
]
}
现在您已经准备好使用 KMS ket,因此请继续执行以下步骤。
如果您已经拥有来自其他账户的 KMS CMK
首先检查密钥是否可以访问
aws kms describe-key --key-id arn:aws:kms:<KEY_ID>
如果您没有得到响应,则意味着您无权访问密钥,请检查密钥策略并确保正确授予所有访问权限。
如果您有权访问密钥,则使用 AWS CLI 来使用密钥。
重新分配给现有密钥
aws secretsmanager update-secret --secret-id <secret id> --kms-key-id <KMS key id>
或者用密钥创建一个新的秘密
aws secretsmanager create-secret --name <NameOfTheSecret> \
--description "Test Description" \
--kms-key-id <KMS Key Id>
于 2019-06-05T06:05:57.163 回答