外部帐户用户访问KMS密钥

时间:2019-03-29 06:25:00

标签: amazon-web-services aws-kms

当前,我们的应用程序(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 

1 个答案:

答案 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": "*"
                  }

因此,请注意这一点,如果您想限制对外部帐户的访问,请进行更改(最低特权原则)

    除非外部帐户的帐户管理员创建并附加了指定KMS密钥ARN和允许的操作的资源级策略,否则外部帐户中的
  • IAM用户和角色将无法使用该密钥。密钥的ARN只能在外部帐户下与IAM用户关联的策略中引用。如果外部帐户012345678901中的IAM用户或角色需要能够使用您的自定义密钥,则外部帐户的IAM管理员应将以下IAM策略附加到这些用户或角色:
{
    "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
                }
          }
        }
    ]
}