背景

自分で動作確認するため、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をコピーする手順は不要になります。

以上となり、お役に立てれば幸いです。

Last modified: 2021-04-27

Author