

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Perlindungan data di AWS CodeCommit
<a name="data-protection"></a>

Sebagai layanan terkelola, dilindungi oleh keamanan jaringan AWS global. Untuk informasi tentang layanan AWS keamanan dan cara AWS melindungi infrastruktur, lihat [Keamanan AWS Cloud](https://aws.amazon.com/security/). Untuk mendesain AWS lingkungan Anda menggunakan praktik terbaik untuk keamanan infrastruktur, lihat [Perlindungan Infrastruktur dalam Kerangka Kerja](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/infrastructure-protection.html) yang * AWS Diarsiteksikan dengan Baik Pilar Keamanan*.

Anda menggunakan panggilan API yang AWS dipublikasikan untuk mengakses melalui jaringan. Klien harus mendukung hal-hal berikut:
+ Keamanan Lapisan Pengangkutan (TLS). Kami mensyaratkan TLS 1.2 dan menganjurkan TLS 1.3.
+ Sandi cocok dengan sistem kerahasiaan maju sempurna (perfect forward secrecy, PFS) seperti DHE (Ephemeral Diffie-Hellman) atau ECDHE (Elliptic Curve Ephemeral Diffie-Hellman). Sebagian besar sistem modern seperti Java 7 dan versi lebih baru mendukung mode-mode ini.

CodeCommit repositori secara otomatis dienkripsi saat istirahat. Tidak diperlukan tindakan pelanggan. CodeCommit juga mengenkripsi data repositori dalam perjalanan. Anda dapat menggunakan protokol HTTPS, protokol SSH, atau keduanya dengan CodeCommit repositori. Untuk informasi selengkapnya, lihat [Menyiapkan untuk AWS CodeCommit](setting-up.md). Anda juga dapat mengonfigurasi [akses lintas akun ke](cross-account.md) CodeCommit repositori.

**Topics**
+ [AWS Key Management Service dan enkripsi untuk AWS CodeCommit repositori](encryption.md)
+ [Menghubungkan ke AWS CodeCommit repositori dengan kredensi berputar](temporary-access.md)

# AWS Key Management Service dan enkripsi untuk AWS CodeCommit repositori
<a name="encryption"></a>

Data dalam CodeCommit repositori dienkripsi dalam perjalanan dan saat istirahat. Ketika data didorong ke dalam CodeCommit repositori (misalnya, dengan menelepon**git push**), CodeCommit mengenkripsi data yang diterima saat disimpan dalam repositori. Ketika data ditarik dari CodeCommit repositori (misalnya, dengan memanggil**git pull**), CodeCommit mendekripsi data dan kemudian mengirimkannya ke pemanggil. Ini mengasumsikan pengguna IAM yang terkait dengan permintaan push atau pull telah diautentikasi oleh. AWS Data yang dikirim atau diterima ditransmisikan menggunakan protokol jaringan terenkripsi HTTPS atau SSH.

Anda dapat menggunakan salah satu Kunci yang dikelola AWS atau kunci yang dikelola pelanggan untuk mengenkripsi dan mendekripsi data di repositori Anda. Untuk informasi selengkapnya tentang perbedaan antara kunci yang dikelola pelanggan dan Kunci yang dikelola AWS, lihat [Kunci yang dikelola pelanggan dan Kunci yang dikelola AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-mgmt). Jika Anda tidak menentukan kunci yang dikelola pelanggan, CodeCommit akan menggunakan Kunci yang dikelola AWS untuk mengenkripsi dan mendekripsi data di repositori Anda. Ini Kunci yang dikelola AWS dibuat secara otomatis untuk Anda di Anda Akun AWS. Pertama kali Anda membuat CodeCommit repositori di akun Amazon Web Services baru Wilayah AWS , jika Anda tidak menentukan kunci yang dikelola pelanggan, akan CodeCommit membuat Kunci yang dikelola AWS (`aws/codecommit`kunci) yang sama Wilayah AWS di AWS Key Management Service (AWS KMS). `aws/codecommit`Kunci ini hanya digunakan oleh CodeCommit. Ini disimpan dalam akun Amazon Web Services Anda. Bergantung pada apa yang Anda tentukan, CodeCommit baik menggunakan kunci yang dikelola pelanggan atau Kunci yang dikelola AWS untuk mengenkripsi dan mendekripsi data dalam repositori. 

**penting**  
 CodeCommit melakukan AWS KMS tindakan berikut terhadap AWS KMS kunci yang digunakan untuk mengenkripsi dan mendekripsi data dalam repositori. Jika Anda menggunakan Kunci yang dikelola AWS, pengguna tidak memerlukan izin eksplisit untuk tindakan ini, tetapi pengguna tidak boleh memiliki kebijakan terlampir yang menolak tindakan ini untuk kunci tersebut`aws/codecommit`. Jika Anda menggunakan kunci terkelola pelanggan yang memiliki Akun AWS ID yang ditetapkan sebagai prinsipal kebijakan untuk kunci tersebut, izin ini harus disetel secara eksplisit. `allow` Khususnya, ketika Anda membuat repositori pertama Anda, dan jika Anda memperbarui kunci untuk repositori Anda, Anda tidak boleh memiliki izin berikut yang disetel ke `deny` jika Anda menggunakan Kunci yang dikelola AWS, dan harus disetel ke `allow` jika Anda menggunakan kunci yang dikelola pelanggan dengan prinsip kebijakan:  
`"kms:Encrypt"`
`"kms:Decrypt"`
`"kms:ReEncrypt"`(tergantung pada konteksnya, ini bisa membutuhkan`kms:ReEncryptFrom`,   
`kms:ReEncryptTo`, atau `kms:ReEncrypt*` tidak diatur untuk menyangkal)
`"kms:GenerateDataKey"`
`"kms:GenerateDataKeyWithoutPlaintext"`
`"kms:DescribeKey"`

Jika Anda ingin menggunakan kunci yang dikelola pelanggan Anda sendiri, kunci harus tersedia di Wilayah AWS tempat repositori ada. CodeCommit mendukung penggunaan kunci terkelola pelanggan tunggal dan Multi-wilayah. Meskipun semua jenis asal material utama didukung, sebaiknya gunakan opsi **KMS** default. Pelanggan yang menggunakan opsi **toko kunci Eksternal** mungkin mengalami penundaan dari penyedia toko mereka. Selain itu. CodeCommit memiliki persyaratan berikut untuk kunci yang dikelola pelanggan:
+ CodeCommit hanya mendukung menggunakan tombol simetris.
+ Jenis penggunaan kunci harus diatur ke **Enkripsi dan dekripsi**.

Untuk informasi selengkapnya tentang membuat kunci terkelola pelanggan, lihat [Konsep](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-mgmt) dan [Membuat kunci](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html).

Untuk melihat informasi tentang yang Kunci yang dikelola AWS dihasilkan oleh CodeCommit, lakukan hal berikut:

1. Masuk ke Konsol Manajemen AWS dan buka konsol AWS Key Management Service (AWS KMS) di [https://console.aws.amazon.com/kms](https://console.aws.amazon.com/kms).

1. Untuk mengubah Wilayah AWS, gunakan pemilih Wilayah di sudut kanan atas halaman.

1. Di panel navigasi, pilih **Kunci yang dikelola AWS**. Pastikan Anda masuk ke Wilayah AWS tempat Anda ingin meninjau kunci. 

1. Dalam daftar kunci enkripsi, pilih Kunci yang dikelola AWS dengan alias **aws/codecommit**. Informasi dasar tentang Kunci milik AWS ditampilkan.

Anda tidak dapat mengubah atau menghapus ini Kunci yang dikelola AWS. 

## Bagaimana algoritma enkripsi digunakan untuk mengenkripsi data repositori
<a name="encryption-algorithms"></a>

CodeCommit menggunakan dua pendekatan berbeda untuk mengenkripsi data. Objek Git individu di bawah 6 MB dienkripsi menggunakan AES-GCM-256, yang menyediakan validasi integritas data. Objek antara 6 MB dan maksimum 2 GB untuk satu gumpalan dienkripsi menggunakan AES-CBC-256. CodeCommit selalu memvalidasi konteks enkripsi.

## Konteks enkripsi
<a name="encryption-context"></a>

Setiap layanan terintegrasi dengan AWS KMS menentukan konteks enkripsi untuk operasi enkripsi dan dekripsi. Konteks enkripsi tersebut adalah informasi diautentikasi tambahan yang digunakan AWS KMS untuk memeriksa integritas data. Bila ditentukan untuk operasi enkripsi, maka harus juga ditentukan dalam operasi dekripsi. Jika tidak, dekripsi gagal. CodeCommit menggunakan ID CodeCommit repositori untuk konteks enkripsi. Anda dapat menggunakan **get-repository** perintah atau CodeCommit konsol untuk menemukan ID repositori. Cari ID CodeCommit repositori di AWS CloudTrail log untuk memahami operasi enkripsi mana yang diambil untuk mengenkripsi atau AWS KMS mendekripsi data dalam repositori. CodeCommit 

Untuk informasi selengkapnya AWS KMS, lihat [Panduan AWS Key Management Service Pengembang](https://docs.aws.amazon.com/kms/latest/developerguide/).

# Menghubungkan ke AWS CodeCommit repositori dengan kredensi berputar
<a name="temporary-access"></a>

Anda dapat memberi pengguna akses ke AWS CodeCommit repositori Anda tanpa mengonfigurasi pengguna IAM untuk mereka atau menggunakan kunci akses dan kunci rahasia. Untuk menetapkan izin ke identitas federasi, Anda membuat peran dan menentukan izin untuk peran tersebut. Ketika identitas terfederasi mengautentikasi, identitas tersebut terhubung dengan peran dan diberi izin yang ditentukan oleh peran. Untuk informasi tentang peran untuk federasi, lihat [Buat peran untuk penyedia identitas pihak ketiga](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp.html) dalam *Panduan Pengguna IAM*. Jika menggunakan Pusat Identitas IAM, Anda harus mengonfigurasi set izin. Untuk mengontrol apa yang dapat diakses identitas Anda setelah identitas tersebut diautentikasi, Pusat Identitas IAM akan mengorelasikan set izin ke peran dalam IAM. Untuk informasi tentang set izin, lihat [Set izin](https://docs.aws.amazon.com/singlesignon/latest/userguide/permissionsetsconcept.html) dalam *Panduan Pengguna AWS IAM Identity Center *. *Anda juga dapat mengonfigurasi akses berbasis peran bagi pengguna IAM untuk mengakses CodeCommit repositori di akun Amazon Web Services terpisah (teknik yang dikenal sebagai akses lintas akun).* Untuk panduan konfigurasi akses lintas akun ke repositori, lihat [Konfigurasikan akses lintas akun ke AWS CodeCommit repositori menggunakan peran](cross-account.md). 

Anda dapat mengkonfigurasi akses untuk pengguna yang ingin atau harus mengotentikasi melalui metode seperti:
+ Security Assertion Markup Language (SAML)
+ Autentikasi Multi-Faktor (MFA)
+ Federation
+ Login with Amazon
+ Amazon Cognito
+ Facebook
+ Google
+ Penyedia identitas yang kompatibel OpenID Connect (OIDC)

**catatan**  
Informasi berikut hanya berlaku untuk penggunaan **git-remote-codecommit** atau pembantu AWS CLI kredenal untuk terhubung ke CodeCommit repositori. Karena pendekatan yang disarankan untuk akses sementara atau federasi CodeCommit adalah untuk mengatur**git-remote-codecommit**, topik ini memberikan contoh menggunakan utilitas itu. Untuk informasi selengkapnya, lihat [Langkah-langkah penyiapan untuk koneksi HTTPS ke AWS CodeCommit dengan git-remote-codecommit](setting-up-git-remote-codecommit.md).   
Anda tidak dapat menggunakan kredensi SSH atau Git dan HTTPS untuk terhubung ke CodeCommit repositori dengan kredenal akses berputar atau sementara. 

Anda tidak perlu menyelesaikan langkah-langkah ini jika semua persyaratan berikut ini benar:
+ Anda masuk ke instans Amazon EC2.
+ Anda menggunakan Git dan HTTPS dengan bantuan AWS CLI kredensi untuk terhubung dari instans Amazon EC2 ke repositori. CodeCommit 
+ Instans Amazon EC2 memiliki profil instans IAM terlampir yang berisi izin akses yang dijelaskan di [Untuk koneksi HTTPS di Linux, macOS, atau Unix dengan pembantu kredensi AWS CLI ](setting-up-https-unixes.md) atau [Untuk koneksi HTTPS di Windows dengan pembantu AWS CLI kredensi](setting-up-https-windows.md).
+ Anda telah menginstal dan mengkonfigurasi Git pembantu kredensial pada instans Amazon EC2, seperti yang dijelaskan dalam [Untuk koneksi HTTPS di Linux, macOS, atau Unix dengan pembantu kredensi AWS CLI ](setting-up-https-unixes.md) atau [Untuk koneksi HTTPS di Windows dengan pembantu AWS CLI kredensi](setting-up-https-windows.md).

Instans Amazon EC2 yang memenuhi persyaratan sebelumnya sudah disiapkan untuk mengkomunikasikan kredensil akses sementara atas nama Anda. CodeCommit 

**catatan**  
Anda dapat mengonfigurasi dan menggunakan **git-remote-codecommit** pada instans Amazon EC2.

Untuk memberi pengguna akses sementara ke CodeCommit repositori Anda, selesaikan langkah-langkah berikut.



## Langkah 1: Selesaikan prasyarat
<a name="temporary-access-prerequisites"></a>

Selesaikan langkah-langkah penyiapan untuk memberi pengguna akses ke CodeCommit repositori Anda menggunakan kredensi berputar: 
+ Untuk akses lintas akun, lihat [Panduan: Mendelegasikan Akses Akun Amazon Web Services menggunakan IAM role](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-walkthrough-crossacct.html) dan [Konfigurasikan akses lintas akun ke AWS CodeCommit repositori menggunakan peran](cross-account.md).
+ Untuk SAFL dan federasi, lihat [Menggunakan Sistem Otentikasi Organisasi Anda untuk Memberikan Akses ke AWS Sumber Daya](https://docs.aws.amazon.com/STS/latest/UsingSTS/STSUseCases.html#IdentityBrokerApplication) dan [Tentang Federasi berbasis AWS STS SAFL 2.0](https://docs.aws.amazon.com/STS/latest/UsingSTS/CreatingSAML.html).
+ Untuk MFA, lihat [Menggunakan Perangkat Multi-Factor Authentication (MFA) dengan AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_ManagingMFA.html) dan [Membuat Kredensials Keamanan Sementara Untuk Mengaktifkan Akses Untuk Pengguna IAM](https://docs.aws.amazon.com/STS/latest/UsingSTS/CreatingSessionTokens.html).
+ [Untuk Login with Amazon, Amazon Cognito, Facebook, Google, atau penyedia identitas yang kompatibel dengan OIDC, lihat Tentang Federasi Identitas Web. AWS STS](https://docs.aws.amazon.com/STS/latest/UsingSTS/web-identity-federation.html)

Gunakan informasi [Otentikasi dan kontrol akses untuk AWS CodeCommit](auth-and-access-control.md) untuk menentukan CodeCommit izin yang ingin Anda berikan kepada pengguna.

## Langkah 2: Dapatkan nama peran atau kredensial akses
<a name="temporary-access-get-credentials"></a>

Jika Anda ingin pengguna Anda mengakses repositori dengan memiliki suatu peran, berikan pengguna Anda Amazon Resource Name (ARN) dari peran itu. Jika tidak, tergantung pada cara Anda mengatur akses, pengguna Anda bisa mendapatkan kredensial berputar dengan salah satu cara berikut:
+ Untuk akses lintas akun, panggil perintah AWS CLI [assume-role](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role.html) atau panggil API. AWS STS [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)
+ Untuk SALL, panggil AWS CLI [assume-role-with-saml](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role-with-saml.html)perintah atau AWS STS [AssumeRoleWithSAFL API](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html).
+ Untuk federasi, hubungi AWS CLI [peran asumsi atau [get-federation-token](https://docs.aws.amazon.com/cli/latest/reference/sts/get-federation-token.html)](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role.html)perintah atau atau. AWS STS [AssumeRole[GetFederationToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html)](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) APIs
+ Untuk MFA, panggil AWS CLI [get-session-token](https://docs.aws.amazon.com/cli/latest/reference/sts/get-session-token.html)perintah atau API. AWS STS [GetSessionToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html)
+ Untuk Login with Amazon, Amazon Cognito, Facebook, Google, atau penyedia identitas yang kompatibel dengan OIDC, hubungi perintah AWS CLI [assume-role-with-web-identity](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role-with-web-identity.html) atau API. AWS STS [AssumeRoleWithWebIdentity](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html)



## Langkah 3: Instal git-remote-codecommit dan konfigurasikan AWS CLI
<a name="temporary-access-configure-credentials"></a>

Anda harus mengonfigurasi komputer lokal Anda untuk menggunakan kredensil akses dengan menginstal [https://pypi.org/project/git-remote-codecommit/](https://pypi.org/project/git-remote-codecommit/)dan mengonfigurasi profil di file. AWS CLI

1. Ikuti instruksi di [Pengaturan ](setting-up.md) untuk mengatur AWS CLI. Gunakan perintah **aws configure** untuk mengkonfigurasi satu atau lebih profil. Pertimbangkan untuk membuat profil bernama untuk digunakan saat Anda terhubung ke CodeCommit repositori menggunakan kredensi berputar.

1. Anda dapat mengaitkan kredensialnya dengan profil AWS CLI bernama pengguna dengan salah satu cara berikut. 
   + Jika Anda mengasumsikan peran untuk mengakses CodeCommit, konfigurasikan profil bernama dengan informasi yang diperlukan untuk mengambil peran itu. Misalnya, jika Anda ingin mengambil peran bernama *CodeCommitAccess* di akun Amazon Web Services 1111111111, Anda dapat mengonfigurasi profil default yang akan digunakan saat bekerja dengan AWS sumber daya lain dan profil bernama untuk digunakan saat mengambil peran tersebut. Perintah berikut membuat profil bernama bernama *CodeAccess* yang mengasumsikan peran bernama*CodeCommitAccess*. Nama pengguna *Maria\$1Garcia* dikaitkan dengan sesi dan profil default ditetapkan sebagai sumber AWS kredensialnya:

     ```
     aws configure set role_arn arn:aws:iam::111111111111:role/CodeCommitAccess --profile CodeAccess
     aws configure set source_profile default --profile CodeAccess
     aws configure set role_session_name "Maria_Garcia" --profile CodeAccess
     ```

     Jika Anda ingin memverifikasi perubahan, secara manual melihat atau mengedit file `~/.aws/config` (untuk Linux) atau file `%UserProfile%.aws\config` (untuk Windows) dan meninjau informasi di bawah profil bernama. Misalnya, file Anda mungkin terlihat seperti berikut:

     ```
     [default]
     region = us-east-1
     output = json
     
     [profile CodeAccess]
     source_profile = default
     role_session_name = Maria_Garcia
     role_arn = arn:aws:iam::111111111111:role/CodeCommitAccess
     ```

      Setelah Anda mengonfigurasi profil bernama Anda, Anda kemudian dapat mengkloning CodeCommit repositori dengan **git-remote-codecommit** utilitas menggunakan profil bernama. Misalnya, untuk mengkloning repositori bernama: *MyDemoRepo* 

     ```
     git clone codecommit://CodeAccess@MyDemoRepo
     ```
   + Jika Anda menggunakan federasi identitas web dan OpenID Connect (OIDC), konfigurasikan profil bernama yang membuat panggilan `AssumeRoleWithWebIdentity` API AWS Security Token Service (AWS STS) atas nama Anda untuk menyegarkan kredensil sementara. Gunakan **aws configure set** perintah atau edit `~/.aws/credentials` file secara manual (untuk Linux) atau `%UserProfile%.aws\credentials` file (untuk Windows) untuk menambahkan profil AWS CLI bernama dengan nilai pengaturan yang diperlukan. Misalnya, untuk membuat profil yang mengambil *CodeCommitAccess* peran dan menggunakan file token identitas web *my-credentials* */my-token-file* \$1/:

     ```
     [CodeCommitWebIdentity]
     role_arn = arn:aws:iam::111111111111:role/CodeCommitAccess
     web_identity_token_file=~/my-credentials/my-token-file
     role_session_name = Maria_Garcia
     ```

   Untuk informasi selengkapnya, lihat [Mengonfigurasi AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html) dan [Menggunakan IAM role di AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-role.html) di *Panduan Pengguna AWS Command Line Interface *.

## Langkah 4: Akses CodeCommit repositori
<a name="temporary-access-use-credentials"></a>

Dengan asumsi pengguna Anda telah mengikuti instruksi [Connect ke sebuah repositori](how-to-connect.md) untuk terhubung ke CodeCommit repositori, pengguna kemudian menggunakan fungsionalitas yang diperluas yang disediakan oleh dan **git-remote-codecommit** Git untuk memanggil**git clone**,**git push**, dan **git pull** untuk mengkloning, mendorong ke, dan menarik dari, CodeCommit repositori yang dia akses. Misalnya, untuk mengkloning suatu repositori:

```
git clone codecommit://CodeAccess@MyDemoRepo
```

Perintah Git commit, push, dan pull menggunakan sintaks Git biasa. 

Saat pengguna menggunakan AWS CLI dan menentukan profil AWS CLI bernama yang terkait dengan kredensil akses yang berputar, hasil yang dicakup ke profil tersebut akan dikembalikan.

