Amazon Web Services ブログ
ECRレプリケーションを使用するECRリポジトリのKMS暗号化設定
はじめに
このブログ投稿では、イメージレプリケーションを使用する Amazon Elastic Container Registry (Amazon ECR) における AWS Key Management Service (AWS KMS) の設定方法を学ぶことができます。 リポジトリ設定は自動的にレプリケートされません。この記事に記載されている情報により、お客様の組織がセキュリティを最優先し、チームが使い慣れた AWS のツールやサービスを活用できるようになります。
コンプライアンスや規制上の懸念に敏感な環境のお客様は、可能な限り暗号化を有効にしたいと考えることがよくあります。企業は、転送中と保管中のデータを保護したいと考えており、コンテナイメージも例外ではありません。
AWS KMS と Amazon ECR のイメージレプリケーションにより、クラウド内で転送中のデータを保護しながら AWS リージョンまたは AWS アカウント間でイメージを転送でき、ビジネスの可用性を高めることができます。
アーキテクチャ
クロスリージョンレプリケーションの場合、ソリューションの図を以下に示します。
次の図は、クロスリージョンおよびクロスアカウントレプリケーションのソリューションを示しています。
ウォークスルー
読み終えるまでにかかる時間の目安 | 5 分 |
設定完了までにかかる時間の目安 | 10 分 |
コスト目安 | 1 か月あたり ~ 5 USD (2 つのリージョンにかかるコスト) AWS Calculator Estimate |
学習レベル | 中級 (200) |
使用する AWS サービス | Amazon Elastic Container Registry (ECR) と AWS Key Management Service (KMS) |
AWS KMS 暗号化による Amazon ECR クロスリージョンレプリケーション
以下は、AWS KMS 暗号化が有効になっている 2 つの異なるリージョンにある 2 つの Amazon ECR リポジトリ間でレプリケーションを作成する例です。ステップの順序は非常に重要です。手順を順不同で実行しないでください。
プライマリリージョンで AWS KMS キーを作成する
- プライマリリージョン(例:バージニア北部) で AWS KMS コンソールを開きます。
- キーを作成を選択します。
- 対称キータイプを選択します。
- キーの使用は暗号化と復号化を選択します。
- 次へを選択します。
- AWS KMS キーのエイリアスを入力します。 (例:“ECRKMSKey”)
- 次へを選択します。
- キー管理者フィールドで、IAM ユーザーまたはロールを選択します。
- 次へを選択します。
- キーユーザーフィールドで、IAM ユーザーまたはロールを選択します。
- IAM ユーザーまたはロールが選択されていることを確認してください。これは Amazon ECR がコンテナイメージを暗号化および復号化するために必要です。
- 次へを選択します。
- 完了を選択します。
プライマリリージョンで Amazon ECR リポジトリを作成する
- プライマリリージョン(例:バージニア北部) で Amazon ECR コンソールを開きます。
- 使用方法を選択します。
- 可視性設定としてプライベートを選択します。
- リポジトリ名 (例:myrepo) を入力します。
- 暗号化設定セクションで、次の操作を行います。
- 暗号化を有効にします。
- 暗号化設定をカスタマイズする (高度) を選択します。
- 上記の手順で作成したキーを選択します。
- リポジトリを作成を選択します。
この時点で、AWS KMS 暗号化を有効にして Amazon ECR リポジトリが作成されました。Amazon ECR レプリケーションを有効にする前に、セカンダリリージョンに Amazon ECR リポジトリを作成します。
セカンダリリージョンで AWS KMS キーを作成する
- セカンダリリージョン(例:オレゴン) で AWS KMS コンソールを開きます。
- キーを作成を選択します。
- 対称キータイプを選択します。
- キーの使用は暗号化と復号化を選択します。
- 次へを選択します。
- AWS KMS キーのエイリアスを入力します。 (例:“ECRKMSKey”)
- 次へを選択します。
- キー管理者フィールドで、IAM ユーザーまたはロールを選択します。
- 次へを選択します。
- キーユーザーフィールドで、IAM ユーザーまたはロールを選択します。
- IAM ユーザーまたはロールが選択されていることを確認してください。これは Amazon ECR がコンテナイメージを暗号化および復号化するために必要です。
- 次へを選択します。
- 完了を選択します。
セカンダリリージョンで Amazon ECR リポジトリを作成する
- セカンダリリージョン(例:オレゴン) で Amazon ECR コンソールを開きます。
- 使用方法を選択します。
- 可視性設定としてプライベートを選択します。
- リポジトリ名 (例:myrepo) を入力します。
- プライマリリージョンと同じリポジトリ名を指定することが非常に重要です。プライマリリージョンとセカンダリリージョンのリポジトリ名が一致しない場合、レプリケーションは失敗します。
- 暗号化設定セクションで、次の操作を行います。
- 暗号化を有効にします。
- 暗号化設定をカスタマイズする (高度) を選択します。
- 前の手順で作成したキーを選択します。
- リポジトリを作成を選択します。
Amazon ECR リポジトリを他のリージョンにレプリケーションする場合は、プライマリリージョンで実施した手順をセカンダリージョンで繰り返します。
最後に、Amazon ECR レプリケーション設定を有効にします。
Amazon ECR レプリケーションを有効にする
- プライマリリージョン(例:バージニア北部) で Amazon ECR コンソールを開きます。
- ナビゲーションペインでプライベートレジストリを選択し、レプリケーション設定の編集を押します。
- ルールを追加を選択します。
- リージョン間のレプリケーションには、クロスリージョンレプリケーションを選択します。
- 次へを選択します。
- 送信先リージョンはセカンダリのECRリポジトリを作成したリージョン(例:オレゴン)を選択します。
- 次へを選択します。
- フィルタを追加で、次の操作を行います。
- リポジトリ名 (例:myrepo) を入力します。作成したリポジトリ名と正確に一致する必要があります。
- 追加を選択します。
- 次へを選択します。
- ルールを送信を選択します。
(オプション) AWS KMS 暗号化を使用する Amazon ECR クロスアカウントレプリケーション
(オプション) クロスアカウントレプリケーションを有効にしたい場合は、セカンダリとなる送信先リージョンを別の AWS アカウントに設定して上記のすべての手順に従い、Amazon ECR レプリケーションを利用してクロスリージョンレプリケーションを作成する必要があります。 さらに、 Amazon ECR レプリケーションルールと送信先アカウントに権限を作成する必要があります。
(オプション)クロスアカウントレプリケーションルールを有効にする
- プライマリリージョン(例:バージニア北部) で Amazon ECR コンソールを開きます。
- ナビゲーションペインでプライベートレジストリを選択し、レプリケーション設定の編集を押します。
- ルールを追加を選択します。
- アカウント間のレプリケーションには、クロスアカウントレプリケーションを選択します。
- 次へを選択します。
- 送信先アカウントはセカンダリのECRリポジトリを作成したアカウントを選択します。
- 送信先リージョンはセカンダリのECRリポジトリを作成したリージョンを選択します。
- 次へを選択します。
- フィルタを追加で、次の操作を行います。
- リポジトリ名 (例:myrepo) を入力します。作成したリポジトリ名と正確に一致する必要があります。
- 追加を選択します。
- 次へを選択します。
- ルールを送信を選択します。
(オプション)クロスアカウントレプリケーション権限を有効にする
- 別のAWSアカウントのセカンダリリージョン(例:オレゴン) で Amazon ECR コンソールを開きます。
- ナビゲーションペインでプライベートレジストリを選択し、許可の編集を押します。
- ステートメントを生成を選択します。
- ポリシータイプで cross account replication policy を選択します
- ステートメント ID を入力します。(例:replication cross-account policy)
- アカウントセクションに、プライマリ Amazon ECR リポジトリがある AWS アカウント番号を入力します。
- ステートメントの保存を選択します。
- コンソールは、次のような JSON IAM ポリシーを自動生成します。
最後に、プライマリアカウントの Amazon ECR リポジトリにイメージをプッシュすると、自動的にそのイメージがセカンダリアカウントの Amazon ECR にレプリケートされます。
CloudFormation による自動化
CloudFormation infrastructure-as-code(IaC)テンプレートをデプロイすることで、同じソリューションを実現できます。これらのテンプレートは GitHub リポジトリにあります。
このリポジトリには2つのソリューションが含まれています:
- クロスリージョンレプリケーション(同一アカウント)
- クロスリージョンおよびクロスアカウントレプリケーション
まとめ
このブログ投稿では、リージョンまたはアカウント間のイメージ転送において、 AWS KMS キーを使用して Amazon ECR に保存されているコンテナイメージの暗号化を有効にする方法について説明しました。
コンテナイメージを安全に転送するために、関連するコンポーネントと、それらがどのように連携して機能するかを確認しました。 さらに、説明した機能の自動化に成功し、独自のリージョンとアカウントでサービスを迅速に有効にできるようになりました。
この投稿について質問がある場合は、Containers | AWS re: Post フォーラムで新しいスレッドを開始してください。
この記事は Configuring KMS encryption at rest on ECR repositories with ECR replication (記事公開日: 2023年 1 月 31 日) を翻訳したものです。
翻訳はプロフェッショナルサービス本部 インフラストラクチャアーキテクトの島浦紳吾が担当しました。