

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

# のセキュリティ AWS CodeBuild
<a name="security"></a>

のクラウドセキュリティが最優先事項 AWS です。お客様は AWS 、セキュリティを最も重視する組織の要件を満たすように構築されたデータセンターとネットワークアーキテクチャからメリットを得られます。

セキュリティは、 AWS とお客様の間の責任共有です。[責任共有モデル](https://aws.amazon.com/compliance/shared-responsibility-model/)では、これをクラウドのセキュリティおよびクラウド内のセキュリティとして説明しています。
+ **クラウドのセキュリティ** – AWS は、 で AWS サービスを実行するインフラストラクチャを保護する責任を担います AWS クラウド。 は、お客様が安全に使用できるサービス AWS も提供します。サードパーティーの監査人は、[AWS コンプライアンスプログラム](https://aws.amazon.com/compliance/programs/) の一環として、セキュリティの有効性を定期的にテストおよび検証します。が適用されるコンプライアンスプログラムの詳細については AWS CodeBuild、[AWS 「コンプライアンスプログラムによる対象範囲内のサービス](https://aws.amazon.com/compliance/services-in-scope/)」を参照してください。
+ **クラウド内のセキュリティ** – お客様の責任は、使用する AWS サービスによって決まります。また、お客様は、お客様のデータの機密性、企業の要件、および適用可能な法律および規制などの他の要因についても責任を担います。

このドキュメントは、CodeBuild を使用する際の責任共有モデルの適用方法を理解するのに役立ちます。以下のトピックでは、セキュリティおよびコンプライアンスの目的を達成するように CodeBuild を設定する方法について説明します。また、CodeBuild リソースのモニタリングや保護に役立つ他の AWS サービスの使用方法についても説明します。

**Topics**
+ [

# でのデータ保護 AWS CodeBuild
](data-protection.md)
+ [

# での ID とアクセスの管理 AWS CodeBuild
](auth-and-access-control.md)
+ [

# のコンプライアンス検証 AWS CodeBuild
](compliance-validation.md)
+ [

# の耐障害性 AWS CodeBuild
](codebuild-disaster-recovery-resiliency.md)
+ [

# のインフラストラクチャセキュリティ AWS CodeBuild
](infrastructure-security.md)
+ [

# CodeBuild でソースプロバイダにアクセスする
](access-tokens.md)
+ [

# サービス間での不分別な代理処理の防止
](cross-service-confused-deputy-prevention.md)

# でのデータ保護 AWS CodeBuild
<a name="data-protection"></a>

責任 AWS [共有モデル](https://aws.amazon.com/compliance/shared-responsibility-model/)、 でのデータ保護に適用されます AWS CodeBuild。このモデルで説明されているように、 AWS はすべての を実行するグローバルインフラストラクチャを保護する責任があります AWS クラウド。ユーザーは、このインフラストラクチャでホストされるコンテンツに対する管理を維持する責任があります。また、使用する「 AWS のサービス 」のセキュリティ設定と管理タスクもユーザーの責任となります。データプライバシーの詳細については、[データプライバシーに関するよくある質問](https://aws.amazon.com/compliance/data-privacy-faq/)を参照してください。欧州でのデータ保護の詳細については、*AWS セキュリティブログ*に投稿された「[AWS 責任共有モデルおよび GDPR](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-gdpr/)」のブログ記事を参照してください。

データ保護の目的で、認証情報を保護し AWS アカウント 、 AWS IAM アイデンティティセンター または AWS Identity and Access Management (IAM) を使用して個々のユーザーを設定することをお勧めします。この方法により、それぞれのジョブを遂行するために必要な権限のみが各ユーザーに付与されます。また、次の方法でデータを保護することもお勧めします:
+ 各アカウントで多要素認証 (MFA) を使用します。
+ SSL/TLS を使用して AWS リソースと通信します。TLS 1.2 は必須ですが、TLS 1.3 を推奨します。
+ で API とユーザーアクティビティのログ記録を設定します AWS CloudTrail。CloudTrail 証跡を使用して AWS アクティビティをキャプチャする方法については、「 *AWS CloudTrail ユーザーガイド*」の[CloudTrail 証跡の使用](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-trails.html)」を参照してください。
+  AWS 暗号化ソリューションと、その中のすべてのデフォルトのセキュリティコントロールを使用します AWS のサービス。
+ Amazon Macie などの高度な管理されたセキュリティサービスを使用します。これらは、Amazon S3 に保存されている機密データの検出と保護を支援します。
+ コマンドラインインターフェイスまたは API AWS を介して にアクセスするときに FIPS 140-3 検証済みの暗号化モジュールが必要な場合は、FIPS エンドポイントを使用します。利用可能な FIPS エンドポイントの詳細については、「[連邦情報処理規格 (FIPS) 140-3](https://aws.amazon.com/compliance/fips/)」を参照してください。

お客様の E メールアドレスなどの極秘または機密情報を、タグ、または **[名前]** フィールドなどの自由形式のテキストフィールドに含めないことを強くお勧めします。これは、コンソール、API、または SDK を使用して CodeBuild AWS CLIまたは他の AWS のサービス を操作する場合も同様です。 AWS SDKs タグ、または名前に使用される自由記述のテキストフィールドに入力したデータは、請求または診断ログに使用される場合があります。外部サーバーに URL を提供する場合、そのサーバーへのリクエストを検証できるように、認証情報を URL に含めないことを強くお勧めします。

 機密情報を保護するために、CodeBuild ログでは次の情報が非表示になっています。
+  CodeBuild プロジェクト環境変数のパラメータストアまたは buildspec の `env/parameter-store` セクションを使用して指定した文字列。詳細については、*Amazon EC2 Systems Managerユーザーガイド*の「[Systems Manager パラメータストア](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-paramstore.html)」および「[Systems Manager パラメータストアコンソールのチュートリアル](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-walk.html#sysman-paramstore-console)」を参照してください。
+  CodeBuild プロジェクト環境変数または buildspec `env/secrets-manager`セクション AWS Secrets Manager で を使用して指定された文字列。詳細については、「[キー管理](security-key-management.md)」を参照してください。

データ保護の詳細については、*AWS セキュリティブログ*のブログ投稿「[AWS の責任共有モデルと GDPR](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-gdpr/)」を参照してください。

**Topics**
+ [

# データの暗号化
](security-encryption.md)
+ [

# キー管理
](security-key-management.md)
+ [

# トラフィックのプライバシー
](security-traffic-privacy.md)

# データの暗号化
<a name="security-encryption"></a>

暗号化は CodeBuild セキュリティの重要な部分です。一部の暗号化 (伝送中のデータの暗号化など) はデフォルトで提供されるため、特に操作は不要です。その他の暗号化 (保管時のデータの暗号化など) については、プロジェクトまたはビルドの作成時に設定できます。
+ **保管時のデータの暗号化** - キャッシュ、ログ、エクスポートされた生のテストレポートデータファイル、ビルド結果などのビルドアーティファクトは、デフォルトで を使用して暗号化されます AWS マネージドキー。これらの KMS キーを使用しない場合は、カスタマー管理キーを作成して設定する必要があります。詳細については、*AWS Key Management Service ユーザーガイド*の「[KMS キーの作成](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html)」および「[AWS Key Management Service の概念](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html)」を参照してください。
  + CodeBuild がビルド出力アーティファクトを暗号化するために使用する AWS KMS キーの識別子を`CODEBUILD_KMS_KEY_ID`環境変数に保存できます。詳細については、[ビルド環境の環境変数](build-env-ref-env-vars.md)を参照してください。
  + ビルドプロジェクトの作成時にカスタマー管理キーを指定できます。詳細については、「[Set the Encryption Key Using the Console](create-project.md#encryptionkey-console)」および「[CLI を使用して暗号化キーを設定する](create-project.md#cli.encryptionkey)」を参照してください。

  ビルドフリートの Amazon Elastic Block Store ボリュームは、デフォルトで を使用して暗号化されます AWS マネージドキー。
+ **転送時のデータの暗号化** - カスタマーと CodeBuild とのすべての通信、および CodeBuild とそのダウンストリーム依存関係とのすべての通信は、署名バージョン 4 の署名プロセスで署名された TLS 接続を使用して保護されます。すべての CodeBuild エンドポイントは、 によって管理される SHA-256 証明書を使用します AWS Private Certificate Authority。詳細については、「[署名バージョン 4 の署名プロセス](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html)」および「[ACM PCA とは](https://docs.aws.amazon.com/privateca/latest/userguide/)」を参照してください。
+ **ビルドアーティファクトの暗号化** - プロジェクトに関連付けられた CodeBuild サービスロールには、そのビルド出力アーティファクトを暗号化するために、KMS キーへのアクセス権が必要です。デフォルトでは、CodeBuild は AWS アカウントで Amazon S3 AWS マネージドキー の を使用します。この AWS マネージドキーを使用しない場合は、カスタマー管理キーを作成して設定する必要があります。詳細については、「[ビルド出力を暗号化](setting-up-kms.md)」および *AWS KMS デベロッパーガイド*の「[Creating Keys](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html)」を参照してください。

# キー管理
<a name="security-key-management"></a>

暗号化によりコンテンツを不正使用から保護できます。暗号化キーを に保存し AWS Secrets Manager、ビルドプロジェクトに関連付けられた CodeBuild サービスロールに、Secrets Manager アカウントから暗号化キーを取得するアクセス許可を付与します。詳細については、「[カスタマーマネージドキーを使用してビルド出力を暗号化](setting-up-kms.md)」、「[でのビルドプロジェクトの作成AWS CodeBuild](create-project.md)」、[AWS CodeBuild ビルドを手動で実行する](run-build.md)」、「[チュートリアル: シークレットの保存と取得](https://docs.aws.amazon.com/secretsmanager/latest/userguide/tutorials_basic.html)」を参照してください。

ビルドコマンドで `CODEBUILD_KMS_KEY_ID`環境変数を使用して、 AWS KMS キー識別子を取得します。詳細については、「[ビルド環境の環境変数](build-env-ref-env-vars.md)」を参照してください。

ランタイム環境用の Docker イメージを保存するプライベートレジストリへの認証情報を保護するには、Secrets Manager を使用できます。詳細については、「[CodeBuild AWS Secrets Manager のサンプルを含むプライベートレジストリ](sample-private-registry.md)」を参照してください。

# トラフィックのプライバシー
<a name="security-traffic-privacy"></a>

インターフェイス VPC エンドポイントを使用するように CodeBuild を設定することで、ビルドのセキュリティを強化できます。これを行う場合、インターネットゲートウェイ、NAT デバイス、または仮想プライベートゲートウェイは必要ありません。また、PrivateLink の設定も必須ではありません (ただし、お勧めします)。詳細については、「[VPC エンドポイントの使用](use-vpc-endpoints-with-codebuild.md)」を参照してください。PrivateLink および VPC エンドポイントの詳細については、「[AWS PrivateLink](https://aws.amazon.com/privatelink/)」および「[PrivateLink を介した AWS のサービスへのアクセス](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Introduction.html#what-is-privatelink)」を参照してください。

# での ID とアクセスの管理 AWS CodeBuild
<a name="auth-and-access-control"></a>

へのアクセスには認証情報 AWS CodeBuild が必要です。これらの認証情報には、S3 バケットへのビルドアーティファクトの保存と取得、ビルドの Amazon CloudWatch Logs の表示など、 AWS リソースへのアクセス許可が必要です。以下のセクションでは、[AWS Identity and Access Management](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) (IAM) と CodeBuild を使用してリソースに安全にアクセスする方法について説明します。

# AWS CodeBuild リソースへのアクセス許可の管理の概要
<a name="auth-and-access-control-iam-access-control-identity-based"></a>

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

**注記**  
アカウント管理者 (または管理者ユーザー) は、管理者権限を持つユーザーです。詳細については、*IAM ユーザーガイド*の[[IAM のベストプラクティス]](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)を参照してください。

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

**Topics**
+ [

## AWS CodeBuild リソースとオペレーション
](#arn-formats)
+ [

## リソース所有権についての理解
](#understanding-resource-ownership)
+ [

## リソースへのアクセスの管理
](#managing-access-resources)
+ [

## ポリシー要素 (アクション、効果、プリンシパル) の指定
](#actions-effects-principals)

## AWS CodeBuild リソースとオペレーション
<a name="arn-formats"></a>

では AWS CodeBuild、プライマリリソースはビルドプロジェクトです。ポリシーで Amazon リソースネーム (ARN) を使用して、ポリシーを適用するリソースを識別します。ビルドもリソースで、ARN が関連付けられています。詳細については、の[「Amazon リソースネーム (ARN) と AWS サービス名前空間](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)」を参照してください*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` エレメント内でワイルドカード文字 (\$1) を使用します。

```
"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 アクセス許可リファレンス](auth-and-access-control-permissions-reference.md)」を参照してください。

## リソース所有権についての理解
<a name="understanding-resource-ownership"></a>

 AWS アカウントは、リソースを作成したユーザーに関係なく、アカウントで作成されたリソースを所有します。具体的には、リソース所有者は、リソース作成リクエストを認証する[プリンシパルエンティティ](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html) (ルートアカウント、 ユーザー、または IAM ロール) の AWS アカウントです。次の例は、この仕組みを示しています。
+  AWS アカウントのルートアカウントの認証情報を使用してルールを作成する場合、 AWS アカウントは CodeBuild リソースの所有者です。
+  AWS アカウントに ユーザーを作成し、そのユーザーに CodeBuild リソースを作成するアクセス許可を付与すると、そのユーザーは CodeBuild リソースを作成できます。ただし、ユーザーが属する AWS アカウントは CodeBuild リソースを所有します。
+ CodeBuild リソースを作成するアクセス許可を持つ AWS IAM ロールをアカウントに作成する場合、ロールを引き受けることができるすべてのユーザーが CodeBuild リソースを作成できます。ロールが属する AWS アカウントが CodeBuild リソースを所有しています。

## リソースへのアクセスの管理
<a name="managing-access-resources"></a>

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

**注記**  
このセクションでは、 AWS CodeBuildでの IAM の使用について説明します。ここでは、IAM サービスに関する詳細情報を提供しません。完全な IAM ドキュメンテーションについては、「*IAM ユーザーガイド*」の「[IAM とは](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)」を参照してください。IAM ポリシー構文の詳細と説明については、*IAM ユーザーガイド*の [AWS IAM ポリシーの参照](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html)を参照してください。

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

### S3 バケットへの安全なアクセス
<a name="secure-s3-buckets"></a>

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

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

## ポリシー要素 (アクション、効果、プリンシパル) の指定
<a name="actions-effects-principals"></a>

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

以下は、基本的なポリシーの要素です。
+ **リソース** - Amazon リソースネーム (ARN) を使用して、ポリシーを適用するリソースを識別します。
+ **アクション** – アクションのキーワードを使用して、許可または拒否するリソースオペレーションを識別します。たとえば、`codebuild:CreateProject` 許可は、`CreateProject` オペレーションを実行する許可をユーザーに与えます。
+ **効果** - ユーザーがアクションをリクエストする際の効果を指定します。許可または拒否のいずれかになります。リソースへのアクセスを明示的に許可していない場合、アクセスは暗黙的に拒否されます。リソースへのアクセスを明示的に拒否することもできます。これは、別のポリシーがアクセスを許可している場合でも、ユーザーがリソースにアクセスできないようにするために行うことができます。
+ **プリンシパル** - アイデンティティベースのポリシー (IAM ポリシー) で、ポリシーがアタッチされているユーザーが黙示的なプリンシパルとなります。リソースベースのポリシーでは、権限を受け取りたいユーザー、アカウント、サービス、またはその他のエンティティを指定します。

IAM ポリシーの構文と記述の詳細については、「*IAM ユーザーガイド*」の「[AWS IAM ポリシーリファレンス](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html)」を参照してください。

すべての CodeBuild API アクションとそれらが適用されるリソースの表については、「[AWS CodeBuild アクセス許可リファレンス](auth-and-access-control-permissions-reference.md)」を参照してください。

# でのアイデンティティベースのポリシーの使用 AWS CodeBuild
<a name="auth-and-access-control-iam-identity-based-access-control"></a>

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

**重要**  
初めに、CodeBuild リソースへのアクセスを管理するための基本概念と、使用可能なオプションについて説明する概要トピックをお読みになることをお勧めします。詳細については、「[AWS CodeBuild リソースへのアクセス許可の管理の概要](auth-and-access-control-iam-access-control-identity-based.md)」を参照してください。

**Topics**
+ [

## AWS CodeBuild コンソールを使用するために必要なアクセス許可
](#console-permissions)
+ [

## が Amazon Elastic Container Registry に接続 AWS CodeBuild するために必要なアクセス許可
](#ecr-policies)
+ [

## AWS CodeBuild コンソールがソースプロバイダーに接続するために必要なアクセス許可
](#console-policies)
+ [

## AWS の マネージド (事前定義) ポリシー AWS CodeBuild
](#managed-policies)
+ [

## CodeBuild の管理ポリシーと通知
](#notifications-permissions)
+ [

## AWS マネージドポリシーに対する CodeBuild の更新
](#security-iam-awsmanpol-updates)
+ [

## カスタマー管理ポリシーの例
](#customer-managed-policies)

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

------
#### [ JSON ]

****  

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

------

## AWS CodeBuild コンソールを使用するために必要なアクセス許可
<a name="console-permissions"></a>

 AWS CodeBuild コンソールを使用するユーザーには、 AWS アカウントの他の AWS リソースを記述できる最小限のアクセス許可セットが必要です。次のサービスからのアクセス許可を持っている必要があります。
+ AWS CodeBuild
+ Amazon CloudWatch
+ CodeCommit (ソースコードを AWS CodeCommit リポジトリに保存している場合)
+ Amazon Elastic Container Registry (Amazon ECR) (Amazon ECR リポジトリの Docker イメージに依存するビルド環境を使用している場合)
**注記**  
2022 年 7 月 26 日に、デフォルトの IAM ポリシーが更新されました。詳細については、「[が Amazon Elastic Container Registry に接続 AWS CodeBuild するために必要なアクセス許可](#ecr-policies)」を参照してください。
+ 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 ポリシーを作成している場合、コンソールは意図したとおりには機能しません。

## が Amazon Elastic Container Registry に接続 AWS CodeBuild するために必要なアクセス許可
<a name="ecr-policies"></a>

2022 年 7 月 26 日現在、 AWS CodeBuild は Amazon ECR アクセス許可のデフォルトの IAM ポリシーを更新しました。次のアクセス許可がデフォルトポリシーから削除されました。

```
"ecr:PutImage",
"ecr:InitiateLayerUpload",
"ecr:UploadLayerPart",
"ecr:CompleteLayerUpload"
```

2022 年 7 月 26 日より前に作成された CodeBuild プロジェクトについては、次の Amazon ECR ポリシーでポリシーを更新することをお勧めします。

```
"Action": [
    "ecr:BatchCheckLayerAvailability",
    "ecr:GetDownloadUrlForLayer",
    "ecr:BatchGetImage"
]
```

ポリシーの更新の詳細については、「[ユーザーに CodeBuild とのやり取りを許可](setting-up-service-permissions-group.md)」を参照してください。

## AWS CodeBuild コンソールがソースプロバイダーに接続するために必要なアクセス許可
<a name="console-policies"></a>

 AWS CodeBuild コンソールでは、次の API アクションを使用してソースプロバイダー (GitHub リポジトリなど) に接続します。
+ `codebuild:ListConnectedOAuthAccounts`
+ `codebuild:ListRepositories`
+ `codebuild:PersistOAuthToken`
+ `codebuild:ImportSourceCredentials`

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

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

## AWS の マネージド (事前定義) ポリシー AWS CodeBuild
<a name="managed-policies"></a>

AWS は、 によって作成および管理されるスタンドアロン IAM ポリシーを提供することで、多くの一般的なユースケースに対処します AWS。これらの AWS 管理ポリシーは、一般的なユースケースに必要なアクセス許可を付与するため、必要なアクセス許可を調査する必要がなくなります。CodeBuild の マネージドポリシーは、問題のポリシーが付与されたユーザーの責任に応じて、IAM、 AWS CodeCommit、Amazon EC2、Amazon ECR、Amazon SNS、Amazon CloudWatch Events などの他のサービスでオペレーションを実行するアクセス許可も提供します。たとえば、`AWSCodeBuildAdminAccess` ポリシーは管理レベルのユーザーポリシーであり、このポリシーが適用されるユーザーは、プロジェクトのビルドに関する CloudWatch Events ルールと、プロジェクト関連イベントに関する通知の Amazon SNS トピック (名前にプレフィックス `arn:aws:codebuild:` が付いているトピック) を作成および管理でき、また、CodeBuild でプロジェクトとレポートグループを管理できます。詳細については、「IAM ユーザーガイド」の「[AWS マネージドポリシー](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies)」を参照してください。

アカウントのユーザーにアタッチできる次の AWS 管理ポリシーは、 に固有です AWS CodeBuild。

**AWSCodeBuildAdminAccess**  
CodeBuild ビルドプロジェクトを管理するためのアクセス許可を含む CodeBuild へのフルアクセスを提供します。

**AWSCodeBuildDeveloperAccess**  
CodeBuild へのアクセスを提供しますが、ビルドプロジェクトの管理は許可しません。

**AWSCodeBuildReadOnlyAccess**  
CodeBuild への読み取り専用アクセスを許可します。

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

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

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

**Topics**
+ [

### AWSCodeBuildAdminAccess
](#admin-access-policy)
+ [

### AWSCodeBuildDeveloperAccess
](#developer-access-policy)
+ [

### AWSCodeBuildReadOnlyAccess
](#read-only-access-policy)

### AWSCodeBuildAdminAccess
<a name="admin-access-policy"></a>

「`AWSCodeBuildAdminAccess`」ポリシーは、CodeBuild へのフルアクセスを許可します。たとえば、ビルドプロジェクトを管理するアクセス許可を付与します。このポリシーは、管理者レベルのユーザーにのみ適用し、プロジェクトやレポートグループを削除する機能など、 AWS アカウント内の CodeBuild プロジェクト、レポートグループ、および関連リソースを完全に制御できるようにします。

完全な管理ポリシーについては、IAM 管理ポリシーリファレンスの[AWSCodeBuildAdminAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSCodeBuildAdminAccess.html)」を参照してください。

### AWSCodeBuildDeveloperAccess
<a name="developer-access-policy"></a>

`AWSCodeBuildDeveloperAccess` ポリシーの CodeBuild のすべての機能へのアクセス、プロジェクトおよびレポートグループの関連リソースへのアクセスを許可します。このポリシーでは、ユーザーが CodeBuild プロジェクトやレポートグループ、または CloudWatch Events などの他の AWS サービスの関連リソースを削除することはできません。ほとんどのユーザーにこのポリシーを適用することをお勧めします。

完全なマネージドポリシーについては、IAM マネージドポリシーリファレンスの[AWSCodeBuildDeveloperAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSCodeBuildDeveloperAccess.html)」を参照してください。

### AWSCodeBuildReadOnlyAccess
<a name="read-only-access-policy"></a>

この`AWSCodeBuildReadOnlyAccess`ポリシーは、CodeBuild および他の AWS サービスの関連リソースへの読み取り専用アクセスを許可します。ビルドの表示と実行、プロジェクトの表示、レポートグループの表示はできるが、それらの変更はできないユーザーにこのポリシーを適用します。

完全な管理ポリシーについては、IAM 管理ポリシーリファレンスの[AWSCodeBuildReadOnlyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSCodeBuildReadOnlyAccess.xml)」を参照してください。

## CodeBuild の管理ポリシーと通知
<a name="notifications-permissions"></a>

CodeBuild は、ビルドプロジェクトへの重要な変更をユーザーに知らせることができる通知機能をサポートしています。CodeBuild の管理ポリシーには、通知機能のポリシーステートメントが含まれます。詳細については、[通知とは](https://docs.aws.amazon.com/codestar-notifications/latest/userguide/welcome.html) を参照してください。

### 読み取り専用マネージドポリシーの通知に関連するアクセス許可
<a name="notifications-readonly"></a>

`AWSCodeBuildReadOnlyAccess` 管理ポリシーには、通知への読み取り専用アクセスを許可する以下のステートメントが含まれています。この管理ポリシーが適用されたユーザーは、リソースの通知を表示することはできますが、リソースの作成や管理、リソースへのサブスクライブを行うことはできません。

```
   {
        "Sid": "CodeStarNotificationsPowerUserAccess",
        "Effect": "Allow",
        "Action": [
            "codestar-notifications:DescribeNotificationRule"
        ],
        "Resource": "*",
        "Condition" : {
            "ArnLike" : {"codestar-notifications:NotificationsForResource" : "arn:aws:codebuild:*:*:project/*"}
        }
    },    
    {
        "Sid": "CodeStarNotificationsListAccess",
        "Effect": "Allow",
        "Action": [
            "codestar-notifications:ListNotificationRules",
            "codestar-notifications:ListEventTypes",
            "codestar-notifications:ListTargets"
        ],
        "Resource": "*"
    }
```

### その他の管理ポリシーの通知に関連するアクセス許可
<a name="notifications-otheraccess"></a>

`AWSCodeBuildDeveloperAccess` 管理ポリシーには、ユーザーが通知を作成、編集、サブスクライブできるようにする次のステートメントが含まれています。ユーザーは通知ルールを削除したり、リソースのタグを管理したりすることはできません。

```
    {
        "Sid": "CodeStarNotificationsReadWriteAccess",
        "Effect": "Allow",
        "Action": [
            "codestar-notifications:CreateNotificationRule",
            "codestar-notifications:DescribeNotificationRule",
            "codestar-notifications:UpdateNotificationRule",
            "codestar-notifications:Subscribe",
            "codestar-notifications:Unsubscribe"
        ],
        "Resource": "*",
        "Condition" : {
            "ArnLike" : {"codestar-notifications:NotificationsForResource" : "arn:aws:codebuild:*:*:project/*"}
        }
    },    
    {
        "Sid": "CodeStarNotificationsListAccess",
        "Effect": "Allow",
        "Action": [
            "codestar-notifications:ListNotificationRules",
            "codestar-notifications:ListTargets",
            "codestar-notifications:ListTagsforResource",
            "codestar-notifications:ListEventTypes"
        ],
        "Resource": "*"
    },
    {
        "Sid": "SNSTopicListAccess",
        "Effect": "Allow",
        "Action": [
            "sns:ListTopics"
        ],
        "Resource": "*"
    },
    {
        "Sid": "CodeStarNotificationsChatbotAccess",
        "Effect": "Allow",
        "Action": [
            "chatbot:DescribeSlackChannelConfigurations",
            "chatbot:ListMicrosoftTeamsChannelConfigurations"
          ],
       "Resource": "*"
    }
```

IAM と通知の詳細については、「[AWS CodeStar Notifications の Identity and Access Management](https://docs.aws.amazon.com/codestar-notifications/latest/userguide/security-iam.html)」を参照してください。

## AWS マネージドポリシーに対する CodeBuild の更新
<a name="security-iam-awsmanpol-updates"></a>

このサービスがこれらの変更の追跡を開始してからの CodeBuild の AWS マネージドポリシーの更新に関する詳細を表示します。このページの変更に関する自動通知については、[AWS CodeBuild ユーザーガイドのドキュメント履歴](history.md) の RSS フィードを購読してください。




| 変更 | 説明 | 日付 | 
| --- | --- | --- | 
|  `AWSCodeBuildAdminAccess` と `AWSCodeBuildDeveloperAccess` – 既存のポリシーに対する更新  |  CodeBuild は、Session Manager のインタラクティブビルドデバッグをサポートするために、これらのポリシーにアクセス`ssmmessages:OpenDataChannel`許可を追加しました。 `AWSCodeBuildAdminAccess` および `AWSCodeBuildDeveloperAccess`ポリシーに、この WebSocket API での SigV4 適用をサポートする Session Manager セッションリソース (`arn:aws:ssm:*:*:session/*`) の `ssmmessages:OpenDataChannel`アクションが含まれるようになりました。  | 2025 年 12 月 1 日 | 
|  `AWSCodeBuildAdminAccess`、`AWSCodeBuildDeveloperAccess` および `AWSCodeBuildReadOnlyAccess` - 既存のポリシーに対する更新  |  CodeBuild がリソースをこれらのポリシーに更新しました。 `AWSCodeBuildAdminAccess`、`AWSCodeBuildDeveloperAccess`、および `AWSCodeBuildReadOnlyAccess` ポリシーが変更され、既存のリソースが更新されました。元のリソース `arn:aws:codebuild:*` が `arn:aws:codebuild:*:*:project/*` に更新されました。  | 2024 年 11 月 15 日 | 
|  `AWSCodeBuildAdminAccess`、`AWSCodeBuildDeveloperAccess` および `AWSCodeBuildReadOnlyAccess` - 既存のポリシーに対する更新  |  CodeBuild は、ブランド AWS CodeConnections 変更をサポートするために、これらのポリシーにリソースを追加しました。 `AWSCodeBuildAdminAccess`、`AWSCodeBuildDeveloperAccess`、および `AWSCodeBuildReadOnlyAccess` ポリシーが変更され、リソース `arn:aws:codeconnections:*:*:*` が追加されました。  | 2024 年 4 月 18 日 | 
|  `AWSCodeBuildAdminAccess` と `AWSCodeBuildDeveloperAccess` - 既存のポリシーに対する更新  |  CodeBuild はこれらのポリシーにアクセス許可を追加し、Amazon Q Developer in chat applications を使用して、追加の通知タイプをサポートするようになりました。 `AWSCodeBuildAdminAccess` および `AWSCodeBuildDeveloperAccess` ポリシーが変更され、アクセス許可 `chatbot:ListMicrosoftTeamsChannelConfigurations` が追加されました。  | 2023 年 5 月 16 日 | 
|  CodeBuild が変更の追跡を開始しました  |  CodeBuild は、 AWS 管理ポリシーの変更の追跡を開始しました。  | 2021 年 5 月 16 日 | 

## カスタマー管理ポリシーの例
<a name="customer-managed-policies"></a>

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

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

**Topics**
+ [

### ビルドプロジェクトに関する情報の取得をユーザーに許可する
](#customer-managed-policies-example-batch-get-projects)
+ [

### フリートに関する情報の取得をユーザーに許可
](#customer-managed-policies-get-information-about-fleets)
+ [

### レポートグループに関する情報の取得をユーザーに許可する
](#customer-managed-policies-get-information-about-report-group)
+ [

### レポートに関する情報の取得をユーザーに許可する
](#customer-managed-policies-get-information-about-reports)
+ [

### ビルドプロジェクトの作成をユーザーに許可する
](#customer-managed-policies-example-create-project)
+ [

### フリートの作成をユーザーに許可
](#customer-managed-policies-example-create-fleet)
+ [

### レポートグループの作成をユーザーに許可する
](#customer-managed-policies-example-create-report-group)
+ [

### フリートの削除をユーザーに許可
](#customer-managed-policies-example-delete-fleet)
+ [

### レポートグループの削除をユーザーに許可する
](#customer-managed-policies-example-delete-report-group)
+ [

### レポートの削除をユーザーに許可する
](#customer-managed-policies-example-delete-report)
+ [

### ビルドプロジェクトの削除をユーザーに許可する
](#customer-managed-policies-example-delete-project)
+ [

### ビルドプロジェクト名の一覧表示をユーザーに許可する
](#customer-managed-policies-example-list-projects)
+ [

### ビルドプロジェクトに関する情報の変更をユーザーに許可する
](#customer-managed-policies-example-update-project)
+ [

### フリートの変更をユーザーに許可
](#customer-managed-policies-example-change-fleet)
+ [

### レポートグループの変更をユーザーに許可する
](#customer-managed-policies-example-change-report-group)
+ [

### ビルドに関する情報の取得をユーザーに許可する
](#customer-managed-policies-example-batch-get-builds)
+ [

### ビルドプロジェクトのビルド ID の一覧表示をユーザーに許可する
](#customer-managed-policies-example-list-builds-for-project)
+ [

### ビルド ID の一覧表示をユーザーに許可する
](#customer-managed-policies-example-list-builds)
+ [

### フリートのリスト取得をユーザーに許可
](#customer-managed-policies-example-get-list-of-fleets)
+ [

### レポートグループの一覧表示をユーザーに許可する
](#customer-managed-policies-example-get-list-of-report-groups)
+ [

### レポートの一覧表示をユーザーに許可する
](#customer-managed-policies-example-get-list-of-reports)
+ [

### レポートグループのレポートの一覧表示をユーザーに許可する
](#customer-managed-policies-example-get-list-of-reports-for-report-group)
+ [

### レポートのテストケースの一覧表示をユーザーに許可する
](#customer-managed-policies-example-get-list-of-test-cases-for-report)
+ [

### ビルドの実行開始をユーザーに許可する
](#customer-managed-policies-example-start-build)
+ [

### ビルドの停止試行をユーザーに許可する
](#customer-managed-policies-example-stop-build)
+ [

### ビルドの削除試行をユーザーに許可する
](#customer-managed-policies-example-delete-builds)
+ [

### CodeBuild が管理する Docker イメージに関する情報の取得をユーザーに許可する
](#customer-managed-policies-example-list-curated-environment-images)
+ [

### フリートサービスロールのアクセス許可ポリシーを追加することをユーザーに許可
](#customer-managed-policies-example-permission-policy-fleet-service-role)
+ [

### VPC ネットワークインターフェイスの作成に必要な AWS サービスへの CodeBuild アクセスを許可する
](#customer-managed-policies-example-create-vpc-network-interface)
+ [

### 拒否ステートメントを使用して、 がソースプロバイダーから切断 AWS CodeBuild されないようにする
](#customer-managed-policies-example-deny-disconnect)

### ビルドプロジェクトに関する情報の取得をユーザーに許可する
<a name="customer-managed-policies-example-batch-get-projects"></a>

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

------
#### [ JSON ]

****  

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

------

### フリートに関する情報の取得をユーザーに許可
<a name="customer-managed-policies-get-information-about-fleets"></a>

次のポリシーステートメント例では、`123456789012` アカウントの `us-east-2` リージョンのフリートに関する情報をユーザーが取得できるようにします。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:BatchGetFleets",
      "Resource": "arn:aws:codebuild:us-east-2:111122223333:fleet/*"
    }
  ]
}
```

------

### レポートグループに関する情報の取得をユーザーに許可する
<a name="customer-managed-policies-get-information-about-report-group"></a>

次のポリシーステートメント例では、`us-east-2` リージョンにある `123456789012` アカウントのレポートグループについての情報をユーザーが取得するのを許可します。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:BatchGetReportGroups",
      "Resource": "arn:aws:codebuild:us-east-2:111122223333:report-group/*"
    }
  ]
}
```

------

### レポートに関する情報の取得をユーザーに許可する
<a name="customer-managed-policies-get-information-about-reports"></a>

次のポリシーステートメント例では、`123456789012` アカウントの `us-east-2` リージョンのレポートに関する情報をユーザーが取得できるようにします。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:BatchGetReports",
      "Resource": "arn:aws:codebuild:us-east-2:111122223333:report-group/*"
    }
  ]
}
```

------

### ビルドプロジェクトの作成をユーザーに許可する
<a name="customer-managed-policies-example-create-project"></a>

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

------
#### [ JSON ]

****  

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

------

次のポリシーステートメントの例では、任意の名前でビルドプロジェクトを作成することをユーザーに許可しています。ただし、`123456789012` アカウントで `us-east-2` リージョンに限り、指定された CodeBuild サービスロールのみを使用して作成する必要があります。また、ユーザーは指定されたサービスロールを でのみ使用でき AWS CodeBuild 、他の AWS サービスでは使用できません。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:CreateProject",
      "Resource": "arn:aws:codebuild:us-east-2:111122223333:project/*"
    },
    {
      "Effect": "Allow",
      "Action": "iam:PassRole",
      "Resource": "arn:aws:iam::111122223333:role/CodeBuildServiceRole",
      "Condition": {
          "StringEquals": {"iam:PassedToService": "codebuild.amazonaws.com"}
      }
    }
  ]
}
```

------

### フリートの作成をユーザーに許可
<a name="customer-managed-policies-example-create-fleet"></a>

次のポリシーステートメント例では、`123456789012` アカウントの `us-east-2` リージョンでフリートを作成することをユーザーに許可します。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:CreateFleet",
      "Resource": "arn:aws:codebuild:us-east-2:111122223333:fleet/*"
    }
  ]
}
```

------

### レポートグループの作成をユーザーに許可する
<a name="customer-managed-policies-example-create-report-group"></a>

次のポリシーステートメントの例では、`123456789012` アカウントの `us-east-2` リージョンにレポートグループを作成することをユーザーに許可します。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:CreateReportGroup",
      "Resource": "arn:aws:codebuild:us-east-2:111122223333:report-group/*"
    }
  ]
}
```

------

### フリートの削除をユーザーに許可
<a name="customer-managed-policies-example-delete-fleet"></a>

次のポリシーステートメント例では、`123456789012` アカウントの `us-east-2` リージョンでフリートを削除することをユーザーに許可します。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:DeleteFleet",
      "Resource": "arn:aws:codebuild:us-east-2:111122223333:fleet/*"
    }
  ]
}
```

------

### レポートグループの削除をユーザーに許可する
<a name="customer-managed-policies-example-delete-report-group"></a>

次のポリシーステートメント例では、`123456789012` アカウントの `us-east-2` リージョンからレポートグループを削除することをユーザーに許可します。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:DeleteReportGroup",
      "Resource": "arn:aws:codebuild:us-east-2:111122223333:report-group/*"
    }
  ]
}
```

------

### レポートの削除をユーザーに許可する
<a name="customer-managed-policies-example-delete-report"></a>

次のポリシーステートメント例では、`123456789012` アカウントの `us-east-2` リージョンからレポートを削除することをユーザーに許可します。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:DeleteReport",
      "Resource": "arn:aws:codebuild:us-east-2:111122223333:report-group/*"
    }
  ]
}
```

------

### ビルドプロジェクトの削除をユーザーに許可する
<a name="customer-managed-policies-example-delete-project"></a>

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

------
#### [ JSON ]

****  

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

------

### ビルドプロジェクト名の一覧表示をユーザーに許可する
<a name="customer-managed-policies-example-list-projects"></a>

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

------
#### [ JSON ]

****  

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

------

### ビルドプロジェクトに関する情報の変更をユーザーに許可する
<a name="customer-managed-policies-example-update-project"></a>

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

------
#### [ JSON ]

****  

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

------

### フリートの変更をユーザーに許可
<a name="customer-managed-policies-example-change-fleet"></a>

次のポリシーステートメント例では、`123456789012` アカウントの `us-east-2` リージョンでフリートを変更することをユーザーに許可します。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:UpdateFleet",
      "Resource": "arn:aws:codebuild:us-east-2:111122223333:fleet/*"
    }
  ]
}
```

------

### レポートグループの変更をユーザーに許可する
<a name="customer-managed-policies-example-change-report-group"></a>

次のポリシーステートメント例では、`123456789012` アカウントの `us-east-2` リージョンでレポートグループを変更することをユーザーに許可します。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:UpdateReportGroup",
      "Resource": "arn:aws:codebuild:us-east-2:111122223333:report-group/*"
    }
  ]
}
```

------

### ビルドに関する情報の取得をユーザーに許可する
<a name="customer-managed-policies-example-batch-get-builds"></a>

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

------
#### [ JSON ]

****  

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

------

### ビルドプロジェクトのビルド ID の一覧表示をユーザーに許可する
<a name="customer-managed-policies-example-list-builds-for-project"></a>

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

------
#### [ JSON ]

****  

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

------

### ビルド ID の一覧表示をユーザーに許可する
<a name="customer-managed-policies-example-list-builds"></a>

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

------
#### [ JSON ]

****  

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

------

### フリートのリスト取得をユーザーに許可
<a name="customer-managed-policies-example-get-list-of-fleets"></a>

次のポリシーステートメント例では、`123456789012` アカウントの `us-east-2` のリージョンでフリートのリストを取得することをユーザーに許可します。

------
#### [ JSON ]

****  

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

------

### レポートグループの一覧表示をユーザーに許可する
<a name="customer-managed-policies-example-get-list-of-report-groups"></a>

次のポリシーステートメント例では、`123456789012` アカウント `us-east-2` のリージョンでレポートグループリストを取得することをユーザーに許可します。

------
#### [ JSON ]

****  

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

------

### レポートの一覧表示をユーザーに許可する
<a name="customer-managed-policies-example-get-list-of-reports"></a>

次のポリシーステートメント例では、`123456789012` アカウントの `us-east-2` のリージョンでレポートリストを取得することをユーザーに許可します。

------
#### [ JSON ]

****  

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

------

### レポートグループのレポートの一覧表示をユーザーに許可する
<a name="customer-managed-policies-example-get-list-of-reports-for-report-group"></a>

次のポリシーステートメント例では、`123456789012` アカウントの `us-east-2` のリージョンでレポートグループのレポートリストを取得することをユーザーに許可します。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:ListReportsForReportGroup",
      "Resource": "arn:aws:codebuild:us-east-2:111122223333:report-group/*"
    }
  ]
}
```

------

### レポートのテストケースの一覧表示をユーザーに許可する
<a name="customer-managed-policies-example-get-list-of-test-cases-for-report"></a>

次のポリシーステートメント例では、`123456789012` アカウントの `us-east-2` リージョンでレポートのテストケースのリストを取得することをユーザーに許可します。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:DescribeTestCases",
      "Resource": "arn:aws:codebuild:us-east-2:111122223333:report-group/*"
    }
  ]
}
```

------

### ビルドの実行開始をユーザーに許可する
<a name="customer-managed-policies-example-start-build"></a>

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

------
#### [ JSON ]

****  

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

------

### ビルドの停止試行をユーザーに許可する
<a name="customer-managed-policies-example-stop-build"></a>

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

------
#### [ JSON ]

****  

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

------

### ビルドの削除試行をユーザーに許可する
<a name="customer-managed-policies-example-delete-builds"></a>

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

------
#### [ JSON ]

****  

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

------

### CodeBuild が管理する Docker イメージに関する情報の取得をユーザーに許可する
<a name="customer-managed-policies-example-list-curated-environment-images"></a>

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

------
#### [ JSON ]

****  

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

------

### フリートサービスロールのアクセス許可ポリシーを追加することをユーザーに許可
<a name="customer-managed-policies-example-permission-policy-fleet-service-role"></a>

次のリソースポリシーステートメントの例では、フリートサービスロールの VPC アクセス許可ポリシーを追加することをユーザーに許可します。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "CodeBuildFleetVpcCreateNI",
            "Effect": "Allow",
            "Action": [
                "ec2:CreateNetworkInterface"
            ],
            "Resource": [
                "arn:aws:ec2:us-west-2:111122223333:subnet/subnet-id-1",
                "arn:aws:ec2:us-west-2:111122223333:security-group/security-group-id-1",
                "arn:aws:ec2:us-west-2:111122223333:network-interface/*"
            ]
        },
        {
            "Sid": "CodeBuildFleetVpcPermission",
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeDhcpOptions",
                "ec2:DescribeNetworkInterfaces",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeSubnets",
                "ec2:DescribeVpcs",
                "ec2:ModifyNetworkInterfaceAttribute",
                "ec2:DeleteNetworkInterface"
            ],
            "Resource": "*"
        },
        {
            "Sid": "CodeBuildFleetVpcNIPermission",
            "Effect": "Allow",
            "Action": [
                "ec2:CreateNetworkInterfacePermission"
            ],
            "Resource": "arn:aws:ec2:us-west-2:111122223333:network-interface/*",
            "Condition": {
                "StringEquals": {
                    "ec2:Subnet": [
                        "arn:aws:ec2:us-west-2:111122223333:subnet/subnet-id-1"
                    ]
                }
            }
        }
    ]
}
```

------

次のリソースポリシーステートメントの例では、フリートサービスロールにカスタム Amazon マシンイメージ (AMI) アクセス許可ポリシーを追加することをユーザーに許可します。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ec2:DescribeImages",
            "Resource": "*"
        } 
    ]
}
```

------

次の信頼ポリシーステートメントの例では、フリートサービスロールのアクセス許可ポリシーを追加することをユーザーに許可します。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "CodeBuildFleetVPCTrustPolicy",
      "Effect": "Allow",
      "Principal": {
        "Service": "codebuild.amazonaws.com"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "111122223333"
        }
      }
    }
  ]
}
```

------

### VPC ネットワークインターフェイスの作成に必要な AWS サービスへの CodeBuild アクセスを許可する
<a name="customer-managed-policies-example-create-vpc-network-interface"></a>

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

------
#### [ JSON ]

****  

```
{
    "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:us-west-2:111122223333:network-interface/*",
            "Condition": {
                "StringEquals": {
                    "ec2:AuthorizedService": "codebuild.amazonaws.com"
                },
                "ArnEquals": {
                    "ec2:Subnet": [
                        "arn:aws:ec2:us-west-2:111122223333:subnet/subnet-id-1",
                        "arn:aws:ec2:us-west-2:111122223333:subnet/subnet-id-2"
                    ]
                }
            }
        }
    ]
}
```

------

### 拒否ステートメントを使用して、 がソースプロバイダーから切断 AWS CodeBuild されないようにする
<a name="customer-managed-policies-example-deny-disconnect"></a>

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

------
#### [ JSON ]

****  

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

------

# AWS CodeBuild アクセス許可リファレンス
<a name="auth-and-access-control-permissions-reference"></a>

 AWS CodeBuild ポリシーで AWS全体の条件キーを使用して、条件を表現できます。リストについては、*IAM ユーザーガイド*の「[利用可能なキー](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#AvailableKeys)」を参照してください。

アクションは、ポリシーの `Action` フィールドで指定します。アクションを指定するには、API オペレーション名 (例えば、`codebuild:` や `codebuild:CreateProject`) の前に `codebuild:StartBuild` プレフィックスを使用します。単一のステートメントに複数のアクションを指定するには、コンマで区切ります (例えば、`"Action": [ "codebuild:CreateProject", "codebuild:StartBuild" ]`)。

**ワイルドカード文字の使用**

ポリシーの `Resource` フィールドでリソース値として、ワイルドカード文字 (\$1) を使用して、または使用せずに ARN を指定します。ワイルドカードを使用して複数のアクションまたはリソースを指定することができます。たとえば、`codebuild:*` は、すべての CodeBuild アクションを指定し、`codebuild:Batch*` は、`Batch` という単語で始まるすべての CodeBuild アクションを指定します。次の例では、`my` で始まる名前のすべてのビルドプロジェクトへのアクセスを許可します。

```
arn:aws:codebuild:us-east-2:123456789012:project/my*
```<a name="actions-related-to-objects-table"></a>CodeBuild API オペレーションおよびコミットされたコードのアクションで必要なアクセス権限

BatchDeleteBuilds  
 **アクション:**`codebuild:BatchDeleteBuilds`   
ビルドを削除するのに必要です。  
 **リソース:** `arn:aws:codebuild:region-ID:account-ID:project/project-name ` 

BatchGetBuilds  
 **アクション:**`codebuild:BatchGetBuilds`   
ビルドに関する情報を取得するのに必要です。  
 **リソース:** `arn:aws:codebuild:region-ID:account-ID:project/project-name ` 

BatchGetProjects  
 **アクション:**`codebuild:BatchGetProjects`   
ビルドプロジェクトに関する情報を取得するのに必要です。  
 **リソース:** `arn:aws:codebuild:region-ID:account-ID:project/project-name ` 

BatchGetReportGroups  
 **アクション:**`codebuild:BatchGetReportGroups`   
レポートグループに関する情報を取得するために必要です。  
 **リソース:** `arn:aws:codebuild:region-ID:account-ID:report-group/report-group-name ` 

BatchGetReports  
 **アクション:**`codebuild:BatchGetReports`   
レポートに関する情報を取得するのに必要です。  
 **リソース:** `arn:aws:codebuild:region-ID:account-ID:report-group/report-group-name ` 

BatchPutTestCases ¹  
 **アクション:**`codebuild:BatchPutTestCases`   
テストレポートを作成または更新するために必要です。  
 **リソース:** `arn:aws:codebuild:region-ID:account-ID:report-group/report-group-name ` 

CreateProject  
 **アクション:**`codebuild:CreateProject`、`iam:PassRole`  
ビルドプロジェクトを作成するのに必要です。  
 **リソース:**   
+  `arn:aws:codebuild:region-ID:account-ID:project/project-name ` 
+  `arn:aws:iam::account-ID:role/role-name ` 

CreateReport ¹  
 **アクション:**`codebuild:CreateReport`   
テストレポートを作成するために必要です。  
 **リソース:** `arn:aws:codebuild:region-ID:account-ID:report-group/report-group-name ` 

CreateReportGroup  
 **アクション:**`codebuild:CreateReportGroup`   
レポートグループを作成するために必要です。  
 **リソース:** `arn:aws:codebuild:region-ID:account-ID:report-group/report-group-name ` 

CreateWebhook  
 **アクション:**`codebuild:CreateWebhook`   
ウェブフックを作成するために必要です。  
 **リソース:** `arn:aws:codebuild:region-ID:account-ID:project/project-name ` 

DeleteProject  
 **アクション:**`codebuild:DeleteProject`   
CodeBuild プロジェクトを削除するために必要です。  
 **リソース:** `arn:aws:codebuild:region-ID:account-ID:project/project-name ` 

DeleteReport  
 **アクション:**`codebuild:DeleteReport`   
レポートを削除するのに必要です。  
 **リソース:** `arn:aws:codebuild:region-ID:account-ID:report-group/report-group-name ` 

DeleteReportGroup  
 **アクション:**`codebuild:DeleteReportGroup`   
レポートグループを削除するのに必要です。  
 **リソース:** `arn:aws:codebuild:region-ID:account-ID:report-group/report-group-name ` 

DeleteSourceCredentials  
 **アクション:**`codebuild:DeleteSourceCredentials`   
GitHub、GitHub Enterprise Server、または Bitbucket リポジトリの認証情報が含まれている一連の `SourceCredentialsInfo` オブジェクトを削除するために必要です。  
 **リソース:** `*` 

DeleteWebhook  
 **アクション:**`codebuild:DeleteWebhook`   
ウェブフックを作成するために必要です。  
 **リソース:** `arn:aws:codebuild:region-ID:account-ID:project/project-name ` 

DescribeTestCases  
 **アクション:**`codebuild:DescribeTestCases`   
ページ分割されたテストケースのリストを返すために必要です。  
 **リソース:** `arn:aws:codebuild:region-ID:account-ID:report-group/report-group-name ` 

ImportSourceCredentials  
 **アクション:**`codebuild:ImportSourceCredentials`   
GitHub、GitHub Enterprise Server、または Bitbucket リポジトリの認証情報が含まれている一連の `SourceCredentialsInfo` オブジェクトをインポートするために必要です。  
 **リソース:** `*` 

InvalidateProjectCache  
 **アクション:**`codebuild:InvalidateProjectCache`   
プロジェクトのキャッシュをリセットするために必要です。  
 **リソース:** `arn:aws:codebuild:region-ID:account-ID:project/project-name ` 

ListBuildBatches  
 **アクション:**`codebuild:ListBuildBatches`   
ビルドバッチ ID のリストを取得するために必要です。  
 **リソース:** `*` 

ListBuildBatchesForProject  
 **アクション:**`codebuild:ListBuildBatchesForProject`   
特定のプロジェクトのビルドバッチ ID のリストを取得するために必要です。  
 **リソース:** `arn:aws:codebuild:region-ID:account-ID:project/project-name` 

ListBuilds  
 **アクション:**`codebuild:ListBuilds`   
ビルド ID のリストを取得するのに必要です。  
 **リソース:** `*` 

ListBuildsForProject  
 **アクション:**`codebuild:ListBuildsForProject`   
ビルドプロジェクトのビルド ID のリストを取得するために必要です。  
 **リソース:** `arn:aws:codebuild:region-ID:account-ID:project/project-name ` 

ListCuratedEnvironmentImages  
 **アクション:**`codebuild:ListCuratedEnvironmentImages`   
 AWS CodeBuildによって管理されるすべての Docker イメージに関する情報を取得するのに必要です。  
 **リソース:** `*` (必須ですが、アドレスで呼び出せる AWS リソースは参照しません) 

ListProjects  
 **アクション:**`codebuild:ListProjects`   
ビルドプロジェクト名のリストを取得するのに必要です。  
 **リソース:** `*` 

ListReportGroups  
 **アクション:**`codebuild:ListReportGroups`   
レポートグループのリストを取得するために必要です。  
 **リソース:** `*` 

ListReports  
 **アクション:**`codebuild:ListReports`   
レポートリストを取得するために必要です。  
 **リソース:** `*` 

ListReportsForReportGroup  
 **アクション:**`codebuild:ListReportsForReportGroup`   
レポートグループのレポートのリストを取得するために必要です。  
 **リソース:** `arn:aws:codebuild:region-ID:account-ID:report-group/report-group-name ` 

RetryBuild  
**アクション:**`codebuild:RetryBuild`   
ビルドを再試行するのに必要です。  
**リソース:** `arn:aws:codebuild:region-ID:account-ID:project/project-name `

StartBuild  
 **アクション:**`codebuild:StartBuild`   
ビルドの実行を開始するために必要です。  
 **リソース:** `arn:aws:codebuild:region-ID:account-ID:project/project-name ` 

StopBuild  
 **アクション:**`codebuild:StopBuild`   
実行中のビルドを停止しようとするのに必要です。  
 **リソース:** `arn:aws:codebuild:region-ID:account-ID:project/project-name ` 

UpdateProject  
 **アクション:** `codebuild:UpdateProject`、`iam:PassRole`  
ビルドに関する情報を変更するのに必要です。  
 **リソース:**   
+  `arn:aws:codebuild:region-ID:account-ID:project/project-name ` 
+  `arn:aws:iam::account-ID:role/role-name ` 

UpdateProjectVisibility  <a name="UpdateProjectVisibility"></a>
 **アクション:** `codebuild:UpdateProjectVisibility`、`iam:PassRole`  
プロジェクトのビルドの公開可視性を変更するために必要です。  
 **リソース:**   
+  `arn:aws:codebuild:region-ID:account-ID:project/project-name ` 
+  `arn:aws:iam::account-ID:role/role-name ` 

UpdateReport ¹  
 **アクション:**`codebuild:UpdateReport`   
テストレポートを作成または更新するために必要です。  
 **リソース:** `arn:aws:codebuild:region-ID:account-ID:report-group/report-group-name ` 

UpdateReportGroup  
 **アクション:**`codebuild:UpdateReportGroup`   
レポートグループを更新するために必要です。  
 **リソース:** `arn:aws:codebuild:region-ID:account-ID:report-group/report-group-name ` 

UpdateWebHook  
 **アクション:**`codebuild:UpdateWebhook`   
Webhook を更新するために必要です。  
 **リソース:** `arn:aws:codebuild:region-ID:account-ID:project/project-name ` 

¹ アクセス許可にのみ使用されます。このアクションに API はありません。

# タグを使用して AWS CodeBuild リソースへのアクセスを制御する
<a name="auth-and-access-control-using-tags"></a>

IAM ポリシーステートメントの条件は、CodeBuild プロジェクトベースのアクションに対するアクセス許可を指定するために使用できる構文の一部です。プロジェクトに関連付けられたタグに基づいてプロジェクトに対するアクションを許可または拒否するポリシーを作成し、これらのポリシーを、ユーザーの管理用に設定した IAM グループに適用できます。コンソールまたは を使用してプロジェクトにタグを適用する方法については AWS CLI、「」を参照してください[でのビルドプロジェクトの作成AWS CodeBuild](create-project.md)。CodeBuild SDK を使用したタグの適用については、*CodeBuild API リファレンス*の[「CreateProject」](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_CreateProject.html#API_CreateProject_RequestSyntax)および[「タグ」を参照してください。](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_Tag.html)。タグを使用して AWS リソースへのアクセスを制御する方法については、*IAM ユーザーガイド*の[「リソースタグを使用した AWS リソースへのアクセスの制御](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html)」を参照してください。

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

**Example 例 1: リソースタグに基づいてプロジェクトに対する CodeBuild アクションを制限する**  
 次の例では、キー `BatchGetProjects` とキー値 `Environment` のタグが付いているプロジェクトに対するすべての `Production` アクションを拒否します。ユーザーの管理者は、この IAM ポリシーをマネージド型のユーザーポリシーに加えて、承認されないユーザーにアタッチする必要があります。`aws:ResourceTag` 条件キーを使用して、リソースへのアクセスをリソースタグに基づいてコントロールします。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
        "codebuild:BatchGetProjects"
      ],
      "Resource": "*",
      "Condition": {
        "ForAnyValue:StringEquals": {
          "aws:ResourceTag/Environment": "Production"
        }
      }
    }
  ]
}
```

**Example 例 2: リクエストタグに基づいてプロジェクトに対する CodeBuild アクションを制限する**  
次のポリシーでは、リクエスト内のタグのキーが `CreateProject` で、キー値が `Environment` である場合、ユーザーに `Production` アクションへのアクセス許可を拒否します。さらに、このポリシーでは、`aws:TagKeys` 条件キーを使用して、リクエスト内のタグのキーが `UpdateProject` である場合に、`Environment` を許可しないことにより、これらの承認されないユーザーにプロジェクトの変更を禁止します。管理者は、これらのアクションの実行を承認されないユーザーに、マネージド型のユーザーポリシーに加えて、この　IAM ポリシーをアタッチする必要があります。この `aws:RequestTag` 条件キーを使用して、IAM リクエストで渡すことができるタグをコントロールします    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
        "codebuild:CreateProject"
      ],
      "Resource": "*",
      "Condition": {
        "ForAnyValue:StringEquals": {
          "aws:RequestTag/Environment": "Production"
        }
      }
    },
    {
      "Effect": "Deny",
      "Action": [
        "codebuild:UpdateProject"
      ],
      "Resource": "*",
      "Condition": {
        "ForAnyValue:StringEquals": {
          "aws:TagKeys": ["Environment"]
        }
      }
    }
  ]
}
```

**Example 例 3: リソースタグに基づいてレポートグループのアクションを拒否または許可する**  
これらのリソースに関連付けられた AWS タグに基づいて CodeBuild リソース (プロジェクトおよびレポートグループ) に対するアクションを許可または拒否するポリシーを作成し、それらのポリシーをユーザーの管理用に設定した IAM グループに適用できます。たとえば、 AWS タグキー`Status`とキー値が のレポートグループですべての CodeBuild アクションを拒否するポリシーを作成し`Secret`、そのポリシーを一般的な開発者 (*開発者*) 用に作成した IAM グループに適用できます。次に、上記のタグ付けされたレポートグループに対して作業する開発者が一般的な *Developers* グループのメンバーではなく、代わりに制限されたポリシーが適用されていない別の IAM グループ (`SecretDevelopers`) に属していることを確認する必要があります。  
以下の例では、キー `Status` およびキー値 `Secret` でタグ付けされたレポートグループに対するすべての CodeBuild アクションを拒否します。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
        "codebuild:BatchGetReportGroups",
        "codebuild:CreateReportGroup",
        "codebuild:DeleteReportGroup",
        "codebuild:ListReportGroups",
        "codebuild:ListReportsForReportGroup",
        "codebuild:UpdateReportGroup"
      ],
      "Resource": "*",
      "Condition": {
        "StringLike": {
          "aws:RequestedRegion": "us-east-1"
        }
      }
    }
  ]
}
```

**Example 例 4: リソースタグに基づいて AWSCodeBuildDeveloperAccess への CodeBuild アクションを制限する**  
特定のタグが付けられていないすべてのレポートグループおよびプロジェクトに対する CodeBuild アクションを許可するポリシーを作成できます。たとえば、以下のポリシーでは、指定したタグが付けられたものを除くすべてのレポートグループとプロジェクトに [AWSCodeBuildDeveloperAccess](auth-and-access-control-iam-identity-based-access-control.md#developer-access-policy) と同等のアクセス許可を付与します。    
****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Effect": "Allow",
         "Action": [
            "codebuild:StartBuild",
            "codebuild:StopBuild",
            "codebuild:BatchGet*",
            "codebuild:GetResourcePolicy",
            "codebuild:DescribeTestCases",
            "codebuild:List*",
            "codecommit:GetBranch",
            "codecommit:GetCommit",
            "codecommit:GetRepository",
            "codecommit:ListBranches",
            "cloudwatch:GetMetricStatistics",
            "events:DescribeRule",
            "events:ListTargetsByRule",
            "events:ListRuleNamesByTarget",
            "logs:GetLogEvents",
            "s3:GetBucketLocation",
            "s3:ListAllMyBuckets"
         ],
         "Resource": "*",
         "Condition": {
            "StringNotEquals": {
               "aws:ResourceTag/Status": "Secret",
               "aws:ResourceTag/Team": "Saanvi"
            }
         }
      }
   ]
}
```

# コンソールでのリソースの表示
<a name="console-resources"></a>

 AWS CodeBuild コンソールには、サインインしている AWS リージョンの AWS アカウントのリポジトリのリストを表示する`ListRepositories`アクセス許可が必要です。このコンソールには、大文字と小文字を区別しない検索をリソースに対して迅速に実行するための [**Go to resource (リソースに移動)**] 機能も含まれています。この検索は、サインインしている AWS リージョンのアカウント AWS で実行されます。次のリソースは、以下のサービス全体で表示されます。
+ AWS CodeBuild: ビルドプロジェクト
+ AWS CodeCommit: リポジトリ
+ AWS CodeDeploy: アプリケーション
+ AWS CodePipeline: パイプライン

この検索をすべてのサービスのリソースにわたって実行するには、次のアクセス権限が必要です。
+ CodeBuild: `ListProjects`
+ CodeCommit: `ListRepositories`
+ CodeDeploy: `ListApplications`
+ CodePipeline: `ListPipelines`

あるサービスに対するアクセス権限がない場合、そのサービスのリソースに関して結果は返されません。表示のアクセス権限がある場合でも、表示に対する明示的な `Deny` が設定されているリソースについては、結果が返されません。

# のコンプライアンス検証 AWS CodeBuild
<a name="compliance-validation"></a>

 AWS のサービス が特定のコンプライアンスプログラムの範囲内にあるかどうかを確認するには、「コンプライアンス[AWS のサービス プログラムによる対象範囲内](https://aws.amazon.com/compliance/services-in-scope/)」の「コンプライアンス」を参照して、関心のあるコンプライアンスプログラムを選択します。一般的な情報については、[AWS 「コンプライアンスプログラム](https://aws.amazon.com/compliance/programs/)」を参照してください。

を使用して、サードパーティーの監査レポートをダウンロードできます AWS Artifact。詳細については、[「Downloading Reports in AWS Artifact](https://docs.aws.amazon.com/artifact/latest/ug/downloading-documents.html)」を参照してください。

を使用する際のお客様のコンプライアンス責任 AWS のサービス は、お客様のデータの機密性、貴社のコンプライアンス目的、適用される法律および規制によって決まります。を使用する際のコンプライアンス責任の詳細については AWS のサービス、[AWS 「 セキュリティドキュメント](https://docs.aws.amazon.com/security/)」を参照してください。

# の耐障害性 AWS CodeBuild
<a name="codebuild-disaster-recovery-resiliency"></a>

 AWS グローバルインフラストラクチャは、 AWS リージョンとアベイラビリティーゾーンを中心に構築されています。 AWS リージョンは、低レイテンシー、高スループット、高度に冗長なネットワークで接続された、物理的に分離された複数のアベイラビリティーゾーンを提供します。アベイラビリティーゾーンでは、アベイラビリティーゾーン間で中断せずに、自動的にフェイルオーバーするアプリケーションとデータベースを設計および運用することができます。アベイラビリティーゾーンは、従来の単一または複数のデータセンターインフラストラクチャよりも可用性、耐障害性、およびスケーラビリティが優れています。

 AWS リージョンとアベイラビリティーゾーンの詳細については、[AWS 「 グローバルインフラストラクチャ](https://aws.amazon.com/about-aws/global-infrastructure/)」を参照してください。

# のインフラストラクチャセキュリティ AWS CodeBuild
<a name="infrastructure-security"></a>

マネージドサービスである AWS CodeBuild は、 AWS グローバルネットワークセキュリティで保護されています。 AWS セキュリティサービスと がインフラストラクチャ AWS を保護する方法については、[AWS 「 クラウドセキュリティ](https://aws.amazon.com/security/)」を参照してください。インフラストラクチャセキュリティのベストプラクティスを使用して環境を AWS 設計するには、*「Security Pillar AWS Well‐Architected Framework*」の[「Infrastructure Protection](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/infrastructure-protection.html)」を参照してください。

 AWS 公開された API コールを使用して、ネットワーク経由で CodeBuild にアクセスします。クライアントは次をサポートする必要があります。
+ Transport Layer Security (TLS)。TLS 1.2 が必須で、TLS 1.3 をお勧めします。
+ DHE (楕円ディフィー・ヘルマン鍵共有) や ECDHE (楕円曲線ディフィー・ヘルマン鍵共有) などの完全前方秘匿性 (PFS) による暗号スイート。これらのモードは Java 7 以降など、ほとんどの最新システムでサポートされています。

# CodeBuild でソースプロバイダにアクセスする
<a name="access-tokens"></a>

GitHub または GitHub Enterprise Server の場合、ソースプロバイダへのアクセスに個人用アクセストークン、Secrets Manager シークレット、接続、または OAuth アプリを使用します。Bitbucket では、アクセストークン、アプリパスワード、Secrets Manager シークレット、接続、または OAuth アプリケーションのいずれかを使用して、ソースプロバイダにアクセスします。

**Topics**
+ [

# Secrets Manager シークレットにトークンを作成して保存
](asm-create-secret.md)
+ [

# CodeBuild の GitHub および GitHub Enterprise Server アクセス
](access-tokens-github-overview.md)
+ [

# CodeBuild での Bitbucket アクセス
](access-tokens-bitbucket-overview.md)
+ [

# CodeBuild での GitLab アクセス
](access-tokens-gitlab-overview.md)

# Secrets Manager シークレットにトークンを作成して保存
<a name="asm-create-secret"></a>

Secrets Manager を使用してアクセストークンを保存する場合は、既存のシークレット接続を使用するか、新しいシークレットを作成できます。新しいシークレットを作成するには、次の手順に従います。

------
#### [ AWS マネジメントコンソール ]

**で Secrets Manager シークレットを作成するには AWS マネジメントコンソール**

1. **[ソースプロバイダ]** には、**[Bitbucket]**、**[GitHub]**、または **[GitHub Enterprise]** を選択します。

1. **[認証情報]** で、次のいずれかを実行します。
   + **[デフォルトソース認証情報]** を選択し、アカウントのデフォルトソース認証情報を使用して、すべてのプロジェクトに適用します。

     1. ソースプロバイダに接続していない場合は、**[デフォルトソース認証情報を管理]** を選択します。

     1. **[認証情報タイプ]** では、**[CodeConnections]** 以外の認証情報タイプを選択します。

     1. **[サービス]** では、**[Secrets Manager]** を選択し、**[シークレット]** で **[新しいシークレット]** を選択します。

     1. **[シークレット名]** で、シークレットの名前を入力します。

     1. **[シークレットの説明 - オプション]** に、シークレットの説明を入力します。

     1. 選択したソースプロバイダに応じて、トークンまたはユーザー名とアプリパスワードを入力し、**[保存]** を選択します。
   + **[カスタムソース認証情報]** を選択し、カスタムソース認証情報を使用してアカウントのデフォルト設定を上書きします。

     1. **[認証情報タイプ]** では、**[CodeConnections]** 以外の認証情報タイプを選択します。

     1. **[接続]** で、**[シークレットを作成]** を選択します。

     1. **[シークレット名]** で、シークレットの名前を入力します。

     1. **[シークレットの説明 - オプション]** に、シークレットの説明を入力します。

     1. 選択したソースプロバイダに応じて、トークンまたはユーザー名とアプリパスワードを入力し、**[作成]** を選択します。

------
#### [ AWS CLI ]

**で Secrets Manager シークレットを作成するには AWS CLI**
+ ターミナル (Linux/macOS/Unix) またはコマンドプロンプト (Windows) を開きます。を使用して Secrets Manager **create-secret** コマンド AWS CLI を実行します。

  ```
  aws secretsmanager create-secret --region <aws-region> \
              --name '<secret-name>' \
              --description '<secret-description>' \
              --secret-string '{
                  "ServerType":"<server-type>",
                  "AuthType":"<auth-type>",
                  "Token":"<token>"
                  }' \
              --tags Key=codebuild:source,Value='' \
                  Key=codebuild:source:type,Value=<type> \
                  Key=codebuild:source:provider,Value=<provider>
  ```

  CodeBuild が受け入れる Secrets Manager シークレットは、CodeBuild プロジェクトと同じアカウントと AWS リージョンにあり、次の JSON 形式である必要があります。

  ```
  {
              "ServerType": ServerType,
              "AuthType: AuthType,
              "Token": string,
              "Username": string // Optional and is only used for Bitbucket app password
          }
  ```    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/asm-create-secret.html)

  さらに、CodeBuild は、シークレットに次のリソースタグを使用して、プロジェクトを作成または編集するときにシークレットを簡単に選択できるようにします。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/asm-create-secret.html)

------

# CodeBuild の GitHub および GitHub Enterprise Server アクセス
<a name="access-tokens-github-overview"></a>

GitHub の場合、個人用アクセストークン、OAuth アプリ、Secrets Manager シークレット、または GitHub アプリ接続を使用して、ソースプロバイダにアクセスできます。GitHub Enterprise Server の場合、個人用アクセストークン、Secrets Manager シークレット、GitHub アプリ接続を使用して、ソースプロバイダにアクセスできます。

**Topics**
+ [

# GitHub および GitHub Enterprise Server の GitHub アプリ接続
](connections-github-app.md)
+ [

# GitHub および GitHub Enterprise Server アクセストークン
](access-tokens-github.md)
+ [

# GitHub OAuth アプリ
](oauth-app-github.md)

# GitHub および GitHub Enterprise Server の GitHub アプリ接続
<a name="connections-github-app"></a>

GitHub アプリを使用して CodeBuild に接続できます。GitHub アプリ接続は [AWS CodeConnections](https://docs.aws.amazon.com/dtconsole/latest/userguide/welcome-connections.html) を通じてサポートされています。

ソースプロバイダアクセスを使用すると、[CreateWebhook](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_CreateWebhook.html) を使用して [GitHub ウェブフックイベント](github-webhook.md) をサブスクライブすることでビルドをトリガーしたり、CodeBuild で [チュートリアル: CodeBuild がホストする GitHub Actions ランナーを設定](action-runner.md) を使用したりできます。

**注記**  
CodeConnections は、使用できるリージョンが CodeBuild よりも限られています。CodeBuild では、クロスリージョン接続を使用できます。オプトインリージョンで作成された接続は、他のリージョンでは使用できません。詳細については、「[AWS CodeConnections エンドポイントとクォータ](https://docs.aws.amazon.com/general/latest/gr/codestar_connections.html)」を参照してください。

**Topics**
+ [

## ステップ 1: GitHub アプリへの接続を作成 (コンソール)
](#connections-github-console)
+ [

## ステップ 2: 接続を使用するために CodeBuild プロジェクト IAM ロールにアクセスを許可
](#connections-github-role-access)
+ [

## ステップ 3: 新しい接続を使用するように CodeBuild を設定
](#connections-github-account-credential)
+ [GitHub アプリのトラブルシューティング](#connections-github-troubleshooting)

## ステップ 1: GitHub アプリへの接続を作成 (コンソール)
<a name="connections-github-console"></a>

以下のステップを使用して、CodeBuild コンソールで GitHub 内のプロジェクト用に接続を追加します。

**GitHub への接続を作成するには**
+ 「*デベロッパーツールユーザーガイド*」にある「[Create a connection to GitHub](https://docs.aws.amazon.com/dtconsole/latest/userguide/connections-create-github.html)」の手順に従ってください。

**注記**  
アカウントで既存の接続を作成または使用する代わりに、別の AWS アカウントから共有された接続を使用できます。詳細については、[AWS 「アカウントとの接続の共有](https://docs.aws.amazon.com/dtconsole/latest/userguide/connections-share.html)」を参照してください。

## ステップ 2: 接続を使用するために CodeBuild プロジェクト IAM ロールにアクセスを許可
<a name="connections-github-role-access"></a>

CodeBuild プロジェクト IAM ロールに、接続によって提供された GitHub トークンを使用するためのアクセスを許可できます。

**CodeBuild プロジェクトの IAM ロールにアクセスを許可するには**

1. CodeBuild プロジェクトの [CodeBuild が他の AWS サービスとやり取りすることを許可する](setting-up-service-role.md) の手順に従って、CodeBuild プロジェクトの IAM ロールを作成します。

1. 手順に従って、次の IAM ポリシーを CodeBuild プロジェクトロールに追加して、接続へのアクセスを許可します。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "codeconnections:GetConnectionToken",
                   "codeconnections:GetConnection"
               ],
               "Resource": [
                   "arn:aws:iam::*:role/Service*"
               ]
           }
       ]
   }
   ```

------

## ステップ 3: 新しい接続を使用するように CodeBuild を設定
<a name="connections-github-account-credential"></a>

接続をアカウントレベルの認証情報として設定し、プロジェクトで使用できます。

------
#### [ AWS マネジメントコンソール ]

**でアカウントレベルの認証情報として接続を設定するには AWS マネジメントコンソール**

1. [**ソースプロバイダー**] で [**GitHub**] を選択します。

1. **[認証情報]** で、次のいずれかを実行します。
   + **[デフォルトソース認証情報]** を選択し、アカウントのデフォルトソース認証情報を使用して、すべてのプロジェクトに適用します。

     1. GitHub に接続していない場合は、**[デフォルトソース認証情報を管理]** を選択します。

     1. **[認証情報タイプ]** では、**[GitHub アプリ]** を選択します。

     1. **[接続]** で、既存の接続を使用するか、新規の接続を作成することを選択します。
   + **[カスタムソース認証情報]** を選択し、カスタムソース認証情報を使用してアカウントのデフォルト設定を上書きします。

     1. **[認証情報タイプ]** では、**[GitHub アプリ]** を選択します。

     1. **[接続]** で、既存の接続を使用するか、新規の接続を作成することを選択します。

------
#### [ AWS CLI ]

**でアカウントレベルの認証情報として接続を設定するには AWS CLI**
+ ターミナル (Linux/macOS/Unix) またはコマンドプロンプト (Windows) を開きます。 AWS CLI を使用して **import-source-credentials** コマンドを実行し、`--token`接続に `--auth-type`、`--server-type`、 を指定します。

  以下のコマンドを使用します。

  ```
  aws codebuild import-source-credentials --auth-type CODECONNECTIONS --server-type GITHUB --token <connection-arn>
  ```

------

CodeBuild プロジェクトに複数のトークンを設定することもできます。詳細については、「[複数のトークンをソースレベルの認証情報として設定](multiple-access-tokens.md#asm-source-credential)」を参照してください。

## GitHub アプリに関する問題のトラブルシューティング
<a name="connections-github-troubleshooting"></a>

以下の情報は、GitHub アプリの一般的な問題のトラブルシューティングに役立ちます。

**Topics**
+ [

### AWS Connector for GitHub アプリを望ましくないリージョンにインストールする
](#connections-github-troubleshooting.undesired-region)
+ [

### GitHub アプリ接続にリポジトリへのアクセス権限がありません。
](#connections-github-troubleshooting.repo-access)
+ [

### AWS サービスの IAM ロールに必要な IAM アクセス許可がありません。
](#connections-github-troubleshooting.iam-permissions)

### AWS Connector for GitHub アプリを望ましくないリージョンにインストールする
<a name="connections-github-troubleshooting.undesired-region"></a>

**問題:** GitHub Marketplace から AWS Connector for GitHub をインストールしましたが、接続が望ましくないリージョンで作成されました。GitHub ウェブサイトでアプリを再設定しようとしても、アプリが既に GitHub アカウントにインストールされているため、動作しません。

**考えられる原因:** アプリは GitHub アカウントに既にインストールされているため、アプリのアクセス許可のみを再設定できます。

**推奨される解決策:** インストール ID を使用して目的のリージョンに新しい接続を作成できます。

1. [https://console.aws.amazon.com/codesuite/settings/connections](https://console.aws.amazon.com/codesuite/settings/connections) で CodeConnections コンソールを開き、 AWS コンソールナビゲーションバーのリージョンセレクターを使用して目的のリージョンに移動します。

1. 「*デベロッパーツールユーザーガイド*」にある「[Create a connection to GitHub](https://docs.aws.amazon.com/dtconsole/latest/userguide/connections-create-github.html)」の手順に従ってください。
**注記**  
 AWS Connector for GitHub アプリはインストール済みであるため、新しいアプリをインストールする代わりに選択できます。

### GitHub アプリ接続にリポジトリへのアクセス権限がありません。
<a name="connections-github-troubleshooting.repo-access"></a>

**問題:** CodeBuild や CodePipeline などの接続を使用する AWS サービスは、リポジトリにアクセスできないか、リポジトリが存在しないことを報告します。考えられるエラーメッセージには、次のようなものがあります。
+ `Authentication required for primary source.`
+ `Unable to create webhook at this time. Please try again later.`
+ `Failed to create webhook. GitHub API limit reached. Please try again later.`

***考えられる原因:** GitHub アプリを使用していて、ウェブフックのアクセス許可スコープを付与していない可能性があります。*  
**推奨される解決策:** 必要なアクセス許可スコープを付与するには、「[Navigating to the GitHub App you want to review or modify](https://docs.github.com/en/apps/using-github-apps/reviewing-and-modifying-installed-github-apps#navigating-to-the-github-app-you-want-to-review-or-modify)」の指示に従って、インストールされたアプリを設定します。アクセス許可セクションには、アプリにウェブフックアクセス許可がないことが表示され、新しくリクエストされたアクセス許可を確認するオプションがあります。新しいアクセス許可を確認して承諾します。詳細については、「[Approving updated permissions for a GitHub App](https://docs.github.com/en/apps/using-github-apps/approving-updated-permissions-for-a-github-app)」を参照してください。

***考えられる原因:** 接続は想定どおりに機能していましたが、突然リポジトリにアクセスできなくなりました。*  
**考えられる解決策:** まず、「[authorizations](https://docs.github.com/en/apps/using-github-apps/reviewing-and-revoking-authorization-of-github-apps)」と「[installations](https://docs.github.com/en/apps/using-github-apps/reviewing-and-modifying-installed-github-apps)」を確認してから、GitHub アプリが承認されてインストールされていることを確認します。GitHub アプリのインストールが一時停止されている場合は、一時停止を解除する必要があります。GitHub アプリが [UAT (ユーザーアクセストークン)](https://docs.github.com/en/apps/creating-github-apps/authenticating-with-a-github-app/authenticating-with-a-github-app-on-behalf-of-a-user) 接続に対して承認されていない場合、または [IAT (インストールアクセストークン)](https://docs.github.com/en/apps/creating-github-apps/authenticating-with-a-github-app/authenticating-as-a-github-app-installation) 接続に対してインストールされていない場合、既存の接続は使用できなくなるため、新しい接続を作成する必要があります。GitHub アプリを再インストールしても、古いインストールに関連付けられた以前の接続は復元されないことに注意してください。  
**考えられる解決策:** 接続が UAT 接続の場合は、複数の CodeBuild ビルドの同時実行で使用されているなど、接続が同時に使用されていないことを確認してください。これは、有効期限が切れるトークンが接続によって更新された場合、GitHub が以前に発行された UAT を直ちに無効にするためです。CodeBuild の複数の同時ビルドに UAT 接続を使用する必要がある場合は、複数の接続を作成し、各接続を個別に使用できます。  
**考えられる解決策:** UAT 接続が過去 6 か月間使用されていない場合、接続は GitHub によって無効になります。これを修正するには、新しい接続を作成します。

***考えられる原因:** アプリをインストールせずに UAT 接続を使用していた可能性があります。*  
**推奨される解決策:** UAT 接続を作成する際に、接続を GitHub アプリのインストールに関連付ける必要はありませんが、リポジトリにアクセスできるようにするためにはインストールが必要です。手順に従って[インストールを確認](https://docs.github.com/en/apps/using-github-apps/reviewing-and-modifying-installed-github-apps)し、GitHub アプリがインストールされていることを確認します。インストールされていない場合は、[GitHub アプリのページ](https://github.com/marketplace/aws-connector-for-github)に移動してアプリをインストールします。UAT のアクセスの詳細については、「[About user access tokens](https://docs.github.com/en/apps/creating-github-apps/authenticating-with-a-github-app/generating-a-user-access-token-for-a-github-app#about-user-access-tokens)」を参照してください。

### AWS サービスの IAM ロールに必要な IAM アクセス許可がありません。
<a name="connections-github-troubleshooting.iam-permissions"></a>

**問題:** 次のいずれかのエラーメッセージが表示されます。
+ `Access denied to connection <connection-arn>`
+ `Failed to get access token from <connection-arn>`

**推奨される解決策:** 通常、CodePipeline や CodeBuild などの AWS サービスとの接続を使用します。 AWS サービスに IAM ロールを付与すると、 AWS サービスはロールのアクセス許可を使用してユーザーに代わって動作できます。IAM ロールに必要なアクセス許可が付与されていることを確認してください。必要な IAM アクセス許可の詳細については、「 *デベロッパーツールコンソールユーザーガイド*」の[「Connection and Identity and Access Management for Notifications and CodeConnections を使用するためのアクセス権を CodeBuild プロジェクト IAM ロールに付与](#connections-github-role-access)する」を参照してください。 [AWS CodeStar CodeConnections](https://docs.aws.amazon.com/dtconsole/latest/userguide/security-iam.html) 

# GitHub および GitHub Enterprise Server アクセストークン
<a name="access-tokens-github"></a>

## アクセストークンの前提条件
<a name="access-tokens-github-prereqs"></a>

開始する前に、GitHub アクセストークンへの適切なアクセス許可スコープを追加する必要があります。

GitHub では、個人用アクセストークンに次のスコープが必要です。
+ **repo**: プライベートリポジトリのフルコントロールを許可します。
+ **repo:status**: パブリックおよびプライベートリポジトリのコミットステータスへの読み取り/書き込みアクセスを許可します。
+ **admin:repo\$1hook**: リポジトリフックのフルコントロールを許可します。このスコープは、トークンに `repo` スコープがある場合は必要ありません。
+ **admin:org\$1hook**: 組織フックの完全な制御を付与します。このスコープは、組織のウェブフック機能を使用している場合にのみ必要です。

詳細については、GitHub ウェブサイトの [Understanding Scopes for OAuth Apps](https://developer.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/) を参照してください。

きめ細かい個人用アクセストークンを使用している場合、ユースケースによっては、個人用アクセストークンに次のアクセス許可が必要になる場合があります。
+ **Contents: Read-only**: プライベートリポジトリへのアクセスを付与します。このアクセス許可は、プライベートリポジトリをソースとして使用している場合に必要です。
+ **Commit statuses: Read and write**: コミットステータスを作成するアクセス許可を付与します。このアクセス許可は、プロジェクトにウェブフックが設定されている場合、または [ビルドのステータスを報告] 機能が有効になっている場合に必要です。
+ **Webhooks: Read and write**: ウェブフックを管理するアクセス許可を付与します。このアクセス許可は、プロジェクトにウェブフックが設定されている場合に必要です。
+ **Pull requests: Read-only**: プルリクエストにアクセスするアクセス許可を付与します。このアクセス許可は、ウェブフックにプルリクエストイベントに対する `FILE_PATH` フィルタがある場合に必要です。
+ **Administration: Read and write**: このアクセス許可は、CodeBuild でセルフホスト型の GitHub Actions ランナー機能を使用している場合に必要です。詳細については、「[Create a registration token for a repository](https://docs.github.com/en/rest/actions/self-hosted-runners?apiVersion=2022-11-28#create-a-registration-token-for-a-repository)」と「[チュートリアル: CodeBuild がホストする GitHub Actions ランナーを設定](action-runner.md)」を参照してください。

**注記**  
組織リポジトリにアクセスする場合は、アクセストークンのリソース所有者として組織を指定する必要があります。

詳細については、GitHub ウェブサイトの「[Permissions required for fine-grained personal access tokens](https://docs.github.com/en/rest/authentication/permissions-required-for-fine-grained-personal-access-tokens?apiVersion=2022-11-28)」を参照してください。

## GitHub をアクセストークンで接続する（コンソール）
<a name="access-tokens-github-console"></a>

コンソールを使用し、アクセストークンを使用してプロジェクトを GitHub に接続するには、プロジェクトを作成するときに以下の操作を実行します。詳細については、[ビルドプロジェクトの作成 (コンソール)](create-project.md#create-project-console) を参照してください。

1. [**ソースプロバイダー**] で [**GitHub**] を選択します。

1. **[認証情報]** で、次のいずれかを実行します。
   + アカウント認証情報の使用を選択し、アカウントのデフォルトソース認証情報をすべてのプロジェクトに適用します。

     1. GitHub に接続していない場合は、**[Manage account credential]** を選択します。

     1. **[認証情報タイプ]** では、**[個人用アクセストークン]** を選択します。
   + **[Service]** でアカウントレベルの認証情報を使用することを選択した場合は、トークンの保存に使用するサービスを選択し、以下を実行します。

     1. **[Secrets Manager]** を使用する場合は、既存のシークレット接続を使用するか、新しいシークレットを作成して **[Save]** を選択できます。新しいシークレットの作成方法の詳細については、「[Secrets Manager シークレットにトークンを作成して保存](asm-create-secret.md)」を参照してください。

     1. **[CodeBuild]** を使用する場合は、GitHub の個人用アクセストークンを入力し、**[Save]** を選択します。
   + カスタムソース認証情報を使用してアカウントの認証情報設定を上書きする場合のみ、**[Use override credentials for this project only]** を選択します。

     1. 入力された認証情報リストから、**[Personal access token]** の下にあるオプションのいずれかを選択します。

     1. 説明で**新しい個人用アクセストークン接続の作成**を選択することで、新しい個人用アクセストークンを作成することもできます。

## GitHub をアクセストークンで接続する（CLI）
<a name="access-tokens-github-cli"></a>

アクセストークンを使用してプロジェクトを GitHub AWS CLI に接続するには、次の手順に従います。 AWS CLI で を使用する方法については AWS CodeBuild、「」を参照してください[コマンドラインリファレンス](cmd-ref.md)。

1. **import-source-credentials** コマンドを実行します。

   ```
   aws codebuild import-source-credentials --generate-cli-skeleton
   ```

   JSON 形式のデータが出力に表示されます。 AWS CLI がインストールされているローカルコンピュータまたはインスタンスの場所にある ファイル ( など`import-source-credentials.json`) にデータをコピーします。コピーされたデータを次のように変更して、結果を保存します。

   ```
   {
       "serverType": "server-type",
       "authType": "auth-type",
       "shouldOverwrite": "should-overwrite",
       "token": "token",
       "username": "username"
       }
   ```

   以下に置き換えます。
   + *server-type*: 必須値。この認証情報に使用されるソースプロバイダー。有効な値は GITHUB、BITBUCKET、GITHUB\$1ENTERPRISE、GITLAB、GITLAB\$1SELF\$1MANAGED です。
   + *auth-type*: 必須値。リポジトリへの接続に使用される認証のタイプ。有効な値は、OAUTH、BASIC\$1AUTH、PERSONAL\$1ACCESS\$1TOKEN、CODECONNECTIONS、SECRETS\$1MANAGER です。GitHub では、PERSONAL\$1ACCESS\$1TOKEN のみが許可されます。BASIC\$1AUTH は、Bitbucket アプリパスワードでのみ許可されます。
   + *should-overwrite*: オプションの値。リポジトリソースの認証情報が上書きされないようにするには、`false` に設定します。リポジトリソースの認証情報を上書きするには、`true` に設定します。デフォルト値は `true` です。
   + *token*: 必須値。GitHub または GitHub Enterprise Server の場合、これは個人用アクセストークンです。Bitbucket の場合、これは個人用アクセストークンまたはアプリパスワードです。認証タイプが CODECONNECTIONS の場合、これは接続 ARN です。認証タイプが SECRETS\$1MANAGER の場合、これはシークレット ARN です。
   + *username*: オプションの値。このパラメーターは、GitHub および GitHub エンタープライズサーバーソースプロバイダーでは無視されます。

1. アカウントをアクセストークンに接続するには、ステップ 1 で保存した `import-source-credentials.json` ファイルが含まれるディレクトリに切り替え、もう一度 **import-source-credentials** コマンドを実行します。

   ```
   aws codebuild import-source-credentials --cli-input-json file://import-source-credentials.json
   ```

   JSON 形式のデータが、Amazon リソースネーム (ARN) を持つ出力に表示されます。

   ```
   {
       "arn": "arn:aws:codebuild:region:account-id:token/server-type"
       }
   ```
**注記**  
同じサーバータイプと認証タイプを持つ **import-source-credentials** コマンドを 2 回目に実行した場合、保存されたアクセストークンが更新されます。

   アカウントがアクセストークンに接続されたら、CodeBuild を使用して `create-project` プロジェクトを作成できます。詳細については、「[ビルドプロジェクトの作成 (AWS CLI)](create-project.md#create-project-cli)」を参照してください。

1. 接続されたアクセストークンを表示するには、**list-source-credentials** コマンドを実行します。

   ```
   aws codebuild list-source-credentials
   ```

   JSON 形式 `sourceCredentialsInfos` オブジェクトが出力に表示されます。

   ```
   {
           "sourceCredentialsInfos": [
               {
                   "authType": "auth-type",
                   "serverType": "server-type", 
                   "arn": "arn"
               }
           ]
       }
   ```

   `sourceCredentialsObject` には、接続されたソース認証情報のリストが含まれています。
   + `authType` は、認証情報により使用される認証のタイプです。これは、`OAUTH`、`BASIC_AUTH`、`PERSONAL_ACCESS_TOKEN`、`CODECONNECTIONS`、または `SECRETS_MANAGER` です。
   + `serverType` は、ソースプロバイダーのタイプです。これは、`GITHUB`、`GITHUB_ENTERPRISE`、`BITBUCKET`、`GITLAB`、または `GITLAB_SELF_MANAGED` です。
   + `arn` は、トークンの ARN です。

1. ソースプロバイダーから切断してそのアクセストークンを削除するには、その ARN を使用して **delete-source-credentials** コマンドを実行します。

   ```
   aws codebuild delete-source-credentials --arn arn-of-your-credentials
   ```

   削除された認証情報の ARN とともに JSON 形式のデータが返されます。

   ```
   {
       "arn": "arn:aws:codebuild:region:account-id:token/server-type"
       }
   ```

# GitHub OAuth アプリ
<a name="oauth-app-github"></a>

## OAuth を使用して GitHub に接続 (コンソール)
<a name="oauth-app-github-console"></a>

コンソールを使用して、OAuth アプリでプロジェクトを GitHub に接続するには、プロジェクトを作成するときに以下の操作を実行します。詳細については、「[ビルドプロジェクトの作成 (コンソール)](create-project.md#create-project-console)」を参照してください。

1. [**ソースプロバイダー**] で [**GitHub**] を選択します。

1. **[認証情報]** で、次のいずれかを実行します。
   + アカウント認証情報の使用を選択し、アカウントのデフォルトソース認証情報をすべてのプロジェクトに適用します。

     1. GitHub に接続していない場合は、**[Manage account credential]** を選択します。

     1. **[Credential type]** では、**[OAuth]** を選択します。
   + **[Service]** でアカウントレベルの認証情報を使用することを選択した場合は、トークンの保存に使用するサービスを選択し、以下を実行します。

     1. **[Secrets Manager]** を使用する場合は、既存のシークレット接続を使用するか、新しいシークレットを作成して **[Save]** を選択できます。新しいシークレットの作成方法の詳細については、「[Secrets Manager シークレットにトークンを作成して保存](asm-create-secret.md)」を参照してください。

     1. **CodeBuild** を使用する場合は、**[Save]** を選択します。
   + カスタムソース認証情報を使用してアカウントの認証情報設定を上書きする場合のみ、**[Use override credentials for this project only]** を選択します。

     1. 入力された認証情報リストから、**[OAuth app]** の下にあるオプションのいずれかを選択します。

     1. 説明で**新しい Oauth アプリトークン接続の作成**を選択することで、新しい OAuth アプリトークンを作成することもできます。

承認された OAuth アプリを確認するには、GitHub の「[Applications](https://github.com/settings/applications)」に移動し、[aws-codesuite](https://github.com/aws-codesuite) が所有する `AWS CodeBuild (region)` という名前のアプリケーションがリストされていることを確認します。

# CodeBuild での Bitbucket アクセス
<a name="access-tokens-bitbucket-overview"></a>

Bitbucket では、アクセストークン、アプリパスワード、OAuth アプリ、または Bitbucket 接続のいずれかを使用して、ソースプロバイダにアクセスします。

**Topics**
+ [

# Bitbucket アプリ接続
](connections-bitbucket-app.md)
+ [

# Bitbucket アプリのパスワードまたはアクセストークン
](access-tokens-bitbucket.md)
+ [

# Bitbucket OAuth アプリ
](oauth-app-bitbucket.md)

# Bitbucket アプリ接続
<a name="connections-bitbucket-app"></a>

Bitbucket を使用して CodeBuild に接続できます。Bitbucket アプリ接続は [AWS CodeConnections](https://docs.aws.amazon.com/dtconsole/latest/userguide/welcome-connections.html) を通じてサポートされています。

**注記**  
CodeConnections は、使用できるリージョンが CodeBuild よりも限られています。CodeBuild では、クロスリージョン接続を使用できます。オプトインリージョンで作成された接続は、他のリージョンでは使用できません。詳細については、「[AWS CodeConnections エンドポイントとクォータ](https://docs.aws.amazon.com/general/latest/gr/codestar_connections.html)」を参照してください。

**Topics**
+ [

## ステップ 1: Bitbucket への接続を作成 (コンソール)
](#connections-bitbucket-console)
+ [

## ステップ 2: 接続を使用するために CodeBuild プロジェクト IAM ロールにアクセスを許可
](#connections-bitbucket-role-access)
+ [

## ステップ 3: 新しい接続を使用するように CodeBuild を設定
](#connections-bitbucket-account-credential)

## ステップ 1: Bitbucket への接続を作成 (コンソール)
<a name="connections-bitbucket-console"></a>

以下のステップを使用して、CodeBuild コンソールで Bitbucket 内のプロジェクト用に接続を追加します。

**Bitbucket への接続を作成するには**
+ 「*デベロッパーツールユーザーガイド*」にある「[Create a connection to Bitbucket](https://docs.aws.amazon.com/dtconsole/latest/userguide/connections-create-bitbucket.html)」の手順に従ってください。

**注記**  
アカウントで既存の接続を作成または使用する代わりに、別の AWS アカウントから共有された接続を使用できます。詳細については、[AWS 「アカウントとの接続の共有](https://docs.aws.amazon.com/dtconsole/latest/userguide/connections-share.html)」を参照してください。

## ステップ 2: 接続を使用するために CodeBuild プロジェクト IAM ロールにアクセスを許可
<a name="connections-bitbucket-role-access"></a>

CodeBuild プロジェクト IAM ロールに、接続によって提供された Bitbucket トークンを使用するためのアクセス許可を付与できます。

**CodeBuild プロジェクトの IAM ロールにアクセスを付与するには**

1. CodeBuild プロジェクトの [CodeBuild が他の AWS サービスとやり取りすることを許可する](setting-up-service-role.md) の手順に従って、CodeBuild プロジェクトの IAM ロールを作成します。

1. 手順に従って、次の IAM ポリシーを CodeBuild プロジェクトロールに追加して、接続へのアクセスを許可します。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "codeconnections:GetConnectionToken",
                   "codeconnections:GetConnection"
               ],
               "Resource": [
                   "arn:aws:iam::*:role/Service*"
               ]
           }
       ]
   }
   ```

------

## ステップ 3: 新しい接続を使用するように CodeBuild を設定
<a name="connections-bitbucket-account-credential"></a>

接続をアカウントレベルの認証情報として設定し、プロジェクトで使用できます。

------
#### [ AWS マネジメントコンソール ]

**でアカウントレベルの認証情報として接続を設定するには AWS マネジメントコンソール**

1. [**ソースプロバイダー**] で、[**Bitbucket**] を選択します。

1. **[認証情報]** で、次のいずれかを実行します。
   + **[デフォルトソース認証情報]** を選択し、アカウントのデフォルトソース認証情報を使用して、すべてのプロジェクトに適用します。

     1. Bitbucket に接続していない場合は、**[デフォルトソース認証情報を管理]** を選択します。

     1. **[認証情報タイプ]** では、**[CodeConnections]** を選択します。

     1. **[接続]** で、既存の接続を使用するか、新規の接続を作成するかを選択します。
   + **[カスタムソース認証情報]** を選択し、カスタムソース認証情報を使用してアカウントのデフォルト設定を上書きします。

     1. **[認証情報タイプ]** では、**[CodeConnections]** を選択します。

     1. **[接続]** で、既存の接続を使用するか、新規の接続を作成するかを選択します。

------
#### [ AWS CLI ]

**でアカウントレベルの認証情報として接続を設定するには AWS CLI**
+ ターミナル (Linux/macOS/Unix) またはコマンドプロンプト (Windows) を開きます。 AWS CLI を使用して **import-source-credentials** コマンドを実行し、`--token`接続に `--auth-type`、`--server-type`、 を指定します。

  以下のコマンドを使用します。

  ```
  aws codebuild import-source-credentials --auth-type CODECONNECTIONS --server-type BITBUCKET --token <connection-arn>
  ```

------

CodeBuild プロジェクトで複数のトークンを設定する方法の詳細については、「[複数のトークンをソースレベルの認証情報として設定](multiple-access-tokens.md#asm-source-credential)」を参照してください。

# Bitbucket アプリのパスワードまたはアクセストークン
<a name="access-tokens-bitbucket"></a>

## 前提条件
<a name="access-tokens-bitbucket-prerequisites"></a>

開始する前に、Bitbucket アプリのパスワードまたはアクセストークンへの適切なアクセス許可スコープを追加する必要があります。

Bitbucket では、アプリパスワードまたはアクセストークンに次のスコープが必要です。
+ **repository:read**: 承認側ユーザーがアクセスできるすべてのリポジトリへの読み取りアクセスを許可します。
+ **pullrequest:read**: プルリクエストの読み取りアクセスを許可します。プロジェクトに Bitbucket ウェブフックがある場合、アプリパスワードまたはアクセストークンにこのスコープが必要です。
+ **webhook**: Webhook へのアクセスを許可します。プロジェクトにウェブフックペレーションがある場合、アプリパスワードまたはアクセストークンにこのスコープが必要です。
+ **account**: ユーザーのアカウント情報への読み取りアクセスを許可します。

詳細については、Bitbucket ウェブサイトの「[Scopes for Bitbucket Cloud REST API](https://developer.atlassian.com/cloud/bitbucket/bitbucket-cloud-rest-api-scopes/)」と「[OAuth on Bitbucket Cloud](https://confluence.atlassian.com/bitbucket/oauth-on-bitbucket-cloud-238027431.html)」を参照してください。

## アプリケーションパスワードで Bitbucket へ接続する（コンソール）
<a name="access-tokens-bitbucket-password-console"></a>

コンソールを使用し、アクセストークンを使用してプロジェクトを Bitbucket に接続するには、プロジェクトを作成するときに以下の操作を実行します。詳細については、[ビルドプロジェクトの作成 (コンソール)](create-project.md#create-project-console) を参照してください。

1. [**ソースプロバイダー**] で、[**Bitbucket**] を選択します。

1. **[認証情報]** で、次のいずれかを実行します。
   + アカウント認証情報の使用を選択し、アカウントのデフォルトソース認証情報をすべてのプロジェクトに適用します。

     1. Bitbucket に接続していない場合は、**[Manage account credential]** を選択します。

     1. **[認証情報タイプ]** では、**[アプリパスワード]** を選択します。
   + **[Service]** でアカウントレベルの認証情報を使用することを選択した場合は、トークンの保存に使用するサービスを選択し、以下を実行します。

     1. **[Secrets Manager]** を使用する場合は、既存のシークレット接続を使用するか、新しいシークレットを作成して **[Save]** を選択できます。新しいシークレットの作成方法の詳細については、「[Secrets Manager シークレットにトークンを作成して保存](asm-create-secret.md)」を参照してください。

     1. **[CodeBuild]** を使用する場合は、Bitbucket ユーザー名と Bitbucket アプリパスワードを入力し、**[Save]** を選択します。
   + カスタムソース認証情報を使用してアカウントの認証情報設定を上書きする場合のみ、**[Use override credentials for this project only]** を選択します。

     1. 入力された認証情報リストから、**[App password]** の下にあるオプションのいずれかを選択します。

     1. 説明で**新しいアプリパスワード接続の作成**を選択することで、新しいアプリパスワードトークンを作成することもできます。

## アクセストークンを使用して Bitbucket に接続 (コンソール)
<a name="access-tokens-bitbucket-console"></a>

コンソールを使用して、アクセストークンでプロジェクトを Bitbucket に接続するには、プロジェクトを作成するときに以下の操作を実行します。詳細については、「[ビルドプロジェクトの作成 (コンソール)](create-project.md#create-project-console)」を参照してください。

1. [**ソースプロバイダー**] で、[**Bitbucket**] を選択します。

1. **[認証情報]** で、次のいずれかを実行します。
   + アカウント認証情報の使用を選択し、アカウントのデフォルトソース認証情報をすべてのプロジェクトに適用します。

     1. Bitbucket に接続していない場合は、**[Manage account credential]** を選択します。

     1. **[認証情報タイプ]** では、**[個人用アクセストークン]** を選択します。
   + **[Service]** でアカウントレベルの認証情報を使用することを選択した場合は、トークンの保存に使用するサービスを選択し、以下を実行します。

     1. **[Secrets Manager]** を使用する場合は、既存のシークレット接続を使用するか、新しいシークレットを作成して **[Save]** を選択できます。新しいシークレットの作成方法の詳細については、「[Secrets Manager シークレットにトークンを作成して保存](asm-create-secret.md)」を参照してください。

     1. **[CodeBuild]** を使用する場合は、Bitbucket の個人用アクセストークンを入力し、**[Save]** を選択します。
   + カスタムソース認証情報を使用してアカウントの認証情報設定を上書きする場合のみ、**[Use override credentials for this project only]** を選択します。

     1. 入力された認証情報リストから、**[Personal access token]** の下にあるオプションのいずれかを選択します。

     1. 説明で**新しい個人用アクセストークン接続の作成**を選択することで、新しい個人用アクセストークンを作成することもできます。

## アプリパスワードまたはアクセストークンを使用して Bitbucket に接続 (CLI)
<a name="access-tokens-bitbucket-cli"></a>

を使用して、アプリケーションパスワードまたはアクセストークンを使用してプロジェクトを Bitbucket AWS CLI に接続するには、次の手順に従います。 AWS CLI で を使用する方法については AWS CodeBuild、「」を参照してください[コマンドラインリファレンス](cmd-ref.md)。

1. **import-source-credentials** コマンドを実行します。

   ```
   aws codebuild import-source-credentials --generate-cli-skeleton
   ```

   JSON 形式のデータが出力に表示されます。 AWS CLI がインストールされているローカルコンピュータまたはインスタンスの場所にある ファイル ( など`import-source-credentials.json`) にデータをコピーします。コピーされたデータを次のように変更して、結果を保存します。

   ```
   {
       "serverType": "BITBUCKET",
       "authType": "auth-type",
       "shouldOverwrite": "should-overwrite",
       "token": "token",
       "username": "username"
       }
   ```

   以下に置き換えます。
   + *server-type*: 必須値。この認証情報に使用されるソースプロバイダー。有効な値は GITHUB、BITBUCKET、GITHUB\$1ENTERPRISE、GITLAB、GITLAB\$1SELF\$1MANAGED です。
   + *auth-type*: 必須値。リポジトリへの接続に使用される認証のタイプ。有効な値は、OAUTH、BASIC\$1AUTH、PERSONAL\$1ACCESS\$1TOKEN、CODECONNECTIONS、SECRETS\$1MANAGER です。GitHub では、PERSONAL\$1ACCESS\$1TOKEN のみが許可されます。BASIC\$1AUTH は、Bitbucket アプリパスワードでのみ許可されます。
   + *should-overwrite*: オプションの値。リポジトリソースの認証情報が上書きされないようにするには、`false` に設定します。リポジトリソースの認証情報を上書きするには、`true` に設定します。デフォルト値は `true` です。
   + *token*: 必須値。GitHub または GitHub Enterprise Server の場合、これは個人用アクセストークンです。Bitbucket の場合、これは個人用アクセストークンまたはアプリパスワードです。認証タイプが CODECONNECTIONS の場合、これは接続 ARN です。認証タイプが SECRETS\$1MANAGER の場合、これはシークレット ARN です。
   + *username*: オプションの値。このパラメーターは、GitHub および GitHub エンタープライズサーバーソースプロバイダーでは無視されます。

1. アプリパスワードまたはアクセストークンを使用してアカウントに接続するには、ステップ 1 で保存した `import-source-credentials.json` ファイルが含まれるディレクトリに切り替え、もう一度 **import-source-credentials** コマンドを実行します。

   ```
   aws codebuild import-source-credentials --cli-input-json file://import-source-credentials.json
   ```

   JSON 形式のデータが、Amazon リソースネーム (ARN) を持つ出力に表示されます。

   ```
   {
       "arn": "arn:aws:codebuild:region:account-id:token/server-type"
       }
   ```
**注記**  
同じサーバータイプと認証タイプを持つ **import-source-credentials** コマンドを 2 回目に実行した場合、保存されたアクセストークンが更新されます。

   アカウントがアプリパスワードに接続されたら、CodeBuild を使用して `create-project` プロジェクトを作成できます。詳細については、「[ビルドプロジェクトの作成 (AWS CLI)](create-project.md#create-project-cli)」を参照してください。

1. 接続されたアプリパスワードまたはアクセストークンを表示するには、**list-source-credentials** コマンドを実行します。

   ```
   aws codebuild list-source-credentials
   ```

   JSON 形式 `sourceCredentialsInfos` オブジェクトが出力に表示されます。

   ```
   {
           "sourceCredentialsInfos": [
               {
                   "authType": "auth-type",
                   "serverType": "BITBUCKET", 
                   "arn": "arn"
               }
           ]
       }
   ```

   `sourceCredentialsObject` には、接続されたソース認証情報のリストが含まれています。
   + `authType` は、認証情報により使用される認証のタイプです。これは、`OAUTH`、`BASIC_AUTH`、`PERSONAL_ACCESS_TOKEN`、`CODECONNECTIONS`、または `SECRETS_MANAGER` です。
   + `serverType` は、ソースプロバイダーのタイプです。これは、`GITHUB`、`GITHUB_ENTERPRISE`、`BITBUCKET`、`GITLAB`、または `GITLAB_SELF_MANAGED` です。
   + `arn` は、トークンの ARN です。

1. ソースプロバイダから切断して、そのアプリパスワードまたはアクセストークンを削除するには、その ARN を使用して **delete-source-credentials** コマンドを実行します。

   ```
   aws codebuild delete-source-credentials --arn arn-of-your-credentials
   ```

   削除された認証情報の ARN とともに JSON 形式のデータが返されます。

   ```
   {
       "arn": "arn:aws:codebuild:region:account-id:token/server-type"
       }
   ```

# Bitbucket OAuth アプリ
<a name="oauth-app-bitbucket"></a>

## OAuth を使用して Bitbucket に接続 (コンソール)
<a name="oauth-app-bitbucket-console"></a>

コンソールを使用して、OAuth アプリでプロジェクトを Bitbucket に接続するには、プロジェクトを作成するときに以下の操作を実行します。詳細については、「[ビルドプロジェクトの作成 (コンソール)](create-project.md#create-project-console)」を参照してください。

1. [**ソースプロバイダー**] で、[**Bitbucket**] を選択します。

1. **[認証情報]** で、次のいずれかを実行します。
   + アカウント認証情報の使用を選択し、アカウントのデフォルトソース認証情報をすべてのプロジェクトに適用します。

     1. Bitbucket に接続していない場合は、**[Manage account credential]** を選択します。

     1. **[Credential type]** では、**[OAuth]** を選択します。
   + **[Service]** でアカウントレベルの認証情報を使用することを選択した場合は、トークンの保存に使用するサービスを選択し、以下を実行します。

     1. **[Secrets Manager]** を使用する場合は、既存のシークレット接続を使用するか、新しいシークレットを作成して **[Save]** を選択できます。新しいシークレットの作成方法の詳細については、「[Secrets Manager シークレットにトークンを作成して保存](asm-create-secret.md)」を参照してください。

     1. **CodeBuild** を使用する場合は、**[Save]** を選択します。
   + カスタムソース認証情報を使用してアカウントの認証情報設定を上書きする場合のみ、**[Use override credentials for this project only]** を選択します。

     1. 入力された認証情報リストから、**[OAuth app]** の下にあるオプションのいずれかを選択します。

     1. 説明で**新しい Oauth アプリトークン接続の作成**を選択することで、新しい OAuth アプリトークンを作成することもできます。

承認された OAuth アプリを確認するには、Bitbucket の「[Application authorizations](https://bitbucket.org/account/settings/app-authorizations/)」に移動し、`AWS CodeBuild (region)` という名前のアプリケーションがリストされていることを確認します。

# CodeBuild での GitLab アクセス
<a name="access-tokens-gitlab-overview"></a>

GitLab では、GitLab 接続を使用してソースプロバイダにアクセスします。

**Topics**
+ [

## CodeBuild を GitLab に接続
](#connections-gitlab)

## CodeBuild を GitLab に接続
<a name="connections-gitlab"></a>

接続を使用すると、 を使用してサードパーティープロバイダーを AWS リソースに関連付ける設定を承認および確立できます AWS CodeConnections。サードパーティのリポジトリをビルドプロジェクトのソースとして関連付けるには、接続を使用します。

CodeBuild で GitLab または GitLab セルフマネージドソースプロバイダを追加するには、次のいずれかを選択できます。
+ CodeBuild コンソールの **[ビルドプロジェクトを作成]** ウィザードまたは **[ソースを編集]** ページを使用して、**[GitLab]** または **[GitLab セルフマネージド]** プロバイダオプションを選択します。ソースプロバイダを追加するには、「[GitLab (コンソール) への接続を作成する](#connections-gitlab-console)」を参照してください。このコンソールは、接続リソースの作成に役立ちます。
+ 接続リソースを作成するには、CLI を使用します。CLI を使用して接続リソースを作成するには、「[GitLab (CLI) への接続を作成する](#connections-gitlab-cli)」を参照してください。

**注記**  
[**設定**] からデベロッパーツール コンソールを使用して、接続を作成することもできます。[[接続を作成する](https://docs.aws.amazon.com/dtconsole/latest/userguide/connections-create.html)] を参照してください。

**注記**  
この接続のインストールを GitLab で承認すると、アカウントにアクセスしてデータを処理するアクセス許可を当社のサービスに付与したものとみなされます。また、アプリケーションをアンインストールすれば、アクセス許可をいつでも取り消すことができます。

### GitLab への接続を作成する
<a name="connections-gitlab-create"></a>

このセクションでは、GitLab を CodeBuild に接続する方法について説明します。GitLab 接続の詳細については、「[CodeBuild を GitLab に接続](#connections-gitlab)」を参照してください。

開始する前に:
+ GitLab でアカウントを作成しておく必要があります。
**注記**  
接続は、接続の作成と承認に使用されたアカウントで所有するリポジトリへのアクセスだけを提供します。
**注記**  
GitLab で、自分が**所有者**ロールを持っているリポジトリへの接続を作成すると、その接続を CodeBuild などのリソースを含むリポジトリで使用できます。グループ内のリポジトリでは、グループの所有者である必要はありません。
+ ビルドプロジェクトのソースを指定するには、GitLab にリポジトリを作成しておく必要があります。

**Topics**
+ [

#### GitLab (コンソール) への接続を作成する
](#connections-gitlab-console)
+ [

#### GitLab (CLI) への接続を作成する
](#connections-gitlab-cli)

#### GitLab (コンソール) への接続を作成する
<a name="connections-gitlab-console"></a>

以下のステップを使用して、CodeBuild コンソールを使用して GitLab 内のプロジェクト (リポジトリ) 用に接続を追加します。

**注記**  
アカウントで既存の接続を作成または使用する代わりに、別の AWS アカウントから共有された接続を使用できます。詳細については、[AWS 「アカウントとの接続の共有](https://docs.aws.amazon.com/dtconsole/latest/userguide/connections-share.html)」を参照してください。

**ビルドプロジェクトを作成または編集するには**

1. CodeBuild コンソールにサインインします。

1.  次のいずれかを選択します 。
   + [ビルドプロジェクトを作成] を選択します。[ビルドプロジェクトの作成 (コンソール)](create-project.md#create-project-console) の手順に従って最初の画面を完了し、**[ソース]** セクションの **[プロバイダ]** で **[GitLab]** を選択します。
   + 既存のビルドプロジェクトを編集するこを選択します。**[編集]**、**[ソース]** の順に選択します。**[ソースを編集]** ページの **[ソースプロバイダ]** で、**[GitLab]** を選択します。

1. 次のいずれかを選択します。
   + **[接続]** で、**[デフォルト接続]** を選択します。デフォルト接続は、すべてのプロジェクトにデフォルトの GitLab 接続を適用します。
   + **[接続]** で、**[カスタム接続]** を選択します。カスタム接続は、アカウントのデフォルト設定を上書きするカスタム GitLab 接続を適用します。

1. 次のいずれかを行います。
   + **[デフォルト接続]** または **[カスタム接続]** でプロバイダへの接続をまだ作成していない場合は、**[新しい GitLab 接続を作成]** を選択します。ステップ 5 に進んで、接続を作成します。
   + [**接続**] でプロバイダへの接続を既に作成している場合は、その接続を選択します。ステップ 10 に進みます。
**注記**  
GitLab 接続が作成される前にポップアップウィンドウを閉じた場合は、ページを更新する必要があります。

1. GitLab リポジトリへの接続を作成するには、**[プロバイダーを選択する]** で、**[GitLab]** を選択します。[**接続名**] に、作成する接続の名前を入力します。　　　 **[GitLab に接続]** を選択します。  
![\[GitLab 用に選択された接続オプションを示すコンソールのスクリーンショット。\]](http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/images/connections-create-gitlab.png)

1. GitLab のサインインページが表示されたら、認証情報を使用してログインし、**[サインイン]** を選択します。

1. 初めて接続を承認する場合は、承認ページが表示され、GitLab アカウントにアクセスするための接続の承認を求めるメッセージが表示されます。

   [**承認**] を選択します。  
![\[GitLab アカウントの接続を承認するメッセージを示すスクリーンショット。\]](http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/images/gitlab-authorization.png)

1. ブラウザは接続コンソールページに戻ります。**[GitLab 接続設定]** の **[接続名]** に新しい接続が表示されます。

1. **接続** を選択します。

   GitLab 接続が正常に作成されると、上部に成功のバナーが表示されます。

1. **[ビルドプロジェクトを作成]** ページの **[デフォルト接続]** または **[カスタム接続]** のドロップダウンリストで、接続 ARN がリストされていることを確認します。リストされていない場合は、更新ボタンを選択して表示します。

1. **[リポジトリ]** で、プロジェクトのパスと名前空間を指定して、GitLab 内のプロジェクトの名前を選択します。例えば、グループレベルのリポジトリの場合は、リポジトリ名を `group-name/repository-name` の形式で入力します。パスと名前空間の詳細については、[https://docs.gitlab.com/ee/api/projects.html\$1get-single-project](https://docs.gitlab.com/ee/api/projects.html#get-single-project) で `path_with_namespace` フィールドを参照してください。GitLab の名前空間の詳細については、[https://docs.gitlab.com/ee/user/namespace/](https://docs.gitlab.com/ee/user/namespace/) を参照してください。
**注記**  
GitLab 内のグループでは、プロジェクトのパスと名前空間を手動で指定する必要があります。例えば、グループ `mygroup` 内のリポジトリの名前が `myrepo` の場合は、「`mygroup/myrepo`」と入力します。プロジェクトのパスと名前空間は GitLab の URL で見つけることができます。

   

1. **[ソースバージョン - オプション]** で、プルリクエスト ID、ブランチ、コミット ID、コミット ID、タグ、または参照およびコミット ID を入力します。詳細については、「[を使用したソースバージョンサンプル AWS CodeBuild](sample-source-version.md)」を参照してください。
**注記**  
`811dd1ba1aba14473856cee38308caed7190c0d` または `5392f7` のように、コミット ID と似ていない Git ブランチ名を選択することをお勧めします。これにより、Git checkout が実際のコミットと衝突するのを防ぐことができます。

   

1. **[Git のクローンの深さ - オプション]** で、指定されるコミット数で履歴が切り捨てられた浅いクローンを作成できます。完全クローンを希望する場合には、[**Full (完全)**] を選択します。

1. **[ビルドステータス - オプション]** で、ビルドの開始と終了のステータスをソースプロバイダに報告する場合は、**[ビルドの開始時と終了時にソースプロバイダにビルドステータスを報告]** を選択します。

   ソースプロバイダにビルド状態を報告できるようにするには、ソースプロバイダに関連付けられたユーザーがリポジトリへの書き込みアクセス権を持っている必要があります。ユーザーが書き込みアクセス権を持っていない場合、ビルドのステータスは更新できません。詳細については、「[ソースプロバイダーのアクセス](access-tokens.md)」を参照してください。

#### GitLab (CLI) への接続を作成する
<a name="connections-gitlab-cli"></a>

 AWS Command Line Interface (AWS CLI) を使用して接続を作成できます。

これを行うには、**create-connection** コマンドを使用します。

**重要**  
 AWS CLI または を介して作成された接続 AWS CloudFormation は、デフォルトで `PENDING`ステータスです。CLI または との接続を作成したら CloudFormation、コンソールを使用して接続を編集し、ステータスを にします`AVAILABLE`。

**接続を作成するには**
+ 「*デベロッパーツールユーザーガイド*」にある「[Create a connection to GitLab (CLI)](https://docs.aws.amazon.com/dtconsole/latest/userguide/connections-create-gitlab.html#connections-create-gitlab-cli)」の手順に従ってください。

# サービス間での不分別な代理処理の防止
<a name="cross-service-confused-deputy-prevention"></a>

混乱した代理問題は、アクションを実行するためのアクセス許可を持たないエンティティが、より特権のあるエンティティにアクションの実行を強制できてしまう場合に生じる、セキュリティ上の問題です。では AWS、サービス間のなりすましにより、混乱した代理問題が発生する可能性があります。サービス間でのなりすましは、1 つのサービス (*呼び出し元サービス*) が、別のサービス (*呼び出し対象サービス*) を呼び出すときに発生する可能性があります。呼び出し元サービスは、本来ならアクセスすることが許可されるべきではない方法でその許可を使用して、別のお客様のリソースに対する処理を実行するように操作される場合があります。これを防ぐため、 AWS では、アカウントのリソースへのアクセス権が付与されたサービスプリンシパルで、すべてのサービスのデータを保護するために役立つツールを提供しています。

リソースポリシーで [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn)および [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) グローバル条件コンテキストキーを使用して、 がリソースに別のサービス AWS CodeBuild に付与するアクセス許可を制限することをお勧めします。クロスサービスアクセスにリソースを 1 つだけ関連付けたい場合は、`aws:SourceArn` を使用します。そのアカウント内のリソースをクロスサービスの使用に関連付けることを許可する場合は、`aws:SourceAccount` を使用します。

混乱した代理問題から保護するための最も効果的な方法は、リソースの完全な ARN を指定して、`aws:SourceArn` グローバル条件コンテキストキーを使用することです。リソースの完全な ARN が不明な場合や、複数のリソースを指定する場合には、グローバルコンテキスト条件キー `aws:SourceArn` で、ARN の未知部分を示すためにワイルドカード文字 (`*`) を使用します。例えば、`arn:aws:codebuild:*:123456789012:*`。

`aws:SourceArn` の値に Amazon S3 バケット ARN などのアカウント ID が含まれていない場合は、両方のグローバル条件コンテキストキーを使用して、アクセス許可を制限する必要があります。

`aws:SourceArn` の値は CodeBuild プロジェクトの ARN でなければなりません。

次の例では、CodeBuild で `aws:SourceArn` および `aws:SourceAccount` グローバル条件コンテキストキーを使用して、混乱した代理問題を回避する方法を示します。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "codebuild.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "aws:SourceArn": "arn:aws:codebuild:us-east-1:111122223333:project/MyProject"
                }
            }
        }
    ]
}
```

------