• 検索結果がありません。

アカウントポリシーおよびロールのセットアップ

AWS KMS キーを作成したら、クロスアカウントアクセスを有効にするポリシーを作成してアタッチしま す。作成するには、AccountA および AccountB の両方からアクションを行う必要があります。

トピック

• パイプラインを作成するポリシーおよびロールをアカウントに設定 (AccountA) (p. 138)

• AWS リソースを所有するポリシーおよびロールをアカウントに設定 (AccountB) (p. 140)

ステップ 1: アカウントポリシー およびロールのセットアップ

パイプラインを作成するポリシーおよびロールをアカウントに設 定 (AccountA)

他の AWS アカウントに関連付ける AWS CodeDeploy リソースを使用するパイプラインを作成するに は、AccountA で、アーティファクトを保存する Amazon S3 バケットおよび AWS CodePipeline のサー ビスロールの両方のポリシーを設定する必要があります。

AccountB へのアクセスを許可する Amazon S3 バケットのポリシーを作成するには (コンソール)

1. AccountA を使用して AWS マネジメントコンソール にサインインし、https://

console.aws.amazon.com/s3/ で Amazon S3 コンソールを開きます。

2. Amazon S3 バケットのリストで、パイプラインのアーティファクトが保存される Amazon S3 バケッ トを選択します。このバケットには、codepipeline-region-1234567EXAMPLE という名前が付けられ ます。ここで、region はパイプラインを作成した AWS リージョンであり、1234567EXAMPLE はバ ケット名を一意にするための 10 桁の乱数です (codepipeline-us-east-2-1234567890 など)。

3. Amazon S3 バケットの詳細ページで、[プロパティ] を選択します。

4. プロパティペインで、[アクセス許可] を展開し、[バケットポリシーの追加] を選択します。

Note

ポリシーが Amazon S3 バケットにすでにアタッチされている場合は、[バケットポリシーの 編集] を選択します。以下の例のステートメントを既存のポリシーに追加できます。新しいポ リシーを追加するには、そのためのリンクを選択し、AWS ポリシージェネレーターの指示に 従います。詳細については、「IAM ポリシーの概要」を参照してください。

5. [Bucket Policy Editor] ウィンドウに以下のポリシーを入力します。これにより、AccountB は、パイ プラインアーティファクトへのアクセスが許可され、カスタムソースやビルドアクションなどのアク ションにより出力アーティファクトが作成されたときに、そのアーティファクトの追加が可能になり ます。

次の例では、AccountB の ARN は、012ID_ACCOUNT_B です。Amazon S3 バケットの ARN は、codepipeline-us-east-2-1234567890 です。これらの ARN を、アクセスを許可するアカ ウントの ARN、および Amazon S3 バケットの ARN に置き換えます。

{ "Version": "2012-10-17", "Id": "SSEAndSSLPolicy", "Statement": [

{

"Sid": "DenyUnEncryptedObjectUploads", "Effect": "Deny",

"Principal": "*",

"Action": "s3:PutObject",

"Resource": "arn:aws:s3:::codepipeline-us-east-2-1234567890/*", "Condition": {

"StringNotEquals": {

"s3:x-amz-server-side-encryption": "aws:kms"

} } }, {

"Sid": "DenyInsecureConnections", "Effect": "Deny",

"Principal": "*", "Action": "s3:*",

"Resource": "arn:aws:s3:::codepipeline-us-east-2-1234567890/*", "Condition": {

"Bool": {

"aws:SecureTransport": false }

ステップ 1: アカウントポリシー およびロールのセットアップ }

},

{ "Sid": "",

"Effect": "Allow", "Principal": {

"AWS": "arn:aws:iam::012ID_ACCOUNT_B:root"

}, "Action": [

"s3:Get*", "s3:Put*"

],

"Resource": "arn:aws:s3:::codepipeline-us-east-2-1234567890/*"

},

{ "Sid": "",

"Effect": "Allow", "Principal": {

"AWS": "arn:aws:iam::012ID_ACCOUNT_B:root"

},

"Action": "s3:ListBucket",

"Resource": "arn:aws:s3:::codepipeline-us-east-2-1234567890"

} ] }

6. [保存] を選択したら、ポリシーエディタを閉じます。

7. [保存] を選択して、Amazon S3 バケットに対するアクセス許可を保存します。

AWS CodePipeline のサービスロールのポリシーを作成するには (コンソール)

1. AccountA を使用してAWS マネジメントコンソール にサインインし、https://

console.aws.amazon.com/iam/ で IAM コンソールを開きます。

2. [ダッシュボード] で、[ロール] を選択します。

3. [ロール名] の下にあるロールのリストで、AWS CodePipeline のサービスロールの名前を選択します。

デフォルトでは、AWS-CodePipeline-Service です。サービスロールに異なる名前を使用した場合は、

リストからその名前を選択してください。

4. [概要] ページの [アクセス許可] タブで、[インラインポリシー] を展開し、[ロールポリシーの作成] を選 択します。

Note

ロールポリシーを以前に作成していない場合、[ロールポリシーの作成] は表示されません。

代わりに、新しいポリシーを作成するためのリンクを選択します。

5. [許可を設定] ページで、[カスタムポリシー]、[Select] の順に選択します。

6. [ポリシーの確認] ページの [ポリシー名] にポリシーの名前を入力します。[ポリシードキュメン ト] に以下のポリシーを入力して、AccountB がそのロールを引き受けるようにします。次の例で は、012ID_ACCOUNT_B は、AccountB の ARN です。

{ "Version": "2012-10-17", "Statement": {

"Effect": "Allow",

"Action": "sts:AssumeRole", "Resource": [

"arn:aws:iam::012ID_ACCOUNT_B:role/*"

] } }

ステップ 1: アカウントポリシー およびロールのセットアップ 7. [Validate Policy] を選択します。

8. ポリシーが検証されたら、[ポリシーの適用] を選択します。

AWS リソースを所有するポリシーおよびロールをアカウントに 設定 ( AccountB )

AWS CodeDeploy にアプリケーション、デプロイ、デプロイグループを作成したら、あわせて「Amazon EC2インスタンスロール」を作成します。([Run Deployment Walkthrough] ウィザードを使用している場合 はこのロールが作成されますが、手動で作成することもできます。) AccountA で作成されたパイプライ ンで、AccountB で作成された AWS CodeDeploy リソースを使用するには、以下のように行います。

• パイプラインアーティファクトが保存されている Amazon S3 バケットにアクセスできるようにするイ ンスタンスロールのポリシーを設定します。

• クロスアカウントアクセス用に設定されている AccountB に 2 番目のロールを作成します。

この 2 番目のロールでは、AccountA の Amazon S3 バケットにのみアクセスできます。これに は、AWS CodeDeploy リソースにアクセスできるポリシーと、AccountA でロールを再開できる信頼関 係ポリシーも必要です。

Note

これらのポリシーは、各 AWS アカウントを使用して作成されているパイプラインで使用され る AWS CodeDeploy リソースのセットアップにのみ使用できます。そのほかの AWS リソース の場合は、リソース要件固有のポリシーが必要です。

AWS CodeDeploy (コンソール) 用に設定した Amazon EC2 インスタンスロールのポリシーを作成 するには

1. AccountB を使用して AWS マネジメントコンソール にサインインし、https://

console.aws.amazon.com/iam/ で IAM コンソールを開きます。

2. [ダッシュボード] で、[ロール] を選択します。

3. [ロール名] の下にあるロールのリストで、AWS CodeDeploy アプリケーションの Amazon EC2 インス タンスロールとして使用するサービスロールの名前を選択します。このロール名はさまざまで、デプ ロイグループで複数のインスタンスロールを使用できます。詳細については、「Amazon EC2 インス タンスの IAM インスタンスプロファイルを作成する」を参照してください。

4. [概要] ページの [アクセス許可] タブで、[インラインポリシー] を展開し、[ロールポリシーの作成] を選 択します。

5. [許可を設定] ページで、[カスタムポリシー]、[Select] の順に選択します。

6. [ポリシーの確認] ページの [ポリシー名] にポリシーの名前を入力します。[ポリシードキュメント]

に以下のポリシーを入力して、AccountA によってパイプラインのアーティファクト (この例では codepipeline-us-east-2-1234567890) の保存に使用される Amazon S3 バケットへのアクセス を許可します。

{

"Version": "2012-10-17", "Statement": [

{

"Effect": "Allow", "Action": [

"s3:Get*"

],

"Resource": [

"arn:aws:s3:::codepipeline-us-east-2-1234567890/*"

] },

ステップ 1: アカウントポリシー およびロールのセットアップ {

"Effect": "Allow", "Action": [

"s3:ListBucket"

],

"Resource": [

"arn:aws:s3:::codepipeline-us-east-2-1234567890"

] } ] }

7. [Validate Policy] を選択します。

8. ポリシーが検証されたら、[ポリシーの適用] を選択します。

9. 2 番目のポリシーを作成します。AWS KMS ここで

arn:aws:kms:us-east-1:012ID_ACCOUNT_A:key/2222222-3333333-4444-556677EXAMPLE は AccountA で作 成されたカスタマー管理キーの ARN であり、AccountB にそのキーの使用を許可するように設定し ています。

{ "Version": "2012-10-17", "Statement": [

{

"Effect": "Allow", "Action": [

"kms:DescribeKey", "kms:GenerateDataKey*", "kms:Encrypt",

"kms:ReEncrypt*", "kms:Decrypt"

],

"Resource": [

"arn:aws:kms:us-east-1:012ID_ACCOUNT_A:key/2222222-3333333-4444-556677EXAMPLE"

] } ] }

Important

ここで示しているように、このポリシーでは、AWS KMS キーのリソース ARN の一部として AccountA のアカウント ID を使用する必要があります。使用しないと、そのポリシーは機能 しません。

10. [Validate Policy] を選択します。

11. ポリシーが検証されたら、[ポリシーの適用] を選択します。

ここで、クロスアカウントアクセスに使用する IAM ロールを作成し、AccountA でロールを再開できる ように設定します。このロールには、AccountA のアーティファクトを保存するために使用する AWS CodeDeploy リソースおよび Amazon S3 バケットにアクセスできるようにするポリシーを追加する必要が あります。

IAM でクロスアカウントロールを設定するには

1. AccountB を使用して AWS マネジメントコンソール にサインインし、https://

console.aws.amazon.com/iam/ で IAM コンソールを開きます。

2. [ダッシュボード] で、[ロール]、[新しいロールの作成] の順に選択します。

ステップ 1: アカウントポリシー およびロールのセットアップ

3. [新しいロールの設定] ページで、このロールの名前 (CrossAccount_Role など) を [Role Name] に 入力します。IAM の命名規則に従う限り、このロールの名前は任意に指定できます。ロールの目的が 明確になる名前を付けることを検討してください。

4. [ロールタイプの選択] ページで、[Role for Cross-Account Access] を選択します。[Provide access between AWS accounts you own] の横にある [Select] を選択します。

5. AWS CodePipeline でパイプラインを作成するアカウントの AWS アカウント ID (AccountA) を入力 し、[次のステップ] を選択します。

Note

この手順では、AccountBAccountA との間に信頼関係ポリシーを作成します。

6. [ポリシーのアタッチ] で、[AmazonS3ReadOnlyAccess] を選択してから、[次のステップ] を選択しま す。

Note

これは、使用するポリシーではありません。ウィザードを完了するために、ポリシーを選択 する必要があります。

7. [Review] ページで、[Create Role] を選択します。

8. ロールのリストから、作成したポリシー (CrossAccount_Role など) を選択して、そのロールの [Summary] ページを開きます。

9. [アクセス許可]、[インラインポリシー] の順に展開します。インラインポリシーを作成するためのリン クを選択します。

10. [許可を設定] ページで、[カスタムポリシー]、[Select] の順に選択します。

11. [ポリシーの確認] ページの [ポリシー名] にポリシーの名前を入力します。[ポリシードキュメント] に 以下のポリシーを入力して、AWS CodeDeploy リソースへのアクセスを許可します。

{ "Version": "2012-10-17", "Statement": [

{

"Effect": "Allow", "Action": [

"codedeploy:CreateDeployment", "codedeploy:GetDeployment", "codedeploy:GetDeploymentConfig", "codedeploy:GetApplicationRevision", "codedeploy:RegisterApplicationRevision"

],

"Resource": "*"

} ] }

12. [Validate Policy] を選択します。

13. ポリシーが検証されたら、[ポリシーの適用] を選択します。

14. [インラインポリシー] で、[ロールポリシーの作成] を選択します。

15. [許可を設定] ページで、[Custom policy]、[Select] の順に選択します。

16. [ポリシーの確認] ページの [ポリシー名] にポリシーの名前を入力します。[ポリシードキュメント] に 以下のポリシーを入力して、このロールに AccountA の Amazon S3 バケットに対する入力アーティ ファクトの取得と出力アーティファクトの保存を許可します。

{

"Version": "2012-10-17", "Statement": [

{

"Effect": "Allow",

関連したドキュメント