背景
自分で動作確認するため、EC2のEBSを暗号化はAWSマネージド型キーで暗号化しています。(暗号化キーのエイリアス:aws/ebs)
最近、上記のEC2のAMIを別のアカウントにコピーしたくて、調べてみました。結論は直接にコピーできません。理由は下記の「制限」参照してください。
制限
共有できるAMIは以下の2種類です。
1、暗号化されていないAMI
2、CMK(カスタマー管理型のキー)で暗号化されたAMI
AWS公式より抜粋:
AMI を一般公開せず、特定の AWS アカウントとだけ共有することもできます。これに必要なものは AWS アカウント ID のみです。共有化できるのは、暗号化されていないボリュームと、カスタマーマネージド CMK で暗号化されたボリュームを持つ AMI のみです。
対処方法
今回、AWSマネージド型キーで暗号化しているAMIをどうやって特定の AWSアカウントと共有できるか、結論から申し上げますと、AMIをCMKでコピーすると共有できます。(理由は制限の2を参照)
暗号化から暗号化のコピーはできるかを下記の表を参照
暗号化とコピー(AWS公式より抜粋)
シナリオ | 説明 | サポート対象 |
---|---|---|
1 | 非暗号化から非暗号化 | はい |
2 | 暗号化から暗号化 | はい |
3 | 非暗号化から暗号化 | はい |
4 | 暗号化から非暗号化 | いいえ |
手順
共有元アカウントの手順
CMK(カスタマー管理型のキー)の作成
Key Management Service (KMS)コンソール上で作成する。手順は、下記のリンクの「対称 CMKs (コンソール) の作成」を参照
16.(オプション) 他の AWS アカウントが暗号化オペレーションにこの CMK を使用するようにできます。これを行うには、ページの下部にある [Other AWS accounts (他のアカウント)] セクションで、[Add another account (別のアカウントAWSを追加)] を選択し、外部AWSアカウントのアカウント ID 番号を入力します。複数の外部アカウントを追加するには、この手順を繰り返します。
https://docs.aws.amazon.com/ja_jp/kms/latest/developerguide/create-keys.html#create-symmetric-cmk
CMKのエイリアス:CMK-EBS-COPY
AMIをCMKでコピーする
EC2のコンソールAMI上で対象AMIを選択し、「アクション⇒AMIのコピー」をクリックする
AMIコピー画面で下記のように入力し、「AMIのコピー」をクリックする
「完了」をクリックする
コピーされていることを確認する
CMKでコピーしたAMIを共有する
EC2のコンソールAMI上で対象AMIを選択し、「アクセス許可⇒編集」をクリックする
下記のように入力する
AWSアカウント番号が追加されていることを確認し、「保存」
をクリックする。
AWSアカウント番号が追加されていることを確認する
共有先アカウントの手順
CMK(カスタマー管理型のキー)の作成(必要の場合、CMKを作成します。ここでは作成せずに進みます。)
AMI画面を開き、「プライベートイメージ」を選択し、コピー元の共有AMIを確認する
※表示されない場合、右上のリフレッシュボタンをクリックする
AMIコピー画面で下記のように入力し、「AMIのコピー」をクリックする
「完了」をクリックする
確認1:共有元AMIの所有者確認
確認2:共有先AMIの所有者確認
まとめ
AMIをクロスアカウントでコピーする手順を紹介しました。コピー先の暗号化はディフォルトのKMS(暗号化キーのエイリアス:aws/ebs)でもいいし、CMKを作成して暗号化しても問題ないです。
暗号化先でCMKを作成して暗号化したい場合、下記の手順を参考にやってみてください。
「共有元アカウントの手順⇒CMK(カスタマー管理型のキー)の作成」
AMIを他のアカウントにコピーする可能性がある場合、予めコピー元でCMKを作成し、EBSをCMKで暗号化することで、コピー元のAMIをコピーする手順は不要になります。
以上となり、お役に立てれば幸いです。