翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS CodeBuild リソースへのアクセス許可の管理の概要
すべての AWS リソースは AWS アカウントによって所有され、リソースを作成またはアクセスするためのアクセス許可はアクセス許可ポリシーによって管理されます。アカウント管理者は、IAM アイデンティティ (ユーザー、グループ、ロール) にアクセス許可ポリシーをアタッチできます。
注記
アカウント管理者 (または管理者ユーザー) は、管理者権限を持つユーザーです。詳細については、IAM ユーザーガイドの[IAM のベストプラクティス]を参照してください。
アクセス許可を付与するときは、アクセス許可を取得するユーザー、アクセスできるリソース、およびそれらのリソースに対して実行できるアクションを決定します。
AWS CodeBuild リソースとオペレーション
では AWS CodeBuild、プライマリリソースはビルドプロジェクトです。ポリシーで Amazon リソースネーム (ARN) を使用して、ポリシーを適用するリソースを識別します。ビルドもリソースで、ARN が関連付けられています。詳細については、『』の「Amazon リソースネーム (ARN) と AWS サービス名前空間」を参照してくださいAmazon Web Services 全般のリファレンス。
リソースタイプ | ARN 形式 |
---|---|
ビルドプロジェクト |
|
Build |
|
レポートグループ | arn:aws:codebuild: |
レポート | arn:aws:codebuild: |
フリート |
|
すべての CodeBuild リソース |
|
指定された AWS リージョン内の指定されたアカウントが所有するすべての CodeBuild リソース |
|
重要
リザーブドキャパシティ機能を使用すると、ソースファイル、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 アクセス許可リファレンス」を参照してください。