Auto Scaling グループで、別のアカウントから共有された暗号化 AMI を使用する方法を教えてください。

所要時間2分
0

AWS Auto Scaling グループで、別の AWS アカウントから共有されている暗号化 Amazon マシンイメージ (AMI) を使用したいです。スナップショットは、AWS Key Management Service (AWS KMS) のカスタマーマネージドキーで暗号化されています。

簡単な説明

AWS KMS キーの AWS KMS キーポリシーでは、アカウントの AWS Identity and Access Management (IAM) ID が AMI を使用してインスタンスを起動することを許可する必要があります。Auto Scaling グループはインスタンスを起動するために、サービスリンクロール (SLR) から付与されたアクセス許可を使用します。

Auto Scaling グループで暗号化された AMI を使用するには、KMS キーポリシーが次のロールへのアクセスを許可している必要があります。

  • アカウントの Auto Scaling グループ に関連付けられた SLR。
  • SLR によるキーの使用することを許可する付与を作成する、アカウント内の IAM ID。

解決方法

Auto Scaling グループで暗号化された AMI を使用するには、次の手順を実行します。

  1. AMI を暗号化する KMS キーに関連付けられている KMS キーポリシーを変更します。
  2. SLR がキーを使用するための付与を作成します。

KMS キーポリシーを変更する

次の手順を実行します。

  1. 暗号化された AMI を共有しているアカウントから、AWS KMS コンソールを開き、KMS キーを選択します。

  2. [キーポリシー] セクションで、アカウントの Auto Scaling グループで使用する SLR に次のアクセス許可を追加します。

    kms:Encrypt
    kms:Decrypt
    kms:ReEncrypt*
    kms:GenerateDataKey*
    kms:DescribeKey
  3. アカウントで付与を作成するには、キーポリシーに kms:CreateGrantkms:ListGrantskms:RevokeGrant アクセス許可を追加する必要があります。ポリシーには、「キーの使用を許可する」および「永続リソースのアタッチを許可する」ステートメントも含める必要があります。

    出力の例を次に示します。SOURCE_ACCOUNT は暗号化 AMIを共有するアカウントの IDに、DESTINATION_ACCOUNT はお使いのアカウント ID に置き換えてください。

    {
        "Version": "2012-10-17",
        "Id": "key-consolepolicy-3",
        "Statement": [
            {
                "Sid": "Enable IAM User Permissions",
                "Effect": "Allow",
                "Principal": {
                    "AWS": "arn:aws:iam::SOURCE_ACCOUNT:root"
                },
                "Action": "kms:*",
                "Resource": "*"
            },
            {
                "Sid": "Allow access for Key Administrators",
                "Effect": "Allow",
                "Principal": {
                    "AWS": "arn:aws:iam::SOURCE_ACCOUNT:user/AdminUser"
                },
                "Action": [
                    "kms:Create*",
                    "kms:Describe*",
                    "kms:Enable*",
                    "kms:List*",
                    "kms:Put*",
                    "kms:Update*",
                    "kms:Revoke*",
                    "kms:Disable*",
                    "kms:Get*",
                    "kms:Delete*",
                    "kms:TagResource",
                    "kms:UntagResource",
                    "kms:ScheduleKeyDeletion",
                    "kms:CancelKeyDeletion"
                ],
                "Resource": "*"
            },
            {
                "Sid": "Allow use of the key",
                "Effect": "Allow",
                "Principal": {
                    "AWS": [
                        "arn:aws:iam::DESTINATION_ACCOUNT:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling",
                        "arn:aws:iam::SOURCE_ACCOUNT:user/AdminUser"
                    ]
                },
                "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::DESTINATION_ACCOUNT:user/DESTINATION_USER",
                        "arn:aws:iam::SOURCE_ACCOUNT:user/AdminUser"
                    ]
                },
                "Action": [
                    "kms:CreateGrant",
                    "kms:ListGrants",
                    "kms:RevokeGrant"
                ],
                "Resource": "*"
            }
        ]
    }
    

    注: AWS マネジメントコンソールを使用して KMS キーを作成し、外部アカウント ID をユーザーとして含めると、キーポリシーが kms:GrantIsForAWSResource を自動的に適用します。kms:GrantisForAWSResource 条件キーでは、ユーザーが SLR に付与を作成することはできません。キーポリシーの「永続リソースのアタッチを許可」ステートメントにこの条件キーが含まれていないことを確認してください。

SLR への付与を作成する

**注:**AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI エラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。

このアクセス許可により、アカウント内の SLR がソースアカウントの KMS キーを使用して暗号化アクションを実行できるようになります。

お使いのアカウントで、キーポリシーで指定している DESTINATION_USER から AWS CLI コマンド create-grant を実行します。

aws kms create-grant --key-id [X] \
--grantee-principal [Y] \
--operations Decrypt Encrypt GenerateDataKey GenerateDataKeyWithoutPlaintext \
ReEncryptFrom ReEncryptTo CreateGrant DescribeKey

注: [X] はソースアカウントの KMS キー ARN に、[Y] はお使いのアカウントの SLR ARN に置き換えます。

関連情報

暗号化されたボリュームで使用するのに必要な AWS KMS キーポリシー

AWS公式
AWS公式更新しました 1年前
コメントはありません

関連するコンテンツ