AWS Proton IAM サービスロールポリシーの例 - AWS Proton

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS Proton IAM サービスロールポリシーの例

管理者は、環境テンプレートとサービステンプレートで定義されているように が AWS Proton 作成するリソースを所有および管理します。IAM サービスロールをアカウントにアタッチ AWS Proton し、 がユーザーに代わってリソースを作成できるようにします。管理者は、 がアプリケーションを AWS Proton サービスとして AWS Proton 環境に AWS Proton デプロイするときに、開発者が後で所有および管理しているリソースの IAM ロールと AWS Key Management Service キーを提供します。 AWS KMS およびデータ暗号化の詳細については、「」を参照してくださいAWS Proton でのデータ保護

サービスロールは、 がユーザーに代わって リソースを呼び出す AWS Proton ことができる Amazon Web Services (IAM) ロールです。サービスロールを指定する場合、 AWS Proton はロールの認証情報を使用します。サービスロールを使用して、 が AWS Proton 実行できるアクションを明示的に指定します。

IAM サービスで、サービスロールと権限ポリシーを作成します。サービスロールの作成の詳細については、「IAM ユーザーガイド」の AWS 「 のサービスにアクセス許可を委任するロールの作成」を参照してください。

AWS Proton を使用してプロビジョニングするための サービスロール AWS CloudFormation

プラットフォームチームのメンバーとして、管理者として AWS Proton サービスロールを作成し、環境を環境 CloudFormation のサービスロール ( CreateEnvironment API アクションの protonServiceRoleArnパラメータ) として作成 AWS Proton するときに に提供できます。このロールにより AWS Proton 、 環境または で実行されているサービスインスタンスが AWSマネージドプロビジョニングを使用してインフラストラクチャをプロビジョニングする場合、 はユーザーに代わって他の のサービス AWS CloudFormation への API コールを行うことができます。

AWS Proton サービスロールには、次の IAM ロールと信頼ポリシーを使用することをお勧めします。 AWS Proton コンソールを使用して環境を作成し、新しいロールを作成することを選択した場合、これは が作成するサービスロール AWS Proton に追加するポリシーです。このポリシーに対するアクセス許可をスコープダウンする場合、 はAccess Deniedエラーで AWS Proton 失敗することに注意してください。

重要

次の例に示すポリシーは、テンプレートをアカウントに登録できるすべてのユーザーに管理者権限を付与するので注意してください。 AWS Proton テンプレートでどのリソースを定義するかわからないため、これらのポリシーには幅広いアクセス許可があります。したがって、環境にデプロイする特定のリソースに対する権限は、範囲を絞り込むことをお勧めします。

を AWS アカウント ID 123456789012に置き換えます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudformation:CancelUpdateStack", "cloudformation:ContinueUpdateRollback", "cloudformation:CreateChangeSet", "cloudformation:CreateStack", "cloudformation:DeleteChangeSet", "cloudformation:DeleteStack", "cloudformation:DescribeChangeSet", "cloudformation:DescribeStackDriftDetectionStatus", "cloudformation:DescribeStackEvents", "cloudformation:DescribeStackResourceDrifts", "cloudformation:DescribeStacks", "cloudformation:DetectStackResourceDrift", "cloudformation:ExecuteChangeSet", "cloudformation:ListChangeSets", "cloudformation:ListStackResources", "cloudformation:UpdateStack" ], "Resource": "arn:aws:cloudformation:*:123456789012:stack/AWSProton-*" }, { "Effect": "Allow", "NotAction": [ "organizations:*", "account:*" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:CalledVia": [ "cloudformation.amazonaws.com" ] } } }, { "Effect": "Allow", "Action": [ "organizations:DescribeOrganization", "account:ListRegions" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:CalledVia": [ "cloudformation.amazonaws.com" ] } } } ] }
{ "Version": "2012-10-17", "Statement": { "Sid": "ServiceTrustRelationshipWithConfusedDeputyPrevention", "Effect": "Allow", "Principal": { "Service": "proton.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" }, "ArnLike": { "aws:SourceArn": "arn:aws::proton:*:123456789012:environment/*" } } } }

以下は、S3 リソースのプロビジョニングに AWS Proton サービスのみが必要な場合に使用できる、スコープダウンされた AWS Proton サービスロールポリシーの例です。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudformation:CancelUpdateStack", "cloudformation:ContinueUpdateRollback", "cloudformation:CreateChangeSet", "cloudformation:CreateStack", "cloudformation:DeleteChangeSet", "cloudformation:DeleteStack", "cloudformation:DescribeChangeSet", "cloudformation:DescribeStackDriftDetectionStatus", "cloudformation:DescribeStackEvents", "cloudformation:DescribeStackResourceDrifts", "cloudformation:DescribeStacks", "cloudformation:DetectStackResourceDrift", "cloudformation:ExecuteChangeSet", "cloudformation:ListChangeSets", "cloudformation:ListStackResources", "cloudformation:UpdateStack" ], "Resource": "arn:aws:cloudformation:*:123456789012:stack/AWSProton-*" }, { "Effect": "Allow", "Action": [ "s3:*" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:CalledVia": [ "cloudformation.amazonaws.com" ] } } } ] }

AWS Proton CodeBuild プロビジョニング用の サービスロール

プラットフォームチームのメンバーとして、管理者として AWS Proton サービスロールを作成し、環境を環境 CodeBuild のサービスロール ( CreateEnvironment API アクションの codebuildRoleArnパラメータ) として作成 AWS Proton するときに に提供できます。このロールは AWS Proton 、環境またはそこで実行されているサービスインスタンスが CodeBuild プロビジョニングを使用してインフラストラクチャをプロビジョニングする場合、 がユーザーに代わって他の のサービスに API コールを行うことを許可します。

AWS Proton コンソールを使用して環境を作成し、新しいロールを作成する場合、 は、管理者権限を持つポリシーを、ユーザーに代わって作成するサービスロール AWS Proton に追加します。独自のロールを作成し、アクセス許可の範囲を絞り込むときは、 Access Denied エラーで が AWS Proton 失敗することに注意してください。

重要

が作成するロールにア AWS Proton タッチするポリシーは、テンプレートをアカウントに登録できるすべてのユーザーに管理者権限を付与することに注意してください。 AWS Proton テンプレートでどのリソースを定義するかわからないため、これらのポリシーには幅広いアクセス許可があります。したがって、環境にデプロイする特定のリソースに対する権限は、範囲を絞り込むことをお勧めします。

次の例では、 を使用して リソースをプロビジョニング CodeBuild するためのアクセス許可を提供します AWS Cloud Development Kit (AWS CDK)。

を AWS アカウント ID 123456789012に置き換えます。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "logs:CreateLogStream", "logs:CreateLogGroup", "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-east-1:123456789012:log-group:/aws/codebuild/AWSProton- Shell-*", "arn:aws:logs:us-east-1:123456789012:log-group:/aws/codebuild/AWSProton- Shell-*:*" ], "Effect": "Allow" }, { "Action": "proton:NotifyResourceDeploymentStatusChange", "Resource": "arn:aws:proton:us-east-1:123456789012:*", "Effect": "Allow" }, { "Action": "sts:AssumeRole", "Resource": [ "arn:aws:iam::123456789012:role/cdk-*-deploy-role-*", "arn:aws:iam::123456789012:role/cdk-*-file-publishing-role-*" ], "Effect": "Allow" } ] }
{ "Version": "2012-10-17", "Statement": { "Sid": "CodeBuildTrustRelationshipWithConfusedDeputyPrevention", "Effect": "Allow", "Principal": { "Service": "codebuild.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" }, "ArnLike": { "aws:SourceArn": "arn:aws::proton:*:123456789012:environment/*" } } } }

AWS Proton パイプラインサービスロール

サービスパイプラインをプロビジョニングするには、 に他の のサービスへの API コールを行うためのアクセス許可 AWS Proton が必要です。必要なサービスロールは、環境の作成時に指定するサービスロールと似ています。ただし、パイプラインを作成するためのロールは AWS アカウント内のすべてのサービス間で共有され、これらのロールはコンソールまたは UpdateAccountSettings API アクションでアカウント設定として指定します。

AWS Proton コンソールを使用してアカウント設定を更新し、 AWS CloudFormation または CodeBuild サービスロールのいずれかの新しいロールを作成する場合、 が作成するサービスロール AWS Proton に追加するポリシーは、前のセクションで説明したポリシー、AWSマネージドプロビジョニングロールおよび と同じですCodeBuild プロビジョニングロール。このポリシーに対するアクセス許可をスコープダウンする場合は、 Access Denied エラー時に が AWS Proton 失敗することに注意してください。

重要

前のセクションのポリシー例では、あなたのアカウントにテンプレートを登録できるすべての人に管理者権限が与えられるので注意してください。 AWS Proton テンプレートでどのリソースを定義するかわからないため、これらのポリシーには幅広いアクセス許可があります。したがって、パイプラインにデプロイする特定のリソースに対する権限は、範囲を絞り込むことをお勧めします。

AWS Proton コンポーネントロール

プラットフォームチームのメンバーとして、管理者として AWS Proton サービスロールを作成し、環境を環境の CloudFormation コンポーネントロール ( CreateEnvironment API アクションの componentRoleArnパラメータ) として作成 AWS Proton するときに に提供できます。このロールは、直接定義したコンポーネントがプロビジョニングできるインフラストラクチャの範囲を絞り込みます。コンポーネントの詳細については、「AWS Proton コンポーネント」を参照してください。

以下のポリシー例では、Amazon Simple Storage Service (Amazon S3) バケットと関連するアクセスポリシーをプロビジョニングする、直接定義コンポーネントを作成することをサポートします。

を AWS アカウント ID 123456789012に置き換えます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudformation:CancelUpdateStack", "cloudformation:CreateChangeSet", "cloudformation:DeleteChangeSet", "cloudformation:DescribeStacks", "cloudformation:ContinueUpdateRollback", "cloudformation:DetectStackResourceDrift", "cloudformation:DescribeStackResourceDrifts", "cloudformation:DescribeStackEvents", "cloudformation:CreateStack", "cloudformation:DeleteStack", "cloudformation:UpdateStack", "cloudformation:DescribeChangeSet", "cloudformation:ExecuteChangeSet", "cloudformation:ListChangeSets", "cloudformation:ListStackResources" ], "Resource": "arn:aws:cloudformation:*:123456789012:stack/AWSProton-*" }, { "Effect": "Allow", "Action": [ "s3:CreateBucket", "s3:DeleteBucket", "s3:GetBucket", "iam:CreatePolicy", "iam:DeletePolicy", "iam:GetPolicy", "iam:ListPolicyVersions", "iam:DeletePolicyVersion" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:CalledVia": "cloudformation.amazonaws.com" } } } ] }
{ "Version": "2012-10-17", "Statement": { "Sid": "ServiceTrustRelationshipWithConfusedDeputyPrevention", "Effect": "Allow", "Principal": { "Service": "proton.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" }, "ArnLike": { "aws:SourceArn": "arn:aws::proton:*:123456789012:environment/*" } } } }