Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Beberapa token akses di CodeBuild
CodeBuild mendukung sumber token akses ke penyedia pihak ketiga dari rahasia Anda di dalam AWS Secrets Manager atau melalui AWS CodeConnections koneksi. Anda dapat mengatur rahasia atau koneksi Anda sebagai kredensi default untuk interaksi dengan penyedia pihak ketiga tertentu seperti GitHub, GitHub Enterprise, atau Bitbucket.
Anda dapat mengatur kredentif sumber Anda di tiga tingkat yang berbeda:
-
KredenSIAL tingkat akun untuk semua proyek: Ini adalah kredenSIAL default untuk semua proyek dalam AWS akun. Mereka akan digunakan pada proyek ketika tidak ada kredenSIAL tingkat proyek atau sumber yang ditentukan.
-
KredenSIAL tingkat sumber untuk repositori tertentu: Ini adalah saat rahasia atau CodeConnections koneksi Manajer Rahasia ditentukan pada sumber proyek. KredenSIAL 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 kredenSIAL tingkat akun default.
-
KredenSIAL fallback tingkat proyek: Anda dapat mengatur kredenSIAL fallback tingkat proyek dengan menggunakan
NO_SOURCEsebagai tipe sumber utama dan menentukan rahasia atau koneksi di atasnya. Gunakan ini jika Anda memiliki beberapa sumber pada proyek tetapi ingin menggunakan kredenSIAL yang sama untuk mereka, atau ketika Anda tidak ingin menggunakan kredenSIAL tingkat akun default untuk proyek Anda.
Topik
Langkah 1: Buat rahasia Manajer Rahasia atau CodeConnections koneksi
Gunakan petunjuk berikut untuk membuat rahasia Manajer Rahasia atau CodeConnections koneksi:
Langkah 2: Berikan CodeBuild proyek akses peran IAM ke rahasia Manajer Rahasia
catatan
Sebelum Anda melanjutkan, Anda harus memiliki akses ke token yang dibuat di Manajer Rahasia atau CodeConnections.
Untuk memberikan akses peran IAM CodeBuild proyek ke Manajer Rahasia atau CodeConnections, Anda harus menambahkan kebijakan IAM berikut.
Untuk memberikan CodeBuild akses peran IAM proyek
-
Buat peran IAM untuk CodeBuild proyek Anda dengan mengikuti petunjuk Memungkinkan CodeBuild untuk berinteraksi dengan orang lain AWS layanan untuk CodeBuild proyek Anda.
-
Lakukan salah satu tindakan berikut:
-
Tambahkan kebijakan IAM berikut ke peran CodeBuild proyek Anda untuk memberikan akses ke rahasia Anda.
(Opsional) Jika menggunakan kunci yang dikelola AWS KMS pelanggan untuk mengenkripsi rahasia Manajer Rahasia, Anda dapat menambahkan pernyataan kebijakan berikut untuk memberikan akses.
-
Tambahkan kebijakan IAM berikut ke peran CodeBuild proyek Anda untuk memberikan akses ke koneksi Anda.
-
Langkah 3: Konfigurasikan Manajer Rahasia atau CodeConnections token
Anda dapat mengatur kredentif sumber Anda di tiga level berbeda dengan Manajer Rahasia atau CodeConnections token.
Konfigurasikan Manajer Rahasia atau CodeConnections token sebagai kredenSIAL tingkat akun
Anda dapat mengonfigurasi rahasia atau CodeConnections koneksi Manajer Rahasia sebagai kredensi tingkat akun dan menggunakannya dalam proyek.
Anda sekarang dapat menggunakan token dalam proyek build Anda dan menjalankannya. Untuk informasi selengkapnya, lihat Membuat proyek pembangunan di AWS CodeBuild dan Jalankan AWS CodeBuild build secara manual.
Konfigurasikan beberapa token sebagai kredentif tingkat sumber
Untuk menggunakan rahasia atau CodeConnections koneksi Secrets Manager sebagai kredentif tingkat sumber, langsung referensi token dalam CodeBuild proyek, dan mulai build.
Menetapkan fallback kredensia sumber tingkat proyek
Untuk mengatur fallback kredensia sumber tingkat proyek, gunakan NO_SOURCE untuk sumber utama proyek Anda dan referensi token.
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>
Saat menggunakanNO_SOURCE, buildspec biasanya disediakan dalam model sumber karena tidak secara langsung dikonfigurasi untuk menggunakan sumber eksternal untuk mengambil buildspec. Buat referensi spesifikasi untuk CodeBuild Umumnya, NO_SOURCE sumber akan menangani kloning semua repositori yang relevan dari dalam buildspec. Untuk memastikan kredenSIAL 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 kredenSIAL token untuk semua permintaan git ke penyedia sumber pihak ketiga tertentu.
Opsi penyiapan tambahan
Anda dapat mengonfigurasi kredentif tingkat akun Secrets Manager dengan menggunakan CloudFormation templat. Anda dapat menggunakan 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 CloudFormation atribut DependsOn untuk memastikan proyek AccountCredential dibuat sebelum proyek.
Anda juga dapat mengonfigurasi beberapa kredentif tingkat sumber Secrets Manager dengan menggunakan CloudFormation templat. Anda dapat menggunakan 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/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