翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
CodeBuild の複数のアクセストークン
CodeBuild は、 のシークレットから、 AWS Secrets Manager または AWS CodeConnections 接続を介して、サードパーティープロバイダーへのアクセストークンの調達をサポートしています。シークレットまたは接続は、GitHub、GitHub Enterprise、Bitbucket などの指定されたサードパーティープロバイダとのやり取りのデフォルトの認証情報として設定できます。
ソース認証情報は、次の 3 つの異なるレベルで設定できます。
-
すべてのプロジェクトのアカウントレベルの認証情報: これらは、 AWS アカウント内のすべてのプロジェクトのデフォルトの認証情報です。プロジェクトまたはソースレベルの認証情報が指定されていない場合、プロジェクトで使用されます。
-
特定のリポジトリのソースレベルの認証情報: これは、プロジェクトソースで Secrets Manager シークレットまたは CodeConnections 接続が定義されている場合です。これらの認証情報は、指定されたソースリポジトリでのオペレーションにのみ使用されます。これにより、同じプロジェクトで異なるアクセス許可スコープを持つ複数のアクセストークンを設定でき、デフォルトのアカウントレベルの認証情報を使用しないようにすることができます。
-
プロジェクトレベルのフォールバック認証情報: プライマリソースタイプとして
NO_SOURCE
を使用してプロジェクトレベルのフォールバック認証情報を設定し、それにシークレットまたは接続を定義できます。これは、プロジェクトに複数のソースがあるものの、同じ認証情報をそれらのソースに使用する場合、またはプロジェクトのデフォルトのアカウントレベルの認証情報を使用しない場合に使用できます。
トピック
ステップ 1: Secrets Manager シークレットまたは CodeConnections 接続を作成
Secrets Manager シークレットまたは CodeConnections 接続を作成するには、次の手順に従います。
ステップ 2: CodeBuild プロジェクトの IAM ロールに Secrets Manager シークレットへのアクセスを許可
注記
続行する前に、Secrets Manager または CodeConnections で作成されたトークンにアクセスできるようにしておく必要があります。
CodeBuild プロジェクトの IAM ロールに Secrets Manager または CodeConnections へのアクセスを許可するには、次の IAM ポリシーを追加する必要があります。
CodeBuild プロジェクトの IAM ロールにアクセスを許可するには
-
CodeBuild プロジェクトの CodeBuild が他の AWS のサービスとやり取りすることを許可 の手順に従って、CodeBuild プロジェクトの IAM ロールを作成します。
-
次のいずれかを行います:
-
CodeBuild プロジェクトロールに次の IAM ポリシーを追加して、シークレットへのアクセスを許可します。
{ "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>
" } } } ] } -
CodeBuild プロジェクトロールに次の IAM ポリシーを追加して、接続へのアクセスを許可します。
{ "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/amazonlinux-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 属性 DependsOn を使用して、プロジェクトの前に AccountCredential
が作成されていることを確認します。
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/amazonlinux-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