Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
CodeBuild mendukung sumber token akses ke penyedia pihak ketiga dari rahasia Anda di dalam AWS Secrets Manager atau melalui AWS CodeConnections koneksi. Anda dapat menetapkan rahasia atau koneksi Anda sebagai kredensi default untuk interaksi dengan penyedia pihak ketiga tertentu seperti GitHub, GitHub Enterprise, atau Bitbucket.
Anda dapat mengatur kredensi sumber Anda di tiga tingkatan yang berbeda:
-
Kredensial tingkat akun untuk semua proyek: Ini adalah kredensi default untuk semua proyek dalam akun. AWS Mereka akan digunakan pada proyek ketika tidak ada kredenal tingkat proyek atau sumber yang ditentukan.
-
Kredensial tingkat sumber untuk repositori tertentu: Ini adalah saat rahasia atau CodeConnections koneksi Secrets Manager didefinisikan pada sumber proyek. Kredensi ini hanya akan digunakan untuk operasi pada repositori sumber yang ditentukan. Ini memungkinkan Anda untuk mengatur beberapa token akses dengan cakupan izin yang berbeda dalam proyek yang sama, dan tidak menggunakan kredenal tingkat akun default.
-
Kredensial fallback tingkat proyek: Anda dapat mengatur kredensi fallback tingkat proyek dengan menggunakan
NO_SOURCE
sebagai tipe sumber utama dan menentukan rahasia atau koneksi di dalamnya. Ini dapat digunakan ketika Anda memiliki beberapa sumber pada proyek, tetapi ingin menggunakan kredensi yang sama untuk mereka, atau ketika Anda tidak ingin menggunakan kredenal tingkat akun default untuk proyek Anda.
Topik
Langkah 1: Buat rahasia Secrets Manager atau CodeConnections koneksi
Gunakan petunjuk berikut untuk membuat rahasia Secrets Manager atau CodeConnections koneksi:
Langkah 2: Berikan akses IAM peran CodeBuild proyek ke rahasia Secrets Manager
catatan
Sebelum melanjutkan, Anda harus memiliki akses ke token yang dibuat di Secrets Manager atau CodeConnections.
Untuk memberikan akses IAM peran CodeBuild proyek ke Secrets Manager atau CodeConnections, Anda harus menambahkan IAM kebijakan berikut.
Untuk memberikan akses IAM peran CodeBuild proyek
-
Buat IAM peran untuk CodeBuild proyek Anda dengan mengikuti petunjuk Memungkinkan CodeBuild untuk berinteraksi dengan AWS layanan lain untuk CodeBuild proyek Anda.
-
Lakukan salah satu hal berikut ini:
-
Tambahkan IAM kebijakan berikut ke peran CodeBuild proyek Anda untuk memberikan akses ke rahasia Anda.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "
<secret-arn>
" ] } ] }(Opsional) Jika Anda menggunakan kunci terkelola AWS KMS pelanggan untuk mengenkripsi rahasia Secrets Manager, Anda dapat menambahkan pernyataan kebijakan berikut untuk memberikan akses.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": "
<kms-key-arn>
", "Condition": { "StringEquals": { "kms:EncryptionContext:SecretARN": "<secret-arn>
" } } } ] } -
Tambahkan IAM kebijakan berikut ke peran CodeBuild proyek Anda untuk memberikan akses ke koneksi Anda.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codeconnections:GetConnectionToken", "codeconnections:GetConnection" ], "Resource": [
<connection-arn>
] } ] }
-
Langkah 3: Konfigurasikan Secrets Manager atau CodeConnections token
Anda dapat mengatur kredensi sumber Anda di tiga level berbeda dengan Secrets Manager atau CodeConnections token.
Konfigurasikan Secrets Manager atau CodeConnections token sebagai kredensi tingkat akun
Anda dapat mengonfigurasi rahasia Secrets Manager atau CodeConnections koneksi sebagai kredensi tingkat akun dan menggunakannya dalam proyek.
Untuk mengonfigurasi koneksi sebagai kredensi tingkat akun di AWS Management Console
-
Untuk penyedia Sumber, pilih Bitbucket, GitHub, atau GitHub Enterprise.
-
Untuk Credential, lakukan salah satu hal berikut:
-
Pilih Kredensi sumber default untuk menggunakan kredensi sumber default akun Anda untuk diterapkan ke semua proyek.
-
Jika Anda tidak tersambung ke penyedia sumber, pilih Kelola kredensi sumber default.
-
Untuk tipe Credential, pilih jenis kredensi.
-
Jika Anda memilih CodeConnections, pilih untuk menggunakan koneksi yang ada atau buat koneksi baru.
Jika Anda memilih jenis kredensi yang berbeda, untuk Layanan pilih layanan mana yang ingin Anda gunakan untuk menyimpan token Anda dan lakukan hal berikut:
-
Jika Anda memilih untuk menggunakan Secrets Manager, Anda dapat memilih untuk menggunakan koneksi rahasia yang ada atau membuat rahasia baru dan memilih Simpan. Untuk informasi selengkapnya cara membuat rahasia baru, lihatBuat dan simpan token dalam rahasia Secrets Manager.
-
Jika Anda memilih untuk menggunakan CodeBuild, masukkan token atau nama pengguna dan kata sandi aplikasi Anda, dan pilih Simpan.
-
-
-
Pilih Kredensi sumber kustom untuk menggunakan kredensi sumber kustom untuk mengganti setelan default akun Anda.
-
Untuk tipe Credential, pilih jenis kredensi.
-
Di Koneksi, pilih untuk menggunakan koneksi yang ada atau buat koneksi baru.
-
-
Anda sekarang dapat menggunakan token dalam proyek build Anda dan menjalankannya. Untuk informasi selengkapnya, silakan lihat Buat proyek build di AWS CodeBuild dan Jalankan AWS CodeBuild build secara manual.
Konfigurasikan beberapa token sebagai kredenal tingkat sumber
Untuk menggunakan rahasia atau CodeConnections koneksi Secrets Manager sebagai kredenal tingkat sumber, langsung rujuk token dalam CodeBuild proyek, dan mulai build.
Untuk mengonfigurasi beberapa token sebagai kredensi tingkat sumber di AWS Management Console
-
Untuk penyedia Sumber, pilih GitHub.
-
Untuk Credential, lakukan salah satu hal berikut:
-
Pilih Kredensi sumber default untuk menggunakan kredensi sumber default akun Anda untuk diterapkan ke semua proyek.
-
Jika Anda tidak tersambung GitHub, pilih Kelola kredensi sumber default.
-
Untuk jenis Kredenal, pilih GitHub Aplikasi.
-
Di Koneksi, pilih untuk menggunakan koneksi yang ada atau buat koneksi baru.
-
-
Pilih Kredensi sumber kustom untuk menggunakan kredensi sumber kustom untuk mengganti setelan default akun Anda.
-
Untuk jenis Kredenal, pilih GitHub Aplikasi.
-
Di Koneksi, pilih untuk menggunakan koneksi yang ada atau buat koneksi baru.
-
-
-
Pilih Tambahkan sumber dan ulangi proses memilih penyedia sumber dan kredensialnya.
Tetapkan fallback kredenal sumber tingkat proyek
Untuk menyiapkan fallback kredenal sumber tingkat proyek, gunakan NO_SOURCE
untuk sumber utama proyek Anda dan referensikan tokennya.
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>
Saat menggunakanNO_SOURCE, buildspec biasanya disediakan dalam model sumber karena tidak dikonfigurasi secara langsung untuk menggunakan sumber eksternal untuk mengambil buildspec. Umumnya, NO_SOURCE
sumber akan menangani kloning semua repositori yang relevan dari dalam buildspec. Untuk memastikan kredenal yang dikonfigurasi tersedia untuk operasi tersebut, Anda dapat mengaktifkan git-credential-helper
opsi di buildspec.
env:
git-credential-helper: yes
Selama pembuatan, kemudian CodeBuild akan membaca AuthServer
bidang dari token yang dikonfigurasi dan menggunakan kredenal token untuk semua permintaan git ke penyedia sumber pihak ketiga tertentu.
Opsi penyiapan tambahan
Anda dapat mengonfigurasi kredensi tingkat akun Secrets Manager dengan menggunakan AWS CloudFormation templat. Anda dapat menggunakan AWS CloudFormation template berikut untuk menetapkan kredensi tingkat akun:
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
catatan
Jika Anda juga membuat proyek di tumpukan yang sama, gunakan AWS CloudFormation atribut DependsOnuntuk memastikan AccountCredential
dibuat sebelum proyek.
Anda juga dapat mengonfigurasi Secrets Manager beberapa kredenal tingkat sumber dengan menggunakan AWS CloudFormation templat. Anda dapat menggunakan AWS CloudFormation template berikut untuk menggunakan beberapa token untuk menarik beberapa sumber:
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