AWS CodeBuild
ユーザーガイド (API バージョン 2016-10-06)

CodeBuild でのアイデンティティベースのポリシーの使用

このトピックでは、アカウント管理者が IAM ID (ユーザー、グループ、ロール) にアクセス許可ポリシーをアタッチし、それによって AWS CodeBuild リソースでオペレーションを実行するアクセス許可を付与する方法を示すアイデンティティベースのポリシーの例を示します。

重要

初めに、CodeBuild リソースへのアクセスを管理するための基本概念と、使用可能なオプションについて説明する概要トピックをお読みになることをお勧めします。詳細については、「CodeBuild リソースへのアクセス権限の管理の概要」を参照してください。

us-east-2 リージョンにあり、123456789012 のアカウントで、名前が my で始まるビルドプロジェクトについての情報のみをユーザーが取得するのを許可するアクセス許可ポリシーの例を次に示します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:BatchGetProjects", "Resource": "arn:aws:codebuild:us-east-2:123456789012:project/my*" } ] }

CodeBuild コンソールを使用するために必要なアクセス権限

AWS CodeBuild コンソールを使用するユーザーは、他の AWS リソースを AWS アカウントで記述できる、最小限のアクセス許可を持っている必要があります。次のサービスからのアクセス許可を持っている必要があります。

  • AWS CodeBuild

  • Amazon CloudWatch

  • CodeCommit (ソースコードを AWS CodeCommit リポジトリに保存している場合)

  • Amazon Elastic Container Registry (Amazon ECR) (Amazon ECR リポジトリの Docker イメージに依存するビルド環境を使用している場合)

  • Amazon Elastic Container Service (Amazon ECS) (Amazon ECR リポジトリの Docker イメージに依存するビルド環境を使用している場合)

  • AWS Identity and Access Management (IAM)

  • AWS Key Management Service (AWS KMS)

  • Amazon Simple Storage Service (Amazon S3)

これらの最小限必要なアクセス許可よりも制限された IAM ポリシーを作成している場合、コンソールは意図したとおりには機能しません。

ソースプロバイダーに接続するために CodeBuild コンソールに必要なアクセス許可

AWS CodeBuild コンソールでは、以下の API アクションにより、ソースプロバイダー (GitHub リポジトリなど) に接続します。

  • codebuild:ListConnectedOAuthAccounts

  • codebuild:ListRepositories

  • codebuild:PersistOAuthToken

  • codebuild:ImportSourceCredentials

ソースプロバイダー (GitHub リポジトリなど) は、CodeBuild コンソールを使用してビルドプロジェクトに関連付けることができます。これを行うには、まず上記の API アクションを、CodeBuild コンソールにアクセスするために使用する IAM ユーザーに関連付けられた IAM アクセスポリシーに追加します。

ListConnectedOAuthAccountsListRepositories、および PersistOAuthToken の API アクションは、コードで呼び出すことを想定していません。したがって、これらの API アクションは AWS CLI と AWS SDK には含まれていません。

CodeBuild での AWS 管理 (事前定義) ポリシー

AWS は、AWS によって作成され管理されるスタンドアロンの IAM ポリシーが提供する多くの一般的ユースケースに対応します。これらの AWS 管理ポリシーでは、一般的なユースケースに必要なアクセス許可が自動的に付与されるため、どのアクセス許可が必要かの判断は不要です。詳細については、『IAM User Guide』の「AWS 管理ポリシー」を参照してください。

アカウントのユーザーにアタッチ可能な以下の AWS 管理ポリシーは、AWS CodeBuild に固有のものです。

  • AWSCodeBuildAdminAccess – CodeBuild へのフルアクセスを提供します。これには、CodeBuild ビルドプロジェクトを管理するためのアクセス許可が含まれます。

  • AWSCodeBuildDeveloperAccess – CodeBuild へのアクセスを提供します。ただし、ビルドプロジェクトの管理は許可されません。

  • AWSCodeBuildReadOnlyAccess – CodeBuild への読み取り専用アクセスを提供します。

CodeBuild が作成するビルド出力アーティファクトにアクセスするには、AWS 管理ポリシーとして AmazonS3ReadOnlyAccess もアタッチする必要があります。

CodeBuild サービスロールを作成および管理するには、AWS 管理ポリシーとして IAMFullAccess もアタッチする必要があります。

CodeBuild アクションとリソースに対するアクセス権限を付与する独自のカスタム IAM ポリシーを作成することもできます。こうしたカスタムポリシーは、該当するアクセス権限が必要な IAM ユーザーまたはグループにアタッチできます。

お客様が管理するポリシーの例

このセクションでは、AWS CodeBuild アクションのアクセス許可を付与するユーザーポリシー例を示しています。CodeBuild API、AWS SDK、または AWS CLI を使用している場合、これらのポリシーは機能します。コンソールを使用している場合は、コンソールに固有の追加のアクセス許可を付与する必要があります。詳細については、CodeBuild コンソールを使用するために必要なアクセス権限 を参照してください。

以下のサンプル IAM ポリシーを使用して、IAM ユーザーとロールに対して CodeBuild アクセスを制限できます。

ビルドプロジェクトに関する情報の取得をユーザーに許可する

次のポリシーステートメントの例では、us-east-2 リージョンにあり、123456789012 のアカウントで、名前が my で始まるビルドプロジェクトについての情報のみをユーザーが取得するのを許可します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:BatchGetProjects", "Resource": "arn:aws:codebuild:us-east-2:123456789012:project/my*" } ] }

ビルドプロジェクトの作成をユーザーに許可する

以下のポリシーステートメントの例では、名前は問いませんが、us-east-2 リージョンだけにある 123456789012 というアカウントで、特定の CodeBuild のサービスロールのみを使用したビルドプロジェクトの作成をユーザーに許可します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:CreateProject", "Resource": "arn:aws:codebuild:us-east-2:123456789012:project/*" }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam:123456789012:role/CodeBuildServiceRole" } ] }

ビルドプロジェクトの削除をユーザーに許可する

次のポリシーステートメントの例では、us-east-2 リージョンにあり、123456789012 のアカウントで、名前が my で始まるビルドプロジェクトをユーザーが削除するのを許可します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:DeleteProject", "Resource": "arn:aws:codebuild:us-east-2:123456789012:project/my*" } ] }

ビルドプロジェクト名のリストをユーザーが取得するのをに許可する

以下のポリシーステートメントの例では、同じアカウントのビルドプロジェクト名のリストをユーザーが取得するのを許可します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:ListProjects", "Resource": "*" } ] }

ビルドプロジェクトに関する情報の変更をユーザーに許可する

以下のポリシーステートメントの例では、名前は問いませんが、us-east-2 リージョンだけにある 123456789012 というアカウントで、特定の AWS CodeBuild のサービスロールのみを使用したビルドプロジェクトに関する情報の変更をユーザーに許可します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:UpdateProject", "Resource": "arn:aws:codebuild:us-east-2:123456789012:project/*" }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam:123456789012:role/CodeBuildServiceRole" } ] }

ビルドに関する情報の取得をユーザーに許可する

次のポリシーステートメントの例では、us-east-2 リージョンにあり、123456789012 のアカウントで、my-build-project および my-other-build-project という名前のビルドプロジェクトについての情報のみをユーザーが取得するのを許可します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:BatchGetBuilds", "Resource": [ "arn:aws:codebuild:us-east-2:123456789012:project/my-build-project", "arn:aws:codebuild:us-east-2:123456789012:project/my-other-build-project" ] } ] }

ビルドプロジェクトのビルド ID のリストの取得をユーザーに許可する

次のポリシーステートメントの例では、us-east-2 リージョンにあり、123456789012 のアカウントで、my-build-project および my-other-build-project という名前のビルドプロジェクトのみのビルド ID のリストをユーザーが取得するのを許可します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:ListBuildsForProject", "Resource": [ "arn:aws:codebuild:us-east-2:123456789012:project/my-build-project", "arn:aws:codebuild:us-east-2:123456789012:project/my-other-build-project" ] } ] }

ビルド ID のリストの取得をユーザーに許可する

以下のポリシーステートメントの例では、同じアカウントのすべてのビルド ID のリストをユーザーが取得するのを許可します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:ListBuilds", "Resource": "*" } ] }

ビルドの実行の開始をユーザーに許可する

以下のポリシーステートメントの例では、us-east-2 リージョンの 123456789012 というアカウントの、my という名前で始まるビルドプロジェクトのみのビルドをユーザーが実行する許可を与えます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:StartBuild", "Resource": "arn:aws:codebuild:us-east-2:123456789012:project/my*" } ] }

ビルドの停止を試みる許可をユーザーに与える

次のポリシーステートメントの例では、us-east-2 リージョンにあり、123456789012 のアカウントで、名前が my で始まるビルドの停止を試みるのをユーザーに許可します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:StopBuild", "Resource": "arn:aws:codebuild:us-east-2:123456789012:project/my*" } ] }

ビルドの削除試行をユーザーに許可する

次のポリシーステートメントの例では、us-east-2 リージョンに限り、123456789012 アカウントで名前が my で始まるビルドプロジェクトの削除試行をユーザーに許可します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:BatchDeleteBuilds", "Resource": "arn:aws:codebuild:us-east-2:123456789012:project/my*" } ] }

CodeBuild が管理する Docker イメージに関する情報の取得をユーザーに許可する

次のポリシーステートメントの例では、CodeBuild で管理するすべての Docker イメージに関する情報を取得することをユーザーに許可します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codebuild:ListCuratedEnvironmentImages", "Resource": "*" } ] }

VPC ネットワークインターフェイスを作成するために必要な AWS サービスへの CodeBuild アクセスを可能にする

次のポリシーステートメントの例では、Amazon VPC で 2 つのサブネットを持つネットワークインターフェイスを作成する AWS CodeBuild のアクセス許可を付与します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface", "ec2:DescribeDhcpOptions", "ec2:DescribeNetworkInterfaces", "ec2:DeleteNetworkInterface", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", "ec2:DescribeVpcs" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterfacePermission" ], "Resource": "arn:aws:ec2:region:account-id:network-interface/*", "Condition": { "StringEquals": { "ec2:Subnet": [ "arn:aws:ec2:region:account-id:subnet/subnet-id-1", "arn:aws:ec2:region:account-id:subnet/subnet-id-2" ], "ec2:AuthorizedService": "codebuild.amazonaws.com" } } } ] }

拒否ステートメントを使用して CodeBuild によるソースプロバイダーの切断を防ぐ

以下のポリシーステートメントの例では、拒否ステートメントを使用して AWS CodeBuild によるソースプロバイダーの切断を防ぎます。ソースプロバイダーと接続するには、codebuild:PersistOAuthToken および codebuild:ImportSourceCredentials の逆である codebuild:DeleteOAuthToken を使用します。詳細については、「ソースプロバイダーに接続するために CodeBuild コンソールに必要なアクセス許可」を参照してください。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "codebuild:DeleteOAuthToken", "Resource": "*" } ] }