が他の AWS サービスとやり取り CodeBuild できるようにする - AWS CodeBuild

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

が他の AWS サービスとやり取り CodeBuild できるようにする

のステップに従って AWS CodeBuild 初めて コンソールを使用した開始方法 にアクセスする場合、このトピックの情報は不要である可能性が高くなります。ただし、 を引き続き使用するときは CodeBuild、 が他の AWS サービスとやり取り CodeBuild できるようにするなど、操作を行うことをお勧めします。

CodeBuild がユーザーに代わって依存 AWS サービスとやり取りするには、 AWS CodeBuild サービスロールが必要です。 CodeBuild または CodeBuild AWS CodePipeline コンソールを使用してサービスロールを作成できます。詳細については、以下を参照してください。

これらのコンソールを使用する予定がない場合は、このセクションでIAMコンソールまたは でサービスロールを作成する CodeBuild方法について説明します AWS CLI。

重要

CodeBuild は、ユーザーに代わって実行されるすべてのオペレーションにサービスロールを使用します。ユーザーが持つべきではないアクセス権限がロールに含まれる場合、ユーザーのアクセス権限を非意図的にエスカレーションできてしまいます。ロールが最小特権を付与することを確認します。

このページで説明するサービスロールには、 の使用に必要な最小限のアクセス許可を付与するポリシーが含まれています CodeBuild。ユースケースに応じて、さらに許可を追加する必要がある場合があります。

CodeBuild サービスロールを作成するには (コンソール)
  1. でIAMコンソールを開きますhttps://console.aws.amazon.com/iam/

    次のいずれかを使用して、コンソールに既にサインインしている必要があります。

  2. ナビゲーションペインで、ポリシー を選択します。

  3. [ポリシーの作成] を選択します。

  4. ポリシーの作成ページで、 を選択しますJSON

  5. 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 サービスのセキュリティドキュメントを参照してください。

  6. [ポリシーの確認] ページで、[ポリシー名] にポリシー名 (CodeBuildServiceRolePolicy など) を入力し、[ポリシーの作成] を選択します。

    注記

    別の名前を使用する場合は、この手順全体でそれを使用してください。

  7. ナビゲーションペインで [Roles (ロール) ] を選択します。

  8. [Create role] を選択します。

  9. サービスが既に選択されている状態でロールの作成ページで、 を選択しCodeBuildNext:Permissions を選択します。 AWS

  10. アクセス許可ポリシーの添付ページで、 を選択しCodeBuildServiceRolePolicy次へ: レビュー を選択します。

  11. [Create role and review (ロールの作成と確認)] ページで、[ロール名] にロールの名前 (CodeBuildServiceRole など) を入力し、[ロールの作成] を選択します。

CodeBuild サービスロールを作成するには (AWS CLI)
  1. 前の手順で説明したようにIAM、エンティティの 1 つに対応する AWS アクセスキーと AWS シークレットアクセスキー AWS CLI で を設定していることを確認します。詳細については、AWS Command Line Interfaceユーザーガイドの「AWS Command Line Interface のセットアップ」を参照してください。

  2. 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 サービスのセキュリティドキュメントを参照してください。

  3. 上記のファイルを保存したディレクトリに移動し、以下の 2 つのコマンドをこの順番で 1 つずつ実行します。CodeBuildServiceRoleCodeBuildServiceRolePolicy には異なる値を使用する場合は、ここでそれらを使用してください。

    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