例題1
AWS CodePipeline を使用して、開発用 AWS アカウント (Account A) から本番用 AWS アカウント (Account B) へアプリケーションをデプロイする CI/CD パイプラインを構成しています。パイプラインのアーティファクトは Account A の S3 バケットに保存されており、Account A のカスタマーマネージドキー (KMS CMK) で暗号化されています。このクロスアカウントデプロイを実現するために必要な設定として、正しいものを 3 つ選択してください。
- Account B に新しい KMS キーを作成し、Account A の CodePipeline サービスロールにそのキーの使用権限を付与する。
- Account A のアーティファクトバケットをパブリックアクセス可能にし、バケットポリシーで Account B の IP アドレス帯域のみを許可する。
- Account A の KMS キーポリシーを更新し、Account B のデプロイ用 IAM ロールに対して kms:Decrypt および kms:GenerateDataKey 権限を許可する。
- Account A の S3 バケットポリシーを更新し、Account B のデプロイ用 IAM ロールに対して s3:Get* および s3:List* のアクションを許可する。
- Account B のデプロイ用 IAM ロールに、Account A の KMS キーおよび S3 バケットへのアクセスを許可するインラインポリシーを追加する。
解答と解説を見る
正解: Account A の KMS キーポリシーを更新し、Account B のデプロイ用 IAM ロールに対して kms:Decrypt および kms:GenerateDataKey 権限を許可する。 / Account A の S3 バケットポリシーを更新し、Account B のデプロイ用 IAM ロールに対して s3:Get* および s3:List* のアクションを許可する。 / Account B のデプロイ用 IAM ロールに、Account A の KMS キーおよび S3 バケットへのアクセスを許可するインラインポリシーを追加する。
正解は「Account A の KMS キーポリシーを更新し、Account B のデプロイ用 IAM ロールに対して kms:Decrypt および kms:GenerateDataKey 権限を許可する。」、「Account A の S3 バケットポリシーを更新し、Account B のデプロイ用 IAM ロールに対して s3:Get* および s3:List* のアクションを許可する。」および「Account B のデプロイ用 IAM ロールに、Account A の KMS キーおよび S3 バケットへのアクセスを許可するインラインポリシーを追加する。」です。クロスアカウントデプロイでは、リソースを所有するアカウント(Account A)側で相手アカウントのロールを許可するリソースベースポリシー(S3バケットポリシーやKMSキーポリシー)の設定と、アクセスする側(Account B)のロールに権限を付与するアイデンティティベースポリシーの両方が必要です。