翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
の複数のアクセストークン CodeBuild
CodeBuild は、 内 AWS Secrets Manager または AWS CodeConnections 接続を介したシークレットからのサードパーティープロバイダーへのアクセストークンの調達をサポートします。シークレットまたは接続は、、 GitHub GitHub エンタープライズ、Bitbucket などの指定されたサードパーティープロバイダーとのやり取りのデフォルトの認証情報として設定できます。
ソース認証情報は、次の 3 つの異なるレベルで設定できます。
-
すべてのプロジェクトのアカウントレベルの認証情報: これらは AWS 、アカウント内のすべてのプロジェクトのデフォルトの認証情報です。これらは、プロジェクトまたはソースレベルの認証情報が指定されていない場合、プロジェクトで使用されます。
-
特定のリポジトリのソースレベルの認証情報: これは、プロジェクトソースで Secrets Manager のシークレットまたは CodeConnections 接続が定義されている場合です。これらの認証情報は、指定されたソースリポジトリでのオペレーションにのみ使用されます。これにより、同じプロジェクト内で異なるアクセス許可スコープを持つ複数のアクセストークンをセットアップでき、デフォルトのアカウントレベルの認証情報を使用することはできません。
-
プロジェクトレベルのフォールバック認証情報: をプライマリソースタイプ
NO_SOURCE
として使用して、プロジェクトレベルのフォールバック認証情報を設定し、そこにシークレットまたは接続を定義できます。これは、プロジェクトに複数のソースがあるが、それらのソースに同じ認証情報を使用する場合、またはプロジェクトにデフォルトのアカウントレベルの認証情報を使用しない場合に使用できます。
トピック
ステップ 1: Secrets Manager シークレットまたは CodeConnections 接続を作成する
Secrets Manager シークレットまたは CodeConnections 接続を作成するには、次の手順に従います。
ステップ 2: Secrets Manager シークレットへのアクセス権を CodeBuild プロジェクトIAMロールに付与する
注記
続行する前に、Secrets Manager または で作成されたトークンにアクセスできる必要があります CodeConnections。
Secrets Manager または へのアクセス権を CodeBuild プロジェクトIAMロールに付与するには CodeConnections、次のIAMポリシーを追加する必要があります。
CodeBuild プロジェクトIAMロールにアクセス権を付与するには
-
CodeBuild プロジェクトの の手順に従って、 CodeBuild プロジェクトの IAMロール CodeBuild が他の AWS サービスとやり取りすることを許可するを作成します。
-
次のいずれかを行います。
-
次のIAMポリシーを CodeBuild プロジェクトロールに追加して、シークレットへのアクセスを許可します。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "
<secret-arn>
" ] } ] }(オプション) AWS KMS カスタマーマネージドキーを使用して Secrets Manager シークレットを暗号化する場合は、次のポリシーステートメントを追加してアクセスを許可できます。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": "
<kms-key-arn>
", "Condition": { "StringEquals": { "kms:EncryptionContext:SecretARN": "<secret-arn>
" } } } ] } -
次のIAMポリシーを CodeBuild プロジェクトロールに追加して、接続へのアクセスを許可します。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codeconnections:GetConnectionToken", "codeconnections:GetConnection" ], "Resource": [
<connection-arn>
] } ] }
-
ステップ 3: Secrets Manager または CodeConnections トークンを設定する
Secrets Manager または CodeConnections トークンを使用して、ソース認証情報を 3 つの異なるレベルで設定できます。
Secrets Manager または CodeConnections トークンをアカウントレベルの認証情報として設定する
Secrets Manager のシークレットまたは CodeConnections 接続をアカウントレベルの認証情報として設定し、プロジェクトで使用できます。
トークンをビルドプロジェクトで使用して実行できるようになりました。詳細については、「でビルドプロジェクトを作成する AWS CodeBuild」および「AWS CodeBuild ビルドを手動で実行する」を参照してください。
ソースレベルの認証情報として複数のトークンを設定する
Secrets Manager のシークレットまたは CodeConnections 接続をソースレベルの認証情報として使用するには、 CodeBuild プロジェクト内のトークンを直接参照し、ビルドを開始します。
プロジェクトレベルのソース認証情報のフォールバックを設定する
プロジェクトレベルのソース認証情報のフォールバックを設定するには、プロジェクトのプライマリソースNO_SOURCE
に を使用し、トークンを参照します。
aws codebuild create-project \ --name
<project-name>
\ --service-role<service-role-name>
\ --artifacts type=NO_ARTIFACTS \ --environment "type=LINUX_CONTAINER, computeType=BUILD_GENERAL1_SMALL, image=aws/codebuild/amazonlinux2-x86_64-standard:5.0" \ --service-role<service-role-name>
\ --source "type=NO_SOURCE, auth={type=SECRETS_MANAGER,resource=<secret-or-connection-arn>
}, buildspec=<buildspec>
" --secondary-sources "type=GITHUB, location=<github-repository>
, sourceIdentifier=secondary" aws codebuild start-build --region<aws-region>
--project-name<project_name>
を使用する場合NO_SOURCE
、通常、buildspec はソースモデル内で提供されます。これは、外部ソースを使用して buildspec を取得するように直接設定されていないためです。通常、NO_SOURCE
ソースは buildspec 内から関連するすべてのリポジトリのクローンを作成します。設定された認証情報がこれらのオペレーションで使用できるようにするには、buildspec で git-credential-helper
オプションを有効にします。
env: git-credential-helper: yes
ビルド中、 CodeBuild は設定されたトークンから AuthServer
フィールドを読み取り、その特定のサードパーティーのソースプロバイダーへのすべての git リクエストにトークン認証情報を使用します。
追加のセットアップオプション
AWS CloudFormation テンプレートを使用して、Secrets Manager のアカウントレベルの認証情報を設定できます。次の AWS CloudFormation テンプレートを使用して、アカウントレベルの認証情報を設定できます。
Parameters: GitHubToken: Type: String NoEcho: true Default: placeholder Resources: CodeBuildAuthTokenSecret: Type: AWS::SecretsManager::Secret Properties: Description: CodeBuild auth token Name: codebuild-auth-token SecretString: !Join - '' - - '{"ServerType":"GITHUB","AuthType":"PERSONAL_ACCESS_TOKEN","Token":"' - !Ref GitHubToken - '"}' Tags: - Key: codebuild:source:provider Value: github - Key: codebuild:source:type Value: personal_access_token CodeBuildSecretsManagerAccountCredential: Type: AWS::CodeBuild::SourceCredential Properties: ServerType: GITHUB AuthType: SECRETS_MANAGER Token: !Ref CodeBuildAuthTokenSecret
注記
同じスタック内にプロジェクトも作成する場合は、 AWS CloudFormation 属性を使用して、プロジェクトの前に AccountCredential
が作成されDependsOnていることを確認します。
AWS CloudFormation テンプレートを使用して、Secrets Manager の複数のソースレベルの認証情報を設定することもできます。次の AWS CloudFormation テンプレートを使用して、複数のトークンを使用して複数のソースをプルできます。
Parameters: GitHubTokenOne: Type: String NoEcho: true Default: placeholder GitHubTokenTwo: Type: String NoEcho: true Default: placeholder Resources: CodeBuildSecretsManagerProject: Type: AWS::CodeBuild::Project Properties: Name: codebuild-multitoken-example ServiceRole:
<service-role>
Environment: Type: LINUX_CONTAINER ComputeType: BUILD_GENERAL1_SMALL Image: aws/codebuild/amazonlinux2-x86_64-standard:5.0 Source: Type: GITHUB Location:<github-repository-one>
Auth: Type: SECRETS_MANAGER Resource: !Ref CodeBuildAuthTokenSecretOne SecondarySources: - Type: GITHUB Location:<github-repository-two>
Auth: Type: SECRETS_MANAGER Resource: !Ref CodeBuildAuthTokenSecretTwo SourceIdentifier: secondary Artifacts: Type: NO_ARTIFACTS LogsConfig: CloudWatchLogs: Status: ENABLED CodeBuildProjectIAMRoleSecretAccess: Type: AWS::IAM::RolePolicy Properties: RoleName:<role-name>
PolicyName: CodeBuildProjectIAMRoleSecretAccessPolicy PolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Action: - secretsmanager:GetSecretValue Resource: - !Ref CodeBuildAuthTokenSecretOne - !Ref CodeBuildAuthTokenSecretTwo CodeBuildAuthTokenSecretOne: Type: AWS::SecretsManager::Secret Properties: Description: CodeBuild auth token one Name: codebuild-auth-token-one SecretString: !Join - '' - - '{"ServerType":"GITHUB","AuthType":"PERSONAL_ACCESS_TOKEN","Token":"' - !Ref GitHubTokenOne - '"}' Tags: - Key: codebuild:source:provider Value: github - Key: codebuild:source:type Value: personal_access_token CodeBuildAuthTokenSecretTwo: Type: AWS::SecretsManager::Secret Properties: Description: CodeBuild auth token two Name: codebuild-auth-token-two SecretString: !Join - '' - - '{"ServerType":"GITHUB","AuthType":"PERSONAL_ACCESS_TOKEN","Token":"' - !Ref GitHubTokenTwo - '"}' Tags: - Key: codebuild:source:provider Value: github - Key: codebuild:source:type Value: personal_access_token