

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
<a name="multiple-access-tokens"></a>

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:

1. **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.

1. **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.

1. **KredenSIAL fallback tingkat proyek: ** Anda dapat mengatur kredenSIAL fallback tingkat proyek dengan menggunakan `NO_SOURCE` sebagai 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.

**Topics**
+ [Langkah 1: Buat rahasia Manajer Rahasia atau CodeConnections koneksi](#create-secret-connection)
+ [Langkah 2: Berikan CodeBuild proyek akses peran IAM ke rahasia Manajer Rahasia](#asm-role-access)
+ [Langkah 3: Konfigurasikan Manajer Rahasia atau CodeConnections token](#asm-account-credential)
+ [Opsi penyiapan tambahan](#asm-credential-cfn)

## Langkah 1: Buat rahasia Manajer Rahasia atau CodeConnections koneksi
<a name="create-secret-connection"></a>

Gunakan petunjuk berikut untuk membuat rahasia Manajer Rahasia atau CodeConnections koneksi:
+ [Buat dan simpan token di rahasia Manajer Rahasia](asm-create-secret.md).
+ [Buat koneksi ke GitHub ](https://docs.aws.amazon.com/dtconsole/latest/userguide/connections-create-github.html)
+ [Buat koneksi ke Server GitHub Perusahaan ](https://docs.aws.amazon.com/dtconsole/latest/userguide/connections-create-gheserver.html)
+ [Buat koneksi ke Bitbucket ](https://docs.aws.amazon.com/dtconsole/latest/userguide/connections-create-bitbucket.html)

## Langkah 2: Berikan CodeBuild proyek akses peran IAM ke rahasia Manajer Rahasia
<a name="asm-role-access"></a>

**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**

1. Buat peran IAM untuk CodeBuild proyek Anda dengan mengikuti petunjuk [Memungkinkan CodeBuild untuk berinteraksi dengan orang lain AWS layanan](setting-up-service-role.md) untuk CodeBuild proyek Anda.

1. Lakukan salah satu tindakan berikut:
   + Tambahkan kebijakan IAM berikut ke peran CodeBuild proyek Anda untuk memberikan akses ke rahasia Anda.

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

****  

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

------

     (Opsional) Jika menggunakan kunci yang dikelola AWS KMS pelanggan untuk mengenkripsi rahasia Manajer Rahasia, Anda dapat menambahkan pernyataan kebijakan berikut untuk memberikan akses.

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

****  

     ```
     {
         "Version":"2012-10-17",		 	 	 
         "Statement": [
             {
                 "Effect": "Allow",
                 "Action": [
                     "kms:Decrypt"
                 ],
                 "Resource": "{{arn:aws:iam::*:role/Service*}}",
                 "Condition": {
                     "StringEquals": {
                         "kms:EncryptionContext:SecretARN": "{{arn:aws:iam::*:role/Service*}}"
                     }
                 }
             }
         ]
     }
     ```

------
   + Tambahkan kebijakan IAM berikut ke peran CodeBuild proyek Anda untuk memberikan akses ke koneksi Anda.

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

****  

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

------

## Langkah 3: Konfigurasikan Manajer Rahasia atau CodeConnections token
<a name="asm-account-credential"></a>

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
<a name="asm-account-credential"></a>

Anda dapat mengonfigurasi rahasia atau CodeConnections koneksi Manajer Rahasia sebagai kredensi tingkat akun dan menggunakannya dalam proyek.

------
#### [ Konsol Manajemen AWS ]

**Untuk mengonfigurasi koneksi sebagai kredensi tingkat akun di Konsol Manajemen AWS**

1. Untuk ** Penyedia Sumber**, pilih ** Bitbucket**, ** GitHub**, atau ** GitHub Enterprise**. 

1. Untuk ** Credential**, lakukan salah satu hal berikut:
   + Pilih Kredensi sumber ** default ** untuk menggunakan kredensi sumber default akun Anda untuk diterapkan ke semua proyek.

     1. Jika Anda tidak terhubung ke penyedia sumber, pilih Kel ** ola kreden ** si sumber default.

     1. Untuk jenis ** kredensi**, pilih jenis kredensi.

     1. Jika Anda memilih ** CodeConnections**, pilih untuk menggunakan koneksi yang ada atau membuat 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 Manajer ** Rahasia**, Anda dapat memilih untuk menggunakan koneksi rahasia yang ada atau membuat rahasia baru dan memilih S ** impan**. Untuk informasi lebih lanjut cara membuat rahasia baru, lihat[Buat dan simpan token di rahasia Manajer Rahasia](asm-create-secret.md).
        + Jika Anda memilih untuk menggunakan ** CodeBuild**, masukkan token Anda atau nama pengguna dan kata sandi aplikasi Anda, lalu pilih S ** impan**. Untuk token API Bitbucket, masukkan alamat email akun Atlassian Anda dan token API sebagai gantinya.
   + Pilih Kredensi sumber ** kustom ** untuk menggunakan kredensi sumber kustom untuk mengganti setelan default akun Anda.

     1. Untuk jenis ** kredensi**, pilih jenis kredensi.

     1. Di ** Koneksi**, pilih untuk menggunakan koneksi yang ada atau membuat koneksi baru.

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

**Untuk mengonfigurasi koneksi sebagai kredensi tingkat akun di AWS CLI**
+ Buka terminal (Linux, macOS, atau Unix) atau command prompt (Windows). Gunakan AWS CLI untuk menjalankan **import-source-credentials** perintah.

  Gunakan perintah berikut untuk mengonfigurasi rahasia Manajer Rahasia:

  ```
  aws codebuild import-source-credentials \
      --token "{{<secret-arn>}}" \
      --server-type {{<source-provider>}} \
      --auth-type SECRETS_MANAGER \
      --region {{<aws-region>}}
  ```

  Gunakan perintah berikut untuk mengkonfigurasi CodeConnections koneksi:

  ```
  aws codebuild import-source-credentials \
      --token "{{<connection-arn>}}" \
      --server-type {{<source-provider>}} \
      --auth-type CODECONNECTIONS \
      --region {{<aws-region>}}
  ```

  Perintah ini memungkinkan Anda untuk mengimpor token sebagai kredentif sumber default tingkat akun. Saat Anda mengimpor kredensi menggunakan [ ImportSourceCredentials ](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_ImportSourceCredentials.html) API, token CodeBuild akan digunakan untuk semua interaksi dengan penyedia sumber, seperti webhook, pelaporan status build, dan operasi git clone kecuali kumpulan kredenSIAL yang lebih spesifik telah dikonfigurasi dalam proyek.

------

Anda sekarang dapat menggunakan token dalam proyek build Anda dan menjalankannya. Untuk informasi selengkapnya, lihat [Membuat proyek pembangunan di AWS CodeBuild](create-project.md) dan [Jalankan AWS CodeBuild build secara manual](run-build.md).

### Konfigurasikan beberapa token sebagai kredentif tingkat sumber
<a name="asm-source-credential"></a>

Untuk menggunakan rahasia atau CodeConnections koneksi Secrets Manager sebagai kredentif tingkat sumber, langsung referensi token dalam CodeBuild proyek, dan mulai build.

------
#### [ Konsol Manajemen AWS ]

**Untuk mengonfigurasi beberapa token sebagai kredentif tingkat sumber di Konsol Manajemen AWS**

1. Untuk ** Penyedia Sumber**, pilih ** GitHub**. 

1. Untuk ** Credential**, lakukan salah satu hal berikut:
   + Pilih Kredensi sumber ** default ** untuk menggunakan kredensi sumber default akun Anda untuk diterapkan ke semua proyek.

     1. Jika Anda tidak terhubung GitHub, pilih Kel ** ola kreden ** si sumber default.

     1. Untuk ** Jenis kredensi**, pilih ** GitHub Aplikasi**.

     1. Di ** Koneksi**, pilih untuk menggunakan koneksi yang ada atau membuat koneksi baru.
   + Pilih Kredensi sumber ** kustom ** untuk menggunakan kredensi sumber kustom untuk mengganti setelan default akun Anda.

     1. Untuk ** Jenis kredensi**, pilih ** GitHub Aplikasi**.

     1. Di ** Koneksi**, pilih untuk menggunakan koneksi yang ada atau membuat koneksi baru.

1. Pilih ** Tambahkan sumber ** dan ulangi proses memilih penyedia sumber dan kredenSIAL Anda.

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

**Untuk mengonfigurasi beberapa token sebagai kredentif tingkat sumber di AWS CLI**
+ Buka terminal (Linux, macOS, atau Unix) atau command prompt (Windows). Gunakan AWS CLI untuk menjalankan **create-project** perintah.

  Gunakan perintah berikut ini.

  ```
  aws codebuild create-project --region {{<aws-region>}} \
      --name {{<project-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=GITHUB,
                location={{<github-repository-1>}},
                auth={type=SECRETS_MANAGER,resource={{<secret-or-connection-arn-1>}}}" \
      --secondary-sources "type=GITHUB,
                location={{<github-repository-2>}},
                auth={type=SECRETS_MANAGER,resource={{<secret-or-connection-arn-2>}}},
                sourceIdentifier=secondary"
  
  aws codebuild start-build --region {{<aws-region>}} --project-name {{<project-name>}}
  ```

------

### Menetapkan fallback kredensia sumber tingkat proyek
<a name="asm-project-credential"></a>

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 menggunakan`NO_SOURCE`, buildspec biasanya disediakan dalam model sumber karena tidak secara langsung dikonfigurasi untuk menggunakan sumber eksternal untuk mengambil buildspec. [Buat referensi spesifikasi untuk CodeBuild](build-spec-ref.md) 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
<a name="asm-credential-cfn"></a>

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 ](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-dependson.html) 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
```