AWS CodeBuild リソースへのアクセス許可の管理の概要 - AWS CodeBuild

AWS CodeBuild リソースへのアクセス許可の管理の概要

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

注記

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

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

AWS 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

レポートグループ arn:aws:codebuild:region-ID:account-ID:report-group/report-name
レポート arn:aws:codebuild:region-ID:account-ID:report/report-ID

すべての CodeBuild リソース

arn:aws:codebuild:*

特定の AWS リージョンの特定アカウントが所有するすべての 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 リソースを操作するための一連のオペレーションが用意されています。リストについては、「AWS 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 アイデンティティにアタッチできます。

  • アカウントのユーザーまたはグループにアクセス許可ポリシーをアタッチする – AWS 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 ポリシーステートメントの例を調べる方法の詳細については、「AWS CodeBuild リソースへのアクセス許可の管理の概要」を参照してください。

S3 バケットへの安全なアクセス

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

  • s3:GetBucketACL

  • s3:GetBucketLocation

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

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

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

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

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

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

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

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

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

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