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

CodeBuild リソースへのアクセス権限の管理の概要

すべての AWS リソースは AWS アカウントによって所有され、リソースの作成またはアクセスは、アクセス権限のポリシーによって管理されます。アカウント管理者は、IAM ID (ユーザー、グループ、ロール) にアクセス権限ポリシーをアタッチできます。

注記

アカウント管理者 (または管理者ユーザー) は、管理者権限を持つユーザーです。詳細については、『IAM User Guide ガイド』の「IAM ベストプラクティス」を参照してください。

アクセス許可を付与するときは、アクセス許可を取得するユーザー、アクセスできるリソース、およびそれらのリソースに対して実行できるアクションを決定します。

CodeBuild リソースおよびオペレーション

AWS CodeBuild で、プライマリリソースはビルドプロジェクトです。ポリシーで Amazon リソースネーム (ARN) を使用して、ポリシーを適用するリソースを識別します。ビルドもリソースで、ARN が関連付けられています。詳細については、『Amazon Web Services General Reference』の「Amazon リソースネーム (ARN) と AWS サービスの名前空間」を参照してください。

リソースタイプ ARN 形式
ビルドプロジェクト

arn:aws:codebuild:region-ID:account-ID:project/project-name

ビルド

arn:aws:codebuild:region-ID:account-ID:build/build-ID

すべての CodeBuild リソース

arn:aws:codebuild:*

特定リージョンの特定アカウントが所有するすべての CodeBuild リソース

arn:aws:codebuild:region-ID:account-ID:*

注記

AWS のほとんどのサービスでは、ARN 内のコロン (:) またはスラッシュ (/) は同じ文字として扱われます。ただし、CodeBuild では、リソースパターンとルールで完全一致が使用されます。イベントパターンの作成時に正しい文字を使用して、リソース内の ARN 構文とそれらの文字が一致する必要があります。

たとえば、以下のように ARN を使用して、ステートメント内で特定のビルドプロジェクト (myBuildProject) を指定できます。

"Resource": "arn:aws:codebuild:us-east-2:123456789012:project/myBuildProject"

すべてのリソースを指定する場合、または API アクションが ARN をサポートしていない場合は、以下の要領で、Resource エレメント内でワイルドカード文字 (*) を使用します。

"Resource": "*"

一部の CodeBuild API アクションは複数のリソースを受け入れます (例: BatchGetProjects)。単一のステートメントに複数のリソースを指定するには、以下のようにコンマで ARN を区切ります。

"Resource": [ "arn:aws:codebuild:us-east-2:123456789012:project/myBuildProject", "arn:aws:codebuild:us-east-2:123456789012:project/myOtherBuildProject" ]

CodeBuild には、CodeBuild リソースを操作するための一連のオペレーションが用意されています。リストについては、「CodeBuild の権限リファレンス」を参照してください。

リソース所有権について

AWS アカウントは、誰がリソースを作成したかにかかわらず、アカウントで作成されたリソースを所有します。具体的には、リソース所有者は、リソースの作成リクエストを認証するプリンシパルエンティティ (ルートアカウント、IAM ユーザー、または IAM ロール) の AWS アカウントです。以下の例では、このしくみを示しています。

  • AWS アカウントのルートアカウントの認証情報を使用してルールを作成する場合、AWS アカウントは CodeBuild リソースの所有者です。

  • AWS アカウントに IAM ユーザーを作成し、そのユーザーに CodeBuild リソースを作成するアクセス許可を付与する場合、そのユーザーは CodeBuild リソースを作成できます。ただし、ユーザーが属する AWS アカウントは CodeBuild リソースを所有しているとします。

  • CodeBuild リソースを作成するためのアクセス許可を持つ AWS アカウントに IAM ロールを作成する場合は、ロールを引き受けることのできるいずれのユーザーも CodeBuild リソースを作成できます。ロールが属する AWS アカウントは CodeBuild リソースを所有しているとします。

リソースへのアクセスの管理

アクセスポリシーでは、誰がどのリソースにアクセスできるかを記述します。

注記

このセクションでは、AWS CodeBuild での IAM の使用について説明します。これは、IAM サービスに関する詳細情報を取得できません。完全な IAM ドキュメントについては、『IAM User Guide ガイド』の「IAM とは」を参照してくださいIAM ポリシー構文の詳細および説明については、『IAM User Guide ガイド』の「AWS IAM ポリシーのリファレンス」を参照してください。

IAM アイデンティティにアタッチされているポリシーは、アイデンティティベースのポリシー (IAM ポリシー) と呼ばれます。リソースにアタッチされたポリシーは、リソースベースのポリシーと呼ばれます。CodeBuild では、アイデンティティベース (IAM ポリシー) のみがサポートされています。

アイデンティティベースのポリシー

ポリシーを IAM アイデンティティにアタッチできます。

  • アカウントのユーザーまたはグループにアクセス許可ポリシーをアタッチする – ユーザーに、ビルドプロジェクトおよび CodeBuild コンソールの AWS CodeBuild リソースを表示するアクセス許可を付与するためには、ユーザーが所属するユーザーまたはグループにアクセス許可ポリシーをアタッチできます。

  • アクセス権限ポリシーをロールにアタッチする (クロスアカウントのアクセス権限を付与する) – アイデンティティベースのアクセス権限ポリシーを IAM ロールにアタッチして、クロスアカウントのアクセス権限を付与することができます。たとえば、アカウント A の管理者は、次のように別の AWS アカウント (たとえば、アカウント B) または AWS サービスにクロスアカウントアクセス許可を付与するロールを作成できます。

    1. アカウント A の管理者は、IAM ロールを作成して、アカウント A のリソースに権限を付与するロールに権限ポリシーをアタッチします。

    2. アカウント A の管理者は、アカウント B をそのロールを引き受けるプリンシパルとして識別するロールに、信頼ポリシーをアタッチします。

    3. アカウント B の管理者は、アカウント B の任意のユーザーにロールを引き受けるアクセス許可を委任できるようになります。これにより、アカウント B のユーザーにアカウント A のリソースの作成とアクセスが許可されます。AWS サービスのアクセス許可を付与してロールを引き受けさせたい場合は、信頼ポリシー内のプリンシパルも、AWS サービスのプリンシパルである必要があります。

    IAM を使用したアクセス許可の委任の詳細については、『IAM User Guide ガイド』の「アクセス管理」を参照してください。

CodeBuild で、アイデンティティベースのポリシーは、デプロイプロセスに関連するリソースに対するアクセス許可を管理するために使用されます。たとえば、ビルドプロジェクトへのアクセスを制御できます。

お客様のアカウントのユーザーがアクセスを許可される呼び出しとリソースを制限する IAM ポリシーを作成し、IAM ユーザーにそれらのポリシーをアタッチできます。IAM ロールを作成する方法、および CodeBuild の IAM ポリシーステートメントの例を調べる方法の詳細については、「CodeBuild リソースへのアクセス権限の管理の概要」を参照してください。

Amazon S3 バケットへのセキュアなアクセス

お客様の CodeBuild プロジェクトに関連付けられている Amazon S3 バケットが本人、または信頼するユーザーによって所有されていることを確認するために、次のアクセス許可を IAM ロールに含めることを強くお勧めします。これらのアクセス許可は、AWS 管理ポリシーおよびロールには含まれていません。自分で追加する必要があります。

  • s3:GetBucketACL

  • s3:GetBucketLocation

プロジェクトで使用している Amazon S3 バケットの所有者が変更された場合は、現在も自分がバケットの所有者であることを確認し、変更されていない場合は、IAM ロールのアクセス許可を更新する必要があります。詳細については、「IAM グループまたは IAM ユーザーに CodeBuild アクセス許可を追加する」および「CodeBuild サービスロールを作成する」を参照してください。

ポリシー要素の指定 : アクション、効果、プリンシパル

サービスは、AWS CodeBuild リソースごとに一連の API オペレーションを定義します。こうした API オペレーションへのアクセス権限を付与するために、CodeBuild は一連のアクションをポリシーに定義します。一部の API オペレーションは、API オペレーションを実行するために複数のアクションに対するアクセス許可を要求できます。詳細については、「CodeBuild リソースおよびオペレーション」および「CodeBuild の権限リファレンス」を参照してください。

以下は、基本的なポリシーの要素です。

  • リソース – Amazon リソースネーム (ARN) を使用して、ポリシーを適用するリソースを識別します。

  • アクション – アクションのキーワードを使用して、許可または拒否するリソースオペレーションを識別します。たとえば、codebuild:CreateProject 権限は、CreateProject オペレーションを実行する権限をユーザーに与えます。

  • 効果 – ユーザーがアクションをリクエストする際の効果を指定します。許可または拒否のいずれかになります。リソースへのアクセスを明示的に許可していない場合、アクセスは暗黙的に拒否されます。リソースへのアクセスを明示的に拒否できます。これは、別のポリシーがアクセスを許可している場合でも、ユーザーがリソースにアクセスできないようにするために行うことができます。

  • プリンシパル – アイデンティティベースのポリシー (IAM ポリシー) で、ポリシーがアタッチされているユーザーが暗黙のプリンシパルとなります。リソースベースのポリシーでは、権限を受け取りたいユーザー、アカウント、サービス、またはその他のエンティティを指定します。

IAM ポリシーの構文と記述の詳細については、『IAM User Guide ガイド』の「AWS IAM ポリシーリファレンス」を参照してください。

すべての CodeBuild API アクションとそれらが適用されるリソースの表については、「CodeBuild の権限リファレンス」を参照してください。