View a markdown version of this page

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

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

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

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

注記

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

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

AWS CodeBuildリソースとオペレーション

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

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

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

Build

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

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

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

すべての CodeBuild リソース

arn:aws:codebuild:*

指定されたAWSリージョン内の指定されたアカウントが所有するすべての CodeBuild リソース

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

重要

リザーブドキャパシティ機能を使用すると、ソースファイル、Docker レイヤー、buildspec で指定されキャッシュされたディレクトリなどを含む、フリートインスタンスにキャッシュされたデータに、同じアカウント内の他のプロジェクトからアクセスできます。これは設計によるもので、同じアカウント内のプロジェクトがフリートインスタンスを共有できるようにしています。

注記

ほとんどのAWSサービスは、ARN でARNs。ただし、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 ロール) のAWSアカウントです。次の例は、この仕組みを示しています。

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

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

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

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

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

注記

このセクションでは、AWS CodeBuild での IAM の使用について説明します。ここでは、IAM サービスに関する詳細情報を提供しません。完全な IAM ドキュメンテーションについては、「IAM ユーザーガイド」の「IAM とは」を参照してください。IAM ポリシー構文の詳細と説明については、IAM ユーザーガイドAWS IAM ポリシーの参照を参照してください。

IAM アイデンティティにアタッチされているポリシーは、アイデンティティベースのポリシー (IAM ポリシー) と呼ばれます。リソースに添付されたポリシーは、リソースベースのポリシーと呼ばれます。CodeBuild は、アイデンティティベースのポリシーと、アカウント間のリソース共有を目的とした、特定の読み取り専用 API のリソースベースのポリシーをサポートしています。

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

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

  • s3:GetBucketAcl

  • s3:GetBucketLocation

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

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

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

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

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

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

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

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

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

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