翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
が他の AWS サービスとやり取り CodeBuild できるようにする
のステップに従って AWS CodeBuild 初めて コンソールを使用した開始方法 にアクセスする場合、このトピックの情報は不要である可能性が高くなります。ただし、 を引き続き使用するときは CodeBuild、 が他の AWS サービスとやり取り CodeBuild できるようにするなど、操作を行うことをお勧めします。
CodeBuild がユーザーに代わって依存 AWS サービスとやり取りするには、 AWS CodeBuild サービスロールが必要です。 CodeBuild または CodeBuild AWS CodePipeline コンソールを使用してサービスロールを作成できます。詳細については、以下を参照してください。
これらのコンソールを使用する予定がない場合は、このセクションでIAMコンソールまたは でサービスロールを作成する CodeBuild方法について説明します AWS CLI。
重要
CodeBuild は、ユーザーに代わって実行されるすべてのオペレーションにサービスロールを使用します。ユーザーが持つべきではないアクセス権限がロールに含まれる場合、ユーザーのアクセス権限を非意図的にエスカレーションできてしまいます。ロールが最小特権を付与することを確認します。
このページで説明するサービスロールには、 の使用に必要な最小限のアクセス許可を付与するポリシーが含まれています CodeBuild。ユースケースに応じて、さらに許可を追加する必要がある場合があります。
CodeBuild サービスロールを作成するには (コンソール)
でIAMコンソールを開きますhttps://console.aws.amazon.com/iam/
。 次のいずれかを使用して、コンソールに既にサインインしている必要があります。
-
AWS ルートアカウント。これは推奨されません。詳細については、ユーザーガイドの「AWS アカウント ルートユーザー」を参照してください。
-
AWS アカウントの管理者ユーザー。詳細については、「 ユーザーガイド」の「最初の AWS アカウント ルートユーザーとグループの作成」を参照してください。
-
以下の最小アクションセットを実行するアクセス許可を持つ AWS アカウントのユーザー。
iam:AddRoleToInstanceProfile iam:AttachRolePolicy iam:CreateInstanceProfile iam:CreatePolicy iam:CreateRole iam:GetRole iam:ListAttachedRolePolicies iam:ListPolicies iam:ListRoles iam:PassRole iam:PutRolePolicy iam:UpdateAssumeRolePolicy
詳細については、「 ユーザーガイド」のIAM「ポリシーの概要」を参照してください。
-
-
ナビゲーションペインで、ポリシー を選択します。
-
[ポリシーの作成] を選択します。
-
ポリシーの作成ページで、 を選択しますJSON。
-
JSON ポリシーには、次のように入力し、ポリシーの確認 を選択します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "CloudWatchLogsPolicy", "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "*" }, { "Sid": "CodeCommitPolicy", "Effect": "Allow", "Action": [ "codecommit:GitPull" ], "Resource": "*" }, { "Sid": "S3GetObjectPolicy", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": "*" }, { "Sid": "S3PutObjectPolicy", "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": "*" }, { "Sid": "ECRPullPolicy", "Effect": "Allow", "Action": [ "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": "*" }, { "Sid": "ECRAuthPolicy", "Effect": "Allow", "Action": [ "ecr:GetAuthorizationToken" ], "Resource": "*" }, { "Sid": "S3BucketIdentity", "Effect": "Allow", "Action": [ "s3:GetBucketAcl", "s3:GetBucketLocation" ], "Resource": "*" } ] }
注記
このポリシーには、潜在的に多数の AWS リソースへのアクセスを許可するステートメントが含まれています。特定の AWS リソース AWS CodeBuild へのアクセスを制限するには、
Resource
配列の値を変更します。詳細については、 AWS サービスのセキュリティドキュメントを参照してください。 -
[ポリシーの確認] ページで、[ポリシー名] にポリシー名 (
CodeBuildServiceRolePolicy
など) を入力し、[ポリシーの作成] を選択します。注記
別の名前を使用する場合は、この手順全体でそれを使用してください。
-
ナビゲーションペインで [Roles (ロール) ] を選択します。
-
[Create role] を選択します。
-
サービスが既に選択されている状態でロールの作成ページで、 を選択しCodeBuild、Next:Permissions を選択します。 AWS
-
アクセス許可ポリシーの添付ページで、 を選択しCodeBuildServiceRolePolicy、次へ: レビュー を選択します。
-
[Create role and review (ロールの作成と確認)] ページで、[ロール名] にロールの名前 (
CodeBuildServiceRole
など) を入力し、[ロールの作成] を選択します。
CodeBuild サービスロールを作成するには (AWS CLI)
-
前の手順で説明したようにIAM、エンティティの 1 つに対応する AWS アクセスキーと AWS シークレットアクセスキー AWS CLI で を設定していることを確認します。詳細については、AWS Command Line Interfaceユーザーガイドの「AWS Command Line Interface のセットアップ」を参照してください。
-
AWS CLI がインストールされているローカルワークステーションまたはインスタンスの空のディレクトリに、
create-role.json
と という名前の 2 つのファイルを作成しますput-role-policy.json
。別のファイル名を選択した場合は、この手順全体でそれを使用してください。create-role.json
:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "codebuild.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
注記
「混乱した代理」問題に対して自分を守るために
aws:SourceAccount
およびaws:SourceArn
条件キーを使用することをお勧めします。例えば、前述の信頼ポリシーを次の条件ブロックで編集できます。aws:SourceAccount
は CodeBuild プロジェクトの所有者であり、aws:SourceArn
は CodeBuild プロジェクト ですARN。サービスロールを AWS アカウントに制限する場合、
create-role.json
は次のようになります。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "codebuild.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": [ "
account-ID
" ] } } } ] }サービスロールを特定の CodeBuild プロジェクトに制限する場合、
create-role.json
は次のようになります。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "codebuild.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:codebuild:
region-ID
:account-ID
:project/project-name
" } } } ] }注記
CodeBuild プロジェクトの名前がわからないか、決定したことがなく、特定のARNパターンに信頼ポリシーの制限が必要な場合は、 のその部分をワイルドカード (*) ARNに置き換えることができます。プロジェクトを作成した後は、信頼ポリシーを更新できます。
put-role-policy.json
:{ "Version": "2012-10-17", "Statement": [ { "Sid": "CloudWatchLogsPolicy", "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "*" }, { "Sid": "CodeCommitPolicy", "Effect": "Allow", "Action": [ "codecommit:GitPull" ], "Resource": "*" }, { "Sid": "S3GetObjectPolicy", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": "*" }, { "Sid": "S3PutObjectPolicy", "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": "*" }, { "Sid": "S3BucketIdentity", "Effect": "Allow", "Action": [ "s3:GetBucketAcl", "s3:GetBucketLocation" ], "Resource": "*" } ] }
注記
このポリシーには、潜在的に多数の AWS リソースへのアクセスを許可するステートメントが含まれています。特定の AWS リソース AWS CodeBuild へのアクセスを制限するには、
Resource
配列の値を変更します。詳細については、 AWS サービスのセキュリティドキュメントを参照してください。 -
上記のファイルを保存したディレクトリに移動し、以下の 2 つのコマンドをこの順番で 1 つずつ実行します。
CodeBuildServiceRole
とCodeBuildServiceRolePolicy
には異なる値を使用する場合は、ここでそれらを使用してください。aws iam create-role --role-name CodeBuildServiceRole --assume-role-policy-document file://create-role.json
aws iam put-role-policy --role-name CodeBuildServiceRole --policy-name CodeBuildServiceRolePolicy --policy-document file://put-role-policy.json