5.9K Views
September 24, 22
スライド概要
暗号化AMIを他アカウ ントに共有する CMK 作成⽇ 技術タグ 最終更新 参考 @2022/09/23 AWS KMS SCS @September 24, 2022 8:49 PM Property Twitter https://twitter.com/pero_nw 1.概要 暗号化されたAMIを他のAWSアカウントと共有したい場合、暗号化キ ーも⼀緒に共有しなければいけません。 今回はクロスアカウント共有をどのようなステップで実現するのか! 実際にAWSコンソールを交えて確認した結果を共有します。 2.前置き とは、EC2インスタンスを構成するEBSボリューム(ストレー ジ)のスナップショットと管理情報を含む起動設定を⼀つにまとめ AMI CMK 暗号化AMIを他アカウントに共有する 1
たイメージデータのようなものです。 クロスアカウント共有をする場合、暗号化⼿段としてAWSサービ スのKMSによるカスタマーCMKによる暗号化である必要がありま す。 ※AWS管理のCMKでは共有はできません。 3.全体の構成 カスタマーCMKを作成し、B accountのユーザがアクセス可能とな るkey policyを作成する。 2. 既に起動しているEC2から先ほど作成したカスタマーCMKを使い 暗号化AMIを作成する。 3. 暗号化AMIをB accountに共有する。 4. B accountのユーザがA accountで作成したカスタマーCMKにアク セスする。 5. B accountにて、A accountで共有されたAMIを持つEC2インスタン スを起動する。 1. 5.設定 CMK 暗号化AMIを他アカウントに共有する 2
5.1: KMS作成 コンソールに移⾏し、左ペインからカスタマー管理型のキー を選択し、下図のように設定する。 次へをクリックし、エイリアス名を適当な名前 ( Cross-AMI )に設 定する KMS CMK 暗号化AMIを他アカウントに共有する 3
管理者は設定不要で次へをクリックし、keyの使⽤アクセス許 可でB accountのID(0123456789-1B)を⼊⼒する。 key 確認画⾯が表⽰されるので、完了をクリックする。 ※このままでも設定は問題ないが、セキュリティベストプラクティス による最⼩権限の付与と特定のユーザのみKMSを利⽤できるよう、キ ーポリシーを修正する。 作成したKMSキー(Cross-AMI)をクリックし、キーポリシーを以 下のように★の箇所を修正する { "Id": "key-consolepolicy-3", "Version": "2012-10-17", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::A account ID:root" }, "Action": "kms:*", "Resource": "*" }, { "Sid": "Allow use of the key", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::B account ID:user/B account user " ★ 名 CMK 暗号化AMIを他アカウントに共有する 4
}, "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::B account:user/B account user " ★ }, "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": "*", "Condition": { "Bool": { "kms:GrantIsForAWSResource": "true" } } 名 } ] } 補⾜ : 暗号化されたスナップショットにアクセスしている共有のカスタ マーマネージド型キーのユーザーには、そのキーに対して、次の操作 を実⾏するためのアクセス許可が与えられている必要がある。 kms:DescribeKey kms:CreateGrant kms:GenerateDataKey kms:ReEncrypt kms:Decrypt 5.2 : SnapShot CMK 暗号化AMIを他アカウントに共有する 5
起動しているEC2からAMIを作成する。 左ペインのAMIを選択し、アクションの『AMIをコピー』から先ほ ど作成したAMI(cross-test)を暗号化する。KMSで作成した Cross-AMIを選択する。 CMK 暗号化AMIを他アカウントに共有する 6
作成したAMIの詳細から、ブロックデバイス情報に encrypted が ついている事を確認する。 /dev/xvda=8:true:gp2:encrypted 5.3 共有 CMK 暗号化AMIを他アカウントに共有する 7
暗号化されたAMIを選択し、『許可』タブより共有するアカウント を指定する。 共有アカウントの『アカウントIDを追加』でB accountを⼊⼒す る。 ※『ボリュームを作成の許可』にチェックボックスを⼊れると、共有 されたAMIをB accountでコピー・複製することができる。 5.4 keyアクセス 5.5 EC2起動 CMK 暗号化AMIを他アカウントに共有する 8
に移動し、A accountのKey policyで許可したユーザでロ グインする。 ※東京リージョンであることを確認する。 EC2サービスより、左ペインのAMIを選択し、プライベートイメー ジを選択すると共有されたAMIが表⽰される。 B account を選択し、EC2を起動できるか確認する。 補⾜ : 以下のようにB accountで再暗号化が可能。(デフォルト)aws/ebs AMI 無事、EC2が起動でできていれば成功です。 CMK 暗号化AMIを他アカウントに共有する 9
⽇々、Twitterにて検証を通してAWSなどネットワーク全般の情報を発 信してますので、フォロー頂けたら幸いです! JavaScript is not available. https://twitter.com/pero_nw CMK 暗号化AMIを他アカウントに共有する 10