当前,我们的应用程序(mySecondApp)正在使用一些aws功能,其帐户为1223456
我们要求使用帐户556677从其他应用程序(myFirstApp)访问加密密钥。
在myFristApp中,有一个在加密密钥中配置的myFirstappKey。我已经设置了外部帐户1223456.如何配置以用户mySecondApp-developer访问myFirstApp。请帮忙。
1. Login Account is: 556677 (myFirstApp)
IAM -> Encryption keys -> myFirstAppKey
External Accounts
arn:aws:iam:: 1223456:root
===
2. Login Account is: 1223456
arn:aws:iam::1223456:user/mySecondApp-developer
答案 0 :(得分:0)
您可以在密钥创建过程中为密钥授予外部帐户(换句话说,不同的AWS帐户)使用权限。在KMS控制台的密钥创建工作流程的“定义密钥使用权限”部分中,单击“添加外部账户”,然后键入外部AWS账户的12位AWS账户ID。对您要添加的每个其他外部帐户重复此过程。
如果密钥已经存在,则只需转到KMS控制台,单击要为其启用跨帐户访问的自定义密钥别名。进入页面下半部分的密钥用法部分。
在此部分中,找到“外部帐户”子部分,然后单击“添加外部帐户”。输入您希望能够使用此密钥的账户的12位数字的AWS账户ID。对要添加的每个其他外部帐户重复此过程。完成后,单击“保存更改”。
使用CrossAccount密钥时要了解的好事:
对于外部帐户的管理员,密钥不会在AWS管理控制台中的任何位置显示
在授予对外部帐户的访问权限之后,这些外部帐户的root用户可以使用您的密钥执行以下操作:加密,解密,重新加密,GenerateDataKey和DescribeKey。您将拥有这种关键政策:
{
"Sid": "AllowUseOfTheKey",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::556677:user/User1","arn:aws:iam::1223456:root"
]
},
"Action": [
"kms:Encrypt",
"kms:Decrypt",
"kms:ReEncrypt*",
"kms:GenerateDataKey*",
"kms:DescribeKey"
],
"Resource": "*"
}
因此,请注意这一点,如果您想限制对外部帐户的访问,请进行更改(最低特权原则)
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowUseOfTheKey",
"Effect": "Allow",
"Action": [
"kms:Encrypt",
"kms:Decrypt",
"kms:ReEncrypt*",
"kms:GenerateDataKey*",
"kms:DescribeKey"
],
"Resource": [
"arn:aws:kms:us-east-1:1223456:key/1a345678-1234-1234-1234-12345678901c"
]
},
{
"Sid": "AllowAttachmentOfPersistentResources",
"Effect": "Allow",
"Action": [
"kms:CreateGrant",
"kms:ListGrants",
"kms:RevokeGrant"
],
"Resource": [
"arn:aws:kms:us-east-1:1223456:key/1a345678-1234-1234-1234-12345678901c"
],
"Condition": {
"Bool": {
"kms:GrantIsForAWSResource": true
}
}
}
]
}