如何使用来自其他帐户的KMS CMK启用AWS Secret Manager的静态加密?
答案 0 :(得分:1)
无法使用AWS管理控制台使用交叉帐户密钥对 AWS Secret Manager 进行加密,相反,您必须使用AWS CLI
如果要创建密钥并将其共享给另一个帐户
首先使用密钥策略创建KMS CMK密钥,该策略将提供对共享帐户的正确访问。有很多关于此的教程。
在此,我们授予对AccountA根目录的密钥访问权限。此外,我们还限制了自动扩展和密钥管理器使用密钥。
{
"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": "*"
}
现在,帐户根必须授予用户或角色访问权限以使用密钥。授予访问权限的典型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>