

 AWS SDK untuk .NET V3 telah memasuki mode pemeliharaan.

Kami menyarankan Anda bermigrasi ke [AWS SDK untuk .NET V4](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/welcome.html). Untuk detail dan informasi tambahan tentang cara bermigrasi, silakan lihat [pengumuman mode pemeliharaan](https://aws.amazon.com/blogs/developer/aws-sdk-for-net-v3-maintenance-mode-announcement/) kami.

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

# Keamanan untuk AWS Produk atau Layanan ini
<a name="security"></a>

Keamanan cloud di Amazon Web Services (AWS) merupakan prioritas tertinggi. Sebagai seorang pelanggan AWS , Anda mendapatkan manfaat dari pusat data dan arsitektur jaringan yang dibangun untuk memenuhi persyaratan dari organisasi yang paling sensitif terhadap keamanan. Keamanan adalah tanggung jawab bersama antara Anda AWS dan Anda. [Model Tanggung Jawab Bersama](https://aws.amazon.com/compliance/shared-responsibility-model/) menggambarkan ini sebagai Keamanan dari Cloud dan Keamanan dalam Cloud.

**Security of the Cloud** - AWS bertanggung jawab untuk melindungi infrastruktur yang menjalankan semua layanan yang ditawarkan di AWS Cloud dan memberi Anda layanan yang dapat Anda gunakan dengan aman. Tanggung jawab keamanan kami adalah prioritas tertinggi di AWS, dan efektivitas keamanan kami secara teratur diuji dan diverifikasi oleh auditor pihak ketiga sebagai bagian dari [Program AWS Kepatuhan](https://aws.amazon.com/compliance/programs/).

**Keamanan di Cloud** — Tanggung jawab Anda ditentukan oleh AWS layanan yang Anda gunakan, dan faktor-faktor lain termasuk sensitivitas data Anda, persyaratan organisasi Anda, serta undang-undang dan peraturan yang berlaku.

 AWS Produk atau layanan ini mengikuti [model tanggung jawab bersama](https://aws.amazon.com/compliance/shared-responsibility-model/) melalui layanan Amazon Web Services (AWS) tertentu yang didukungnya. Untuk informasi keamanan AWS layanan, lihat [halaman dokumentasi keamanan AWS layanan](https://docs.aws.amazon.com/security/?id=docs_gateway#aws-security) dan [AWS layanan yang berada dalam lingkup upaya AWS kepatuhan oleh program kepatuhan](https://aws.amazon.com/compliance/services-in-scope/).

**Topics**
+ [Perlindungan data](data-protection.md)
+ [Identity and Access Management](security-iam.md)
+ [Validasi Kepatuhan](compliance-validation.md)
+ [Ketahanan](disaster-recovery-resiliency.md)
+ [Keamanan Infrastruktur](infrastructure-security.md)
+ [Menegakkan versi TLS minimum](enforcing-tls.md)
+ [Migrasi Klien Enkripsi S3 (V1 ke V2)](s3-encryption-migration-v1-v2.md)
+ [Migrasi Klien Enkripsi S3 (V2 ke V4)](s3-encryption-migration-v2-v4.md)

# Perlindungan data dalam AWS Produk atau Layanan ini
<a name="data-protection"></a>

[Model tanggung jawab AWS bersama model](https://aws.amazon.com/compliance/shared-responsibility-model/) berlaku untuk perlindungan data dalam AWS produk atau layanan ini. Seperti yang dijelaskan dalam model AWS ini, bertanggung jawab untuk melindungi infrastruktur global yang menjalankan semua AWS Cloud. Anda bertanggung jawab untuk mempertahankan kendali atas konten yang di-host pada infrastruktur ini. Anda juga bertanggung jawab atas tugas-tugas konfigurasi dan manajemen keamanan untuk Layanan AWS yang Anda gunakan. Lihat informasi yang lebih lengkap tentang privasi data dalam [Pertanyaan Umum Privasi Data](https://aws.amazon.com/compliance/data-privacy-faq/). Lihat informasi tentang perlindungan data di Eropa di pos blog [Model Tanggung Jawab Bersama dan GDPR AWS](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-gdpr/) di *Blog Keamanan AWS *.

Untuk tujuan perlindungan data, kami menyarankan Anda melindungi Akun AWS kredensyal dan mengatur pengguna individu dengan AWS IAM Identity Center atau AWS Identity and Access Management (IAM). Dengan cara itu, setiap pengguna hanya diberi izin yang diperlukan untuk memenuhi tanggung jawab tugasnya. Kami juga menyarankan supaya Anda mengamankan data dengan cara-cara berikut:
+ Gunakan autentikasi multi-faktor (MFA) pada setiap akun.
+ Gunakan SSL/TLS untuk berkomunikasi dengan AWS sumber daya. Kami mensyaratkan TLS 1.2 dan menganjurkan TLS 1.3.
+ Siapkan API dan pencatatan aktivitas pengguna dengan AWS CloudTrail. Untuk informasi tentang penggunaan CloudTrail jejak untuk menangkap AWS aktivitas, lihat [Bekerja dengan CloudTrail jejak](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-trails.html) di *AWS CloudTrail Panduan Pengguna*.
+ Gunakan solusi AWS enkripsi, bersama dengan semua kontrol keamanan default di dalamnya Layanan AWS.
+ Gunakan layanan keamanan terkelola tingkat lanjut seperti Amazon Macie, yang membantu menemukan dan mengamankan data sensitif yang disimpan di Amazon S3.
+ Jika Anda memerlukan modul kriptografi tervalidasi FIPS 140-3 saat mengakses AWS melalui antarmuka baris perintah atau API, gunakan titik akhir FIPS. Lihat informasi selengkapnya tentang titik akhir FIPS yang tersedia di [Standar Pemrosesan Informasi Federal (FIPS) 140-3](https://aws.amazon.com/compliance/fips/).

Kami sangat merekomendasikan agar Anda tidak pernah memasukkan informasi identifikasi yang sensitif, seperti nomor rekening pelanggan Anda, ke dalam tanda atau bidang isian bebas seperti bidang **Nama**. Ini termasuk ketika Anda bekerja dengan AWS produk atau layanan ini atau lainnya Layanan AWS menggunakan konsol, API AWS CLI, atau AWS SDKs. Data apa pun yang Anda masukkan ke dalam tanda atau bidang isian bebas yang digunakan untuk nama dapat digunakan untuk log penagihan atau log diagnostik. Saat Anda memberikan URL ke server eksternal, kami sangat menganjurkan supaya Anda tidak menyertakan informasi kredensial di dalam URL untuk memvalidasi permintaan Anda ke server itu.

# Identity and Access Management
<a name="security-iam"></a>

AWS Identity and Access Management (IAM) adalah Layanan AWS yang membantu administrator mengontrol akses ke AWS sumber daya dengan aman. Administrator IAM mengontrol siapa yang dapat *diautentikasi* (masuk) dan *diberi wewenang* (memiliki izin) untuk menggunakan sumber daya. AWS IAM adalah Layanan AWS yang dapat Anda gunakan tanpa biaya tambahan.

**Topics**
+ [Audiens](#security_iam_audience)
+ [Mengautentikasi dengan identitas](#security_iam_authentication)
+ [Mengelola akses menggunakan kebijakan](#security_iam_access-manage)
+ [Bagaimana Layanan AWS bekerja dengan IAM](#security_iam_service-with-iam)
+ [Memecahkan masalah AWS identitas dan akses](#security_iam_troubleshoot)

## Audiens
<a name="security_iam_audience"></a>

Cara Anda menggunakan AWS Identity and Access Management (IAM) berbeda, tergantung pada pekerjaan yang Anda lakukan. AWS

**Pengguna layanan** — Jika Anda menggunakan Layanan AWS untuk melakukan pekerjaan Anda, maka administrator Anda memberi Anda kredensyal dan izin yang Anda butuhkan. Saat Anda menggunakan lebih banyak AWS fitur untuk melakukan pekerjaan Anda, Anda mungkin memerlukan izin tambahan. Memahami cara akses dikelola dapat membantu Anda meminta izin yang tepat dari administrator Anda. Jika Anda tidak dapat mengakses fitur AWS, lihat [Memecahkan masalah AWS identitas dan akses](#security_iam_troubleshoot) atau panduan pengguna yang Layanan AWS Anda gunakan.

**Administrator layanan** — Jika Anda bertanggung jawab atas AWS sumber daya di perusahaan Anda, Anda mungkin memiliki akses penuh ke AWS. Tugas Anda adalah menentukan AWS fitur dan sumber daya mana yang harus diakses pengguna layanan Anda. Kemudian, Anda harus mengirimkan permintaan kepada administrator IAM untuk mengubah izin pengguna layanan Anda. Tinjau informasi di halaman ini untuk memahami konsep dasar IAM. Untuk mempelajari lebih lanjut tentang bagaimana perusahaan Anda dapat menggunakan IAM AWS, lihat panduan pengguna yang Layanan AWS Anda gunakan.

**Administrator IAM** – Jika Anda adalah administrator IAM, Anda sebaiknya mempelajari detail tentang cara menulis kebijakan untuk mengelola akses ke AWS. Untuk melihat contoh kebijakan AWS berbasis identitas yang dapat Anda gunakan di IAM, lihat panduan pengguna yang Anda gunakan. Layanan AWS 

## Mengautentikasi dengan identitas
<a name="security_iam_authentication"></a>

Otentikasi adalah cara Anda masuk AWS menggunakan kredensyal identitas Anda. Anda harus diautentikasi sebagai Pengguna root akun AWS, pengguna IAM, atau dengan mengasumsikan peran IAM.

Anda dapat masuk sebagai identitas federasi menggunakan kredensyal dari sumber identitas seperti AWS IAM Identity Center (Pusat Identitas IAM), autentikasi masuk tunggal, atau kredensyal. Google/Facebook Untuk informasi selengkapnya tentang cara masuk, lihat [Cara masuk ke Akun AWS Anda](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) dalam *Panduan Pengguna AWS Sign-In *.

Untuk akses terprogram, AWS sediakan SDK dan CLI untuk menandatangani permintaan secara kriptografis. Untuk informasi selengkapnya, lihat [AWS Signature Version 4 untuk permintaan API](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html) dalam *Panduan Pengguna IAM*.

### Akun AWS pengguna root
<a name="security_iam_authentication-rootuser"></a>

 Saat Anda membuat Akun AWS, Anda mulai dengan satu identitas masuk yang disebut *pengguna Akun AWS root* yang memiliki akses lengkap ke semua Layanan AWS dan sumber daya. Kami sangat menyarankan agar Anda tidak menggunakan pengguna root untuk tugas sehari-hari. Untuk tugas yang memerlukan kredensial pengguna root, lihat [Tugas yang memerlukan kredensial pengguna root](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks) dalam *Panduan Pengguna IAM*. 

### Identitas terfederasi
<a name="security_iam_authentication-federated"></a>

Sebagai praktik terbaik, mewajibkan pengguna manusia untuk menggunakan federasi dengan penyedia identitas untuk mengakses Layanan AWS menggunakan kredensyal sementara.

*Identitas federasi* adalah pengguna dari direktori perusahaan Anda, penyedia identitas web, atau Directory Service yang mengakses Layanan AWS menggunakan kredensyal dari sumber identitas. Identitas terfederasi mengambil peran yang memberikan kredensial sementara.

Untuk manajemen akses terpusat, kami menyarankan AWS IAM Identity Center. Untuk informasi selengkapnya, lihat [Apa itu Pusat Identitas IAM?](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html) dalam *Panduan Pengguna AWS IAM Identity Center *.

### Pengguna dan grup IAM
<a name="security_iam_authentication-iamuser"></a>

*[Pengguna IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html)* adalah identitas dengan izin khusus untuk satu orang atau aplikasi. Sebaiknya gunakan kredensial sementara alih-alih pengguna IAM dengan kredensial jangka panjang. Untuk informasi selengkapnya, lihat [Mewajibkan pengguna manusia untuk menggunakan federasi dengan penyedia identitas untuk mengakses AWS menggunakan kredensyal sementara](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-users-federation-idp) di Panduan Pengguna *IAM*.

[https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html) menentukan kumpulan pengguna IAM dan mempermudah pengelolaan izin untuk pengguna dalam jumlah besar. Untuk mempelajari selengkapnya, lihat [Kasus penggunaan untuk pengguna IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/gs-identities-iam-users.html) dalam *Panduan Pengguna IAM*.

### Peran IAM
<a name="security_iam_authentication-iamrole"></a>

*[Peran IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)* adalah identitas dengan izin khusus yang menyediakan kredensial sementara. Anda dapat mengambil peran dengan [beralih dari pengguna ke peran IAM (konsol)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-console.html) atau dengan memanggil operasi AWS CLI atau AWS API. Untuk informasi selengkapnya, lihat [Metode untuk mengambil peran](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage-assume.html) dalam *Panduan Pengguna IAM*.

Peran IAM berguna untuk akses pengguna terfederasi, izin pengguna IAM sementara, akses lintas akun, akses lintas layanan, dan aplikasi yang berjalan di Amazon EC2. Untuk informasi selengkapnya, lihat [Akses sumber daya lintas akun di IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html) dalam *Panduan Pengguna IAM*.

## Mengelola akses menggunakan kebijakan
<a name="security_iam_access-manage"></a>

Anda mengontrol akses AWS dengan membuat kebijakan dan melampirkannya ke AWS identitas atau sumber daya. Kebijakan menentukan izin saat dikaitkan dengan identitas atau sumber daya. AWS mengevaluasi kebijakan ini ketika kepala sekolah membuat permintaan. Sebagian besar kebijakan disimpan AWS sebagai dokumen JSON. Untuk informasi selengkapnya tentang dokumen kebijakan JSON, lihat [Gambaran umum kebijakan JSON](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#access_policies-json) dalam *Panduan Pengguna IAM*.

Menggunakan kebijakan, administrator menentukan siapa yang memiliki akses ke apa dengan mendefinisikan **principal** mana yang dapat melakukan **tindakan** pada **sumber daya** apa, dan dalam **kondisi** apa.

Secara default, pengguna dan peran tidak memiliki izin. Administrator IAM membuat kebijakan IAM dan menambahkannya ke peran, yang kemudian dapat diambil oleh pengguna. Kebijakan IAM mendefinisikan izin terlepas dari metode yang Anda gunakan untuk melakukan operasinya.

### Kebijakan berbasis identitas
<a name="security_iam_access-manage-id-based-policies"></a>

Kebijakan berbasis identitas adalah dokumen kebijakan izin JSON yang Anda lampirkan ke identitas (pengguna, grup, atau peran). Kebijakan ini mengontrol tindakan apa yang bisa dilakukan oleh identitas tersebut, terhadap sumber daya yang mana, dan dalam kondisi apa. Untuk mempelajari cara membuat kebijakan berbasis identitas, lihat [Tentukan izin IAM kustom dengan kebijakan yang dikelola pelanggan](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) dalam *Panduan Pengguna IAM*.

Kebijakan berbasis identitas dapat berupa *kebijakan inline* (disematkan langsung ke dalam satu identitas) atau *kebijakan terkelola* (kebijakan mandiri yang dilampirkan pada banyak identitas). Untuk mempelajari cara memilih antara kebijakan terkelola dan kebijakan inline, lihat [Pilih antara kebijakan terkelola dan kebijakan inline](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-choosing-managed-or-inline.html) dalam *Panduan Pengguna IAM*.

### Kebijakan berbasis sumber daya
<a name="security_iam_access-manage-resource-based-policies"></a>

Kebijakan berbasis sumber daya adalah dokumen kebijakan JSON yang Anda lampirkan ke sumber daya. Contohnya termasuk *kebijakan kepercayaan peran IAM* dan *kebijakan bucket* Amazon S3. Dalam layanan yang mendukung kebijakan berbasis sumber daya, administrator layanan dapat menggunakannya untuk mengontrol akses ke sumber daya tertentu. Anda harus [menentukan principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html) dalam kebijakan berbasis sumber daya.

Kebijakan berbasis sumber daya merupakan kebijakan inline yang terletak di layanan tersebut. Anda tidak dapat menggunakan kebijakan AWS terkelola dari IAM dalam kebijakan berbasis sumber daya.

### Daftar kontrol akses (ACLs)
<a name="security_iam_access-manage-acl"></a>

Access control lists (ACLs) mengontrol prinsipal mana (anggota akun, pengguna, atau peran) yang memiliki izin untuk mengakses sumber daya. ACLs mirip dengan kebijakan berbasis sumber daya, meskipun mereka tidak menggunakan format dokumen kebijakan JSON.

Amazon S3, AWS WAF, dan Amazon VPC adalah contoh layanan yang mendukung. ACLs Untuk mempelajari selengkapnya ACLs, lihat [Ringkasan daftar kontrol akses (ACL)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html) di *Panduan Pengembang Layanan Penyimpanan Sederhana Amazon*.

### Jenis-jenis kebijakan lain
<a name="security_iam_access-manage-other-policies"></a>

AWS mendukung jenis kebijakan tambahan yang dapat menetapkan izin maksimum yang diberikan oleh jenis kebijakan yang lebih umum:
+ **Batasan izin** – Menetapkan izin maksimum yang dapat diberikan oleh kebijakan berbasis identitas kepada entitas IAM. Untuk informasi selengkapnya, lihat [Batasan izin untuk entitas IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) dalam *Panduan Pengguna IAM*.
+ **Kebijakan kontrol layanan (SCPs)** — Tentukan izin maksimum untuk organisasi atau unit organisasi di AWS Organizations. Untuk informasi selengkapnya, lihat [Kebijakan kontrol layanan](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html) dalam *Panduan Pengguna AWS Organizations *.
+ **Kebijakan kontrol sumber daya (RCPs)** — Tetapkan izin maksimum yang tersedia untuk sumber daya di akun Anda. Untuk informasi selengkapnya, lihat [Kebijakan kontrol sumber daya (RCPs)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html) di *Panduan AWS Organizations Pengguna*.
+ **Kebijakan sesi** – Kebijakan lanjutan yang diteruskan sebagai parameter saat membuat sesi sementara untuk peran atau pengguna terfederasi. Untuk informasi selengkapnya, lihat [Kebijakan sesi](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session) dalam *Panduan Pengguna IAM*.

### Berbagai jenis kebijakan
<a name="security_iam_access-manage-multiple-policies."></a>

Ketika beberapa jenis kebijakan berlaku pada suatu permintaan, izin yang dihasilkan lebih rumit untuk dipahami. Untuk mempelajari cara AWS menentukan apakah akan mengizinkan permintaan saat beberapa jenis kebijakan terlibat, lihat [Logika evaluasi kebijakan](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html) di *Panduan Pengguna IAM*.

## Bagaimana Layanan AWS bekerja dengan IAM
<a name="security_iam_service-with-iam"></a>

Untuk mendapatkan tampilan tingkat tinggi tentang cara Layanan AWS bekerja dengan sebagian besar fitur IAM, lihat [AWS layanan yang bekerja dengan IAM di Panduan Pengguna *IAM*](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html).

Untuk mempelajari cara menggunakan yang spesifik Layanan AWS dengan IAM, lihat bagian keamanan dari Panduan Pengguna layanan yang relevan.

## Memecahkan masalah AWS identitas dan akses
<a name="security_iam_troubleshoot"></a>

Gunakan informasi berikut untuk membantu Anda mendiagnosis dan memperbaiki masalah umum yang mungkin Anda temui saat bekerja dengan AWS dan IAM.

**Topics**
+ [Saya tidak berwenang untuk melakukan tindakan di AWS](#security_iam_troubleshoot-no-permissions)
+ [Saya tidak berwenang untuk melakukan iam: PassRole](#security_iam_troubleshoot-passrole)
+ [Saya ingin mengizinkan orang di luar saya Akun AWS untuk mengakses AWS sumber daya saya](#security_iam_troubleshoot-cross-account-access)

### Saya tidak berwenang untuk melakukan tindakan di AWS
<a name="security_iam_troubleshoot-no-permissions"></a>

Jika Anda menerima pesan kesalahan bahwa Anda tidak memiliki otorisasi untuk melakukan tindakan, kebijakan Anda harus diperbarui agar Anda dapat melakukan tindakan tersebut.

Contoh kesalahan berikut terjadi ketika pengguna IAM `mateojackson` mencoba menggunakan konsol untuk melihat detail tentang suatu sumber daya `my-example-widget` rekaan, tetapi tidak memiliki izin `awes:GetWidget` rekaan.

```
User: arn:aws:iam::123456789012:user/mateojackson is not authorized to perform: awes:GetWidget on resource: my-example-widget
```

Dalam hal ini, kebijakan untuk pengguna `mateojackson` harus diperbarui untuk mengizinkan akses ke sumber daya `my-example-widget` dengan menggunakan tindakan `awes:GetWidget`.

Jika Anda memerlukan bantuan, hubungi AWS administrator Anda. Administrator Anda adalah orang yang memberi Anda kredensial masuk.

### Saya tidak berwenang untuk melakukan iam: PassRole
<a name="security_iam_troubleshoot-passrole"></a>

Jika Anda menerima kesalahan yang tidak diizinkan untuk melakukan `iam:PassRole` tindakan, kebijakan Anda harus diperbarui agar Anda dapat meneruskan peran AWS.

Beberapa Layanan AWS memungkinkan Anda untuk meneruskan peran yang ada ke layanan tersebut alih-alih membuat peran layanan baru atau peran terkait layanan. Untuk melakukannya, Anda harus memiliki izin untuk meneruskan peran ke layanan.

Contoh kesalahan berikut terjadi ketika pengguna IAM bernama `marymajor` mencoba menggunakan konsol tersebut untuk melakukan tindakan di AWS. Namun, tindakan tersebut memerlukan layanan untuk mendapatkan izin yang diberikan oleh peran layanan. Mary tidak memiliki izin untuk meneruskan peran tersebut pada layanan.

```
User: arn:aws:iam::123456789012:user/marymajor is not authorized to perform: iam:PassRole
```

Dalam kasus ini, kebijakan Mary harus diperbarui agar dia mendapatkan izin untuk melakukan tindakan `iam:PassRole` tersebut.

Jika Anda memerlukan bantuan, hubungi AWS administrator Anda. Administrator Anda adalah orang yang memberi Anda kredensial masuk.

### Saya ingin mengizinkan orang di luar saya Akun AWS untuk mengakses AWS sumber daya saya
<a name="security_iam_troubleshoot-cross-account-access"></a>

Anda dapat membuat peran yang dapat digunakan pengguna di akun lain atau orang-orang di luar organisasi Anda untuk mengakses sumber daya Anda. Anda dapat menentukan siapa saja yang dipercaya untuk mengambil peran tersebut. Untuk layanan yang mendukung kebijakan berbasis sumber daya atau daftar kontrol akses (ACLs), Anda dapat menggunakan kebijakan tersebut untuk memberi orang akses ke sumber daya Anda.

Untuk mempelajari selengkapnya, periksa referensi berikut:
+ Untuk mempelajari apakah AWS mendukung fitur-fitur ini, lihat[Bagaimana Layanan AWS bekerja dengan IAM](#security_iam_service-with-iam).
+ Untuk mempelajari cara menyediakan akses ke sumber daya Anda di seluruh sumber daya Akun AWS yang Anda miliki, lihat [Menyediakan akses ke pengguna IAM di pengguna lain Akun AWS yang Anda miliki](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_aws-accounts.html) di *Panduan Pengguna IAM*.
+ Untuk mempelajari cara menyediakan akses ke sumber daya Anda kepada pihak ketiga Akun AWS, lihat [Menyediakan akses yang Akun AWS dimiliki oleh pihak ketiga](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_third-party.html) dalam *Panduan Pengguna IAM*.
+ Untuk mempelajari cara memberikan akses melalui federasi identitas, lihat [Menyediakan akses ke pengguna terautentikasi eksternal (federasi identitas)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_federated-users.html) dalam *Panduan Pengguna IAM*.
+ *Untuk mempelajari perbedaan antara menggunakan peran dan kebijakan berbasis sumber daya untuk akses lintas akun, lihat [Akses sumber daya lintas akun di IAM di Panduan Pengguna IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html).*

# Validasi Kepatuhan untuk AWS Produk atau Layanan ini
<a name="compliance-validation"></a>

Untuk mempelajari apakah an Layanan AWS berada dalam lingkup program kepatuhan tertentu, lihat [Layanan AWS di Lingkup oleh Program Kepatuhan Layanan AWS](https://aws.amazon.com/compliance/services-in-scope/) dan pilih program kepatuhan yang Anda minati. Untuk informasi umum, lihat [Program AWS Kepatuhan Program AWS](https://aws.amazon.com/compliance/programs/) .

Anda dapat mengunduh laporan audit pihak ketiga menggunakan AWS Artifact. Untuk informasi selengkapnya, lihat [Mengunduh Laporan di AWS Artifact](https://docs.aws.amazon.com/artifact/latest/ug/downloading-documents.html) .

Tanggung jawab kepatuhan Anda saat menggunakan Layanan AWS ditentukan oleh sensitivitas data Anda, tujuan kepatuhan perusahaan Anda, dan hukum dan peraturan yang berlaku. Untuk informasi selengkapnya tentang tanggung jawab kepatuhan Anda saat menggunakan Layanan AWS, lihat [Dokumentasi AWS Keamanan](https://docs.aws.amazon.com/security/).

 AWS Produk atau layanan ini mengikuti [model tanggung jawab bersama](https://aws.amazon.com/compliance/shared-responsibility-model/) melalui layanan Amazon Web Services (AWS) tertentu yang didukungnya. Untuk informasi keamanan AWS layanan, lihat [halaman dokumentasi keamanan AWS layanan](https://docs.aws.amazon.com/security/?id=docs_gateway#aws-security) dan [AWS layanan yang berada dalam lingkup upaya AWS kepatuhan oleh program kepatuhan](https://aws.amazon.com/compliance/services-in-scope/).

# Ketahanan untuk AWS Produk atau Layanan ini
<a name="disaster-recovery-resiliency"></a>

Infrastruktur AWS global dibangun di sekitar Wilayah AWS dan Availability Zones. 

Wilayah AWS menyediakan beberapa Availability Zone yang terpisah secara fisik dan terisolasi, yang terhubung dengan latensi rendah, throughput tinggi, dan jaringan yang sangat redundan. 

Dengan Zona Ketersediaan, Anda dapat merancang serta mengoperasikan aplikasi dan basis data yang secara otomatis melakukan fail over di antara zona tanpa gangguan. Zona Ketersediaan memiliki ketersediaan dan toleransi kesalahan yang lebih baik, dan dapat diskalakan dibandingkan infrastruktur pusat data tunggal atau multi tradisional. 

Untuk informasi selengkapnya tentang AWS Wilayah dan Availability Zone, lihat [Infrastruktur AWS Global](https://aws.amazon.com/about-aws/global-infrastructure/).

 AWS Produk atau layanan ini mengikuti [model tanggung jawab bersama](https://aws.amazon.com/compliance/shared-responsibility-model/) melalui layanan Amazon Web Services (AWS) tertentu yang didukungnya. Untuk informasi keamanan AWS layanan, lihat [halaman dokumentasi keamanan AWS layanan](https://docs.aws.amazon.com/security/?id=docs_gateway#aws-security) dan [AWS layanan yang berada dalam lingkup upaya AWS kepatuhan oleh program kepatuhan](https://aws.amazon.com/compliance/services-in-scope/).

# Keamanan Infrastruktur untuk AWS Produk atau Layanan ini
<a name="infrastructure-security"></a>

 AWS Produk atau layanan ini menggunakan layanan terkelola, dan karenanya 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 AWS Produk atau Layanan ini 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.

Selain itu, permintaan harus ditandatangani menggunakan ID kunci akses dan kunci akses rahasia yang terkait dengan principal IAM. Atau Anda dapat menggunakan [AWS Security Token Service](https://docs.aws.amazon.com/STS/latest/APIReference/Welcome.html) (AWS STS) untuk menghasilkan kredensial keamanan sementara untuk menandatangani permintaan.

 AWS Produk atau layanan ini mengikuti [model tanggung jawab bersama](https://aws.amazon.com/compliance/shared-responsibility-model/) melalui layanan Amazon Web Services (AWS) tertentu yang didukungnya. Untuk informasi keamanan AWS layanan, lihat [halaman dokumentasi keamanan AWS layanan](https://docs.aws.amazon.com/security/?id=docs_gateway#aws-security) dan [AWS layanan yang berada dalam lingkup upaya AWS kepatuhan oleh program kepatuhan](https://aws.amazon.com/compliance/services-in-scope/).

# Menegakkan versi TLS minimum di AWS SDK untuk .NET
<a name="enforcing-tls"></a>

Untuk meningkatkan keamanan saat berkomunikasi dengan AWS layanan, Anda harus mengkonfigurasi AWS SDK untuk .NET untuk menggunakan TLS 1.2 atau yang lebih baru.

 AWS SDK untuk .NET Menggunakan runtime .NET yang mendasarinya untuk menentukan protokol keamanan mana yang akan digunakan. Secara default, versi.NET saat ini menggunakan protokol terkonfigurasi terbaru yang didukung oleh sistem operasi. Aplikasi Anda dapat mengganti perilaku SDK ini, tetapi *tidak disarankan* untuk melakukannya.

## .NET Core
<a name="enforcing-tls-dotnet-core"></a>

Secara default, .NET Core menggunakan protokol terkonfigurasi terbaru yang didukung oleh sistem operasi. AWS SDK untuk .NET Tidak menyediakan mekanisme untuk mengesampingkan ini.

Jika Anda menggunakan versi .NET Core lebih awal dari 2.1, kami *sangat* menyarankan Anda meningkatkan versi.NET Core Anda.

Lihat berikut ini untuk informasi spesifik untuk setiap sistem operasi.

**Windows**

Distribusi modern Windows memiliki dukungan TLS 1.2 yang [diaktifkan secara default](https://learn.microsoft.com/en-us/windows/win32/secauthn/protocols-in-tls-ssl--schannel-ssp-). Jika Anda menjalankan Windows 7 SP1 atau Windows Server 2008 R2 SP1, Anda perlu memastikan bahwa dukungan TLS 1.2 diaktifkan di registri, seperti yang dijelaskan di [https://learn.microsoft.com/en-us/windows- server/security/tls/tls -registry-settings \$1tls -12](https://learn.microsoft.com/en-us/windows-server/security/tls/tls-registry-settings#tls-12). Jika Anda menjalankan distribusi sebelumnya, Anda harus meng-upgrade sistem operasi Anda. Untuk informasi tentang dukungan TLS 1.3 di Windows, periksa dokumentasi Microsoft terbaru untuk versi klien atau server minimum yang diperlukan.

**macOS**

Jika Anda menjalankan .NET Core 2.1 atau yang lebih baru, TLS 1.2 diaktifkan secara default. TLS 1.2 didukung oleh [OS X Mavericks](https://support.apple.com/en-us/103373) v10.9 atau yang lebih baru. [.NET Core versi 2.1 dan yang lebih baru memerlukan versi macOS yang lebih baru, seperti yang dijelaskan di? https://learn.microsoft.com/en-us/ dotnet/core/install/windows tabs=net80&pivots=os-macos](https://learn.microsoft.com/en-us/dotnet/core/install/windows?tabs=net80&pivots=os-macos).

Jika Anda menggunakan .NET Core 1.0, .NET Core [menggunakan OpenSSL di macOS, dependensi yang harus diinstal secara](https://github.com/dotnet/announcements/issues/21) terpisah. OpenSSL menambahkan dukungan untuk TLS 1.2 di versi 1.0.1, dan menambahkan dukungan untuk TLS 1.3 di versi 1.1.1.

**Linux**

.NET Core di Linux membutuhkan OpenSSL, yang dibundel dengan banyak distribusi Linux. Tapi itu juga bisa dipasang secara terpisah. OpenSSL menambahkan dukungan untuk TLS 1.2 di versi 1.0.1, dan menambahkan dukungan untuk TLS 1.3 di versi 1.1.1. Jika Anda menggunakan versi modern .NET Core (2.1 atau yang lebih baru) dan telah menginstal manajer paket, kemungkinan versi OpenSSL yang lebih modern diinstal untuk Anda.

Yang pasti, Anda dapat menjalankan **`openssl version`**di terminal dan memverifikasi bahwa versinya lebih lambat dari 1.0.1.

## .NET Framework
<a name="enforcing-tls-dotnet-framework"></a>

Jika Anda menjalankan versi modern.NET Framework (4.7 atau yang lebih baru) dan versi modern Windows (setidaknya Windows 8 untuk klien, Windows Server 2012 atau yang lebih baru untuk server), TLS 1.2 diaktifkan dan digunakan secara default.

Jika Anda menggunakan runtime .NET Framework yang tidak menggunakan pengaturan sistem operasi (.NET Framework 3.5 hingga 4.5.2), AWS SDK untuk .NET akan mencoba [menambahkan dukungan untuk TLS 1.1 dan TLS 1.2](https://github.com/aws/aws-sdk-net/blob/aws-sdk-net-v3.7/sdk/src/Core/Amazon.Runtime/Pipeline/HttpHandler/AmazonSecurityProtocolManager.cs) ke protokol yang didukung. Jika Anda menggunakan .NET Framework 3.5, ini akan berhasil hanya jika hot patch yang sesuai diinstal, sebagai berikut:
+ Windows 10 versi 1511 dan Windows Server 2016 - [KB3156421](https://support.microsoft.com/kb/3156421)
+ Windows 8.1 dan Windows Server 2012 R2 - [KB3154520](https://support.microsoft.com/kb/3154520)
+ Windows Server 2012 — [KB3154519](https://support.microsoft.com/kb/3154519)
+ Windows 7 SP1 dan Server 2008 R2 SP1 - [KB3154518](https://support.microsoft.com/kb/3154518)

**Awas**  
Mulai 15 Agustus 2024, AWS SDK untuk .NET akan mengakhiri dukungan untuk .NET Framework 3.5 dan akan mengubah versi.NET Framework minimum menjadi 4.7.2. Untuk informasi lebih lanjut, lihat posting blog [Perubahan penting yang datang untuk target.NET Framework 3.5 dan 4.5 dari AWS SDK untuk .NET](https://aws.amazon.com/blogs/developer/important-changes-coming-for-net-framework-3-5-and-4-5-targets-of-the-aws-sdk-for-net/).

Jika aplikasi Anda berjalan pada .NET Framework yang lebih baru pada Windows 7 SP1 atau Windows Server 2008 R2 SP1, Anda perlu memastikan bahwa dukungan TLS 1.2 diaktifkan di registri, seperti yang dijelaskan di [https://learn.microsoft.com/en-us/windows- server/security/tls/tls -registry-settings \$1tls -12](https://learn.microsoft.com/en-us/windows-server/security/tls/tls-registry-settings#tls-12). Versi Windows yang lebih baru telah [mengaktifkannya secara default](https://learn.microsoft.com/en-us/windows/win32/secauthn/protocols-in-tls-ssl--schannel-ssp-).

Untuk praktik terbaik mendetail untuk menggunakan TLS dengan.NET Framework, lihat artikel Microsoft di [https://learn.microsoft.com/en-us/dotnet/framework/network-programming/tls](https://learn.microsoft.com/en-us/dotnet/framework/network-programming/tls).

## Alat AWS untuk PowerShell
<a name="enforcing-tls-ps"></a>

[Alat AWS untuk PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/)gunakan AWS SDK untuk .NET untuk semua panggilan ke AWS layanan. Perilaku lingkungan Anda tergantung pada versi Windows yang PowerShell Anda jalankan, sebagai berikut.

**Windows PowerShell 2.0 hingga 5.x**

Windows PowerShell 2.0 hingga 5.x berjalan di .NET Framework. Anda dapat memverifikasi runtime.NET mana (2.0 atau 4.0) yang digunakan PowerShell dengan menggunakan perintah berikut.

```
$PSVersionTable.CLRVersion
```
+ Saat menggunakan.NET Runtime 2.0, ikuti petunjuk yang diberikan sebelumnya mengenai AWS SDK untuk .NET dan .NET Framework 3.5.
**Awas**  
Mulai 15 Agustus 2024, AWS SDK untuk .NET akan mengakhiri dukungan untuk .NET Framework 3.5 dan akan mengubah versi.NET Framework minimum menjadi 4.7.2. Untuk informasi lebih lanjut, lihat posting blog [Perubahan penting yang datang untuk target.NET Framework 3.5 dan 4.5 dari AWS SDK untuk .NET](https://aws.amazon.com/blogs/developer/important-changes-coming-for-net-framework-3-5-and-4-5-targets-of-the-aws-sdk-for-net/).
+ Saat menggunakan.NET Runtime 4.0, ikuti petunjuk yang diberikan sebelumnya mengenai AWS SDK untuk .NET dan .NET Framework 4\$1.

**Windows PowerShell 6.0**

Windows PowerShell 6.0 dan yang lebih baru berjalan di .NET Core. Anda dapat memverifikasi versi.NET Core mana yang digunakan dengan menjalankan perintah berikut.

```
[System.Reflection.Assembly]::GetEntryAssembly().GetCustomAttributes([System.Runtime.Versioning.TargetFrameworkAttribute], $true).FrameworkName
```

Ikuti petunjuk yang diberikan sebelumnya mengenai AWS SDK untuk .NET dan versi yang relevan dari.NET Core.

## Xamarin
<a name="enforcing-tls-xamarin"></a>

[Untuk Xamarin, lihat petunjuk di https://learn.microsoft.com/en-us/ xamarin/cross-platform/app-fundamentals/transport -layer-security.](https://learn.microsoft.com/en-us/xamarin/cross-platform/app-fundamentals/transport-layer-security) Ringkasnya:

**Untuk Android**
+ Membutuhkan Android 5.0 atau yang lebih baru.
+ **Properties Proyek**, **Opsi Android**: HttpClient implementasi harus disetel ke **Android** dan SSL/TLS implementasinya disetel ke **Native TLS 1.2\$1**.

**Untuk iOS**
+ Memerlukan iOS 7 atau yang lebih baru.
+ **Properties Project**, **iOS Build**: HttpClient implementasi harus disetel ke **NSUrlSession**.

**Untuk macOS**
+ Memerlukan macOS 10.9 atau yang lebih baru.
+ **Project Options**, **Build**, **Mac Build**: HttpClient implementasi harus diatur ke **NSUrlSession**.

## Unity
<a name="enforcing-tls-unity"></a>

Anda harus menggunakan Unity 2018.2 atau yang lebih baru, dan menggunakan runtime scripting .NET 4.x Equivalent. Anda dapat mengatur ini di **Pengaturan Proyek**, **Konfigurasi**, **Pemain**, seperti yang dijelaskan [https://docs.unity3d.com/2019.1/Documentation/Manual/ScriptingRuntimeUpgradedi.html.](https://docs.unity3d.com/2019.1/Documentation/Manual/ScriptingRuntimeUpgrade.html) Runtime scripting Setara .NET 4.x memungkinkan dukungan TLS 1.2 untuk semua platform Unity yang menjalankan Mono atau CPP. IL2 

## Browser (untuk Blazor WebAssembly)
<a name="enforcing-tls-browser"></a>

WebAssembly berjalan di browser bukan di server, dan menggunakan browser untuk menangani lalu lintas HTTP. Oleh karena itu, dukungan TLS ditentukan oleh dukungan browser.

[Blazor WebAssembly, dalam pratinjau untuk ASP.NET Core 3.1, hanya didukung di browser yang mendukung WebAssembly, seperti yang dijelaskan di -platform. https://learn.microsoft.com/en-us/ aspnet/core/blazor/supported](https://learn.microsoft.com/en-us/aspnet/core/blazor/supported-platforms) Semua browser mainstream mendukung TLS 1.2 sebelum mendukung. WebAssembly Jika ini adalah kasus untuk browser Anda, maka jika aplikasi Anda berjalan, itu dapat berkomunikasi melalui TLS 1.2.

Lihat dokumentasi browser Anda untuk informasi dan verifikasi selengkapnya.

# Migrasi Klien Enkripsi Amazon S3 (V1 ke V2)
<a name="s3-encryption-migration-v1-v2"></a>

**catatan**  
Jika Anda menggunakan V2 dan ingin bermigrasi ke V4, lihat. [Migrasi Klien Enkripsi Amazon S3 (V2 ke V4)](s3-encryption-migration-v2-v4.md)

Topik ini menunjukkan cara memigrasikan aplikasi Anda dari klien enkripsi Amazon Simple Storage Service (Amazon S3) ke Versi 1 (V1) Amazon Simple Storage Service (Amazon S3) ke Versi 2 (V2), dan memastikan ketersediaan aplikasi selama proses migrasi.

Objek yang dienkripsi dengan klien V2 tidak dapat didekripsi dengan klien V1. Untuk memudahkan migrasi ke klien baru tanpa harus mengenkripsi ulang semua objek sekaligus, klien “V1-transisi” telah disediakan. *Klien ini dapat *mendekripsi objek terenkripsi* V1- dan V2, tetapi mengenkripsi objek hanya dalam format yang kompatibel dengan V1.* *Klien V2 dapat *mendekripsi* objek terenkripsi V1- dan V2 (bila diaktifkan untuk objek V1), tetapi mengenkripsi objek hanya dalam format yang kompatibel dengan V2.*

## Ikhtisar Migrasi
<a name="s3-encryption-migration-v1-v2-overview"></a>

Migrasi ini terjadi dalam tiga fase. Fase-fase ini diperkenalkan di sini dan dijelaskan secara rinci nanti. Setiap fase harus diselesaikan untuk *semua* klien yang menggunakan objek bersama sebelum fase berikutnya dimulai.

1. **Perbarui klien yang ada ke klien transisi V1 untuk membaca format baru.** Pertama, perbarui aplikasi Anda untuk mengambil ketergantungan pada klien transisi V1 alih-alih klien V1. Klien transisi V1 memungkinkan kode Anda yang ada untuk mendekripsi objek yang ditulis oleh klien V2 baru dan objek yang ditulis dalam format yang kompatibel dengan V1.
**catatan**  
Klien transisi V1 disediakan hanya untuk tujuan migrasi. Lanjutkan untuk meningkatkan ke klien V2 setelah pindah ke klien transisi V1.

1. **Migrasikan klien transisi V1 ke klien V2 untuk menulis format baru.** Selanjutnya, ganti semua klien transisi V1 di aplikasi Anda dengan klien V2, dan atur profil keamanan ke. `V2AndLegacy` Menyetel profil keamanan ini pada klien V2 memungkinkan klien tersebut untuk mendekripsi objek yang dienkripsi dalam format yang kompatibel dengan V1.

1. **Perbarui klien V2 agar tidak lagi membaca format V1.** Akhirnya, setelah semua klien dimigrasikan ke V2 dan semua objek telah dienkripsi atau dienkripsi ulang dalam format yang kompatibel dengan V2, atur profil keamanan V2 menjadi alih-alih. `V2` `V2AndLegacy` Ini mencegah dekripsi objek yang dalam format yang kompatibel dengan V1.

## Perbarui Klien yang Ada ke Klien Transisi V1 untuk Membaca Format Baru
<a name="s3-encryption-migration-v1-v2-to-v1n"></a>

Klien enkripsi V2 menggunakan algoritma enkripsi yang tidak didukung oleh versi klien yang lebih lama. Langkah pertama dalam migrasi adalah memperbarui klien dekripsi V1 Anda sehingga mereka dapat membaca format baru.

Klien V1-transisi memungkinkan aplikasi Anda untuk mendekripsi objek terenkripsi V1 dan V2. Klien ini adalah bagian dari paket [ NuGet Amazon.Extensions.S3.Encryption](https://www.nuget.org/packages/Amazon.Extensions.S3.Encryption). Lakukan langkah-langkah berikut pada setiap aplikasi Anda untuk menggunakan klien transisi V1.

1. Ambil ketergantungan baru pada paket [Amazon.Extensions.S3.Encryption](https://www.nuget.org/packages/Amazon.Extensions.S3.Encryption). **Jika proyek Anda bergantung langsung pada **AWSSDK.S3** atau. AWSSDK KeyManagementService**paket, Anda harus memperbarui dependensi tersebut atau menghapusnya sehingga versi yang diperbarui akan ditarik dengan paket baru ini.

1. Ubah `using` pernyataan yang sesuai dari `Amazon.S3.Encryption` menjadi`Amazon.Extensions.S3.Encryption`, sebagai berikut: 

   ```
   // using Amazon.S3.Encryption;
     using Amazon.Extensions.S3.Encryption;
   ```

1. Membangun kembali dan menerapkan kembali aplikasi Anda.

Klien transisi V1 sepenuhnya kompatibel dengan API dengan klien V1, jadi tidak ada perubahan kode lain yang diperlukan.

## Migrasikan Klien Transisi V1 ke Klien V2 untuk Menulis Format Baru
<a name="s3-encryption-migration-v1-v2-v1n-to-v2"></a>

Klien V2 adalah bagian dari paket [ NuGet Amazon.Extensions.S3.Encryption](https://www.nuget.org/packages/Amazon.Extensions.S3.Encryption). Ini memungkinkan aplikasi Anda untuk mendekripsi objek terenkripsi V1- dan V2 (jika dikonfigurasi untuk melakukannya), tetapi mengenkripsi objek hanya dalam format yang kompatibel dengan V2.

Setelah memperbarui klien Anda yang ada untuk membaca format enkripsi baru, Anda dapat melanjutkan untuk memperbarui aplikasi Anda dengan aman ke klien enkripsi dan dekripsi V2. Lakukan langkah-langkah berikut pada setiap aplikasi Anda untuk menggunakan klien V2:

1. Ubah `EncryptionMaterials` ke `EncryptionMaterialsV2`.

   1. Saat menggunakan KMS:

      1. Berikan ID kunci KMS.

      1. Deklarasikan metode enkripsi yang Anda gunakan; yaitu,. `KmsType.KmsContext`

      1. Berikan konteks enkripsi ke KMS untuk dikaitkan dengan kunci data ini. Anda dapat mengirim kamus kosong (konteks enkripsi Amazon masih akan digabungkan), tetapi memberikan konteks tambahan dianjurkan.

   1. Saat menggunakan metode pembungkus kunci yang disediakan pengguna (enkripsi simetris atau asimetris):

      1. Berikan `AES` atau `RSA` contoh yang berisi materi enkripsi.

      1. Deklarasikan algoritma enkripsi mana yang akan digunakan; yaitu, `SymmetricAlgorithmType.AesGcm` atau. `AsymmetricAlgorithmType.RsaOaepSha1`

1. Ubah `AmazonS3CryptoConfiguration` ke `AmazonS3CryptoConfigurationV2` dengan `SecurityProfile` properti disetel ke`SecurityProfile.V2AndLegacy`.

1. Ubah `AmazonS3EncryptionClient` ke `AmazonS3EncryptionClientV2`. Klien ini mengambil yang baru dikonversi `AmazonS3CryptoConfigurationV2` dan `EncryptionMaterialsV2` objek dari langkah sebelumnya.

### Contoh: Konteks KMS ke KMS \$1
<a name="s3-encryption-migration-v1-v2-ex-kms"></a>

**Pra-migrasi**

```
using System.Security.Cryptography;
using Amazon.S3.Encryption;

var encryptionMaterial = new EncryptionMaterials("1234abcd-12ab-34cd-56ef-1234567890ab");
var configuration = new AmazonS3CryptoConfiguration()
{
    StorageMode = CryptoStorageMode.ObjectMetadata
};
var encryptionClient = new AmazonS3EncryptionClient(configuration, encryptionMaterial);
```

**Pasca-migrasi**

```
using System.Security.Cryptography;
using Amazon.Extensions.S3.Encryption;
using Amazon.Extensions.S3.Encryption.Primitives;

var encryptionContext = new Dictionary<string, string>();
var encryptionMaterial = new EncryptionMaterialsV2("1234abcd-12ab-34cd-56ef-1234567890ab", KmsType.KmsContext, encryptionContext);
var configuration = new AmazonS3CryptoConfigurationV2(SecurityProfile.V2AndLegacy)
{
    StorageMode = CryptoStorageMode.ObjectMetadata
};
var encryptionClient = new AmazonS3EncryptionClientV2(configuration, encryptionMaterial);
```

### Contoh: Algoritma Simetris (AES-CBC ke AES-GCM Key Wrap)
<a name="s3-encryption-migration-v1-v2-ex-aes"></a>

`StorageMode`bisa salah satu `ObjectMetadata` atau`InstructionFile`.

**Pra-migrasi**

```
using System.Security.Cryptography;
using Amazon.S3.Encryption;

var symmetricAlgorithm = Aes.Create();
var encryptionMaterial = new EncryptionMaterials(symmetricAlgorithm);
var configuration = new AmazonS3CryptoConfiguration()
{
    StorageMode = CryptoStorageMode.ObjectMetadata
};
var encryptionClient = new AmazonS3EncryptionClient(configuration, encryptionMaterial);
```

**Pasca-migrasi**

```
using System.Security.Cryptography;
using Amazon.Extensions.S3.Encryption;
using Amazon.Extensions.S3.Encryption.Primitives;

var symmetricAlgorithm = Aes.Create();
var encryptionMaterial = new EncryptionMaterialsV2(symmetricAlgorithm, SymmetricAlgorithmType.AesGcm);
var configuration = new AmazonS3CryptoConfigurationV2(SecurityProfile.V2AndLegacy)
{
    StorageMode = CryptoStorageMode.ObjectMetadata
};
var encryptionClient = new AmazonS3EncryptionClientV2(configuration, encryptionMaterial);
```

**catatan**  
Saat mendekripsi dengan AES-GCM, baca seluruh objek sampai akhir sebelum Anda mulai menggunakan data yang didekripsi. Ini untuk memverifikasi bahwa objek belum dimodifikasi sejak dienkripsi.

### Contoh: Algoritma Asimetris (RSA ke RSA-OAEP-SHA 1 Key Wrap)
<a name="s3-encryption-migration-v1-v2-ex-rsa"></a>

`StorageMode`bisa salah satu `ObjectMetadata` atau`InstructionFile`.

**Pra-migrasi**

```
using System.Security.Cryptography;
using Amazon.S3.Encryption;

var asymmetricAlgorithm = RSA.Create();
var encryptionMaterial = new EncryptionMaterials(asymmetricAlgorithm);
var configuration = new AmazonS3CryptoConfiguration()
{
    StorageMode = CryptoStorageMode.ObjectMetadata
};
var encryptionClient = new AmazonS3EncryptionClient(configuration, encryptionMaterial);
```

**Pasca-migrasi**

```
using System.Security.Cryptography;
using Amazon.Extensions.S3.Encryption;
using Amazon.Extensions.S3.Encryption.Primitives;

var asymmetricAlgorithm = RSA.Create();
var encryptionMaterial = new EncryptionMaterialsV2(asymmetricAlgorithm, AsymmetricAlgorithmType.RsaOaepSha1);
var configuration = new AmazonS3CryptoConfigurationV2(SecurityProfile.V2AndLegacy)
{
    StorageMode = CryptoStorageMode.ObjectMetadata
};
var encryptionClient = new AmazonS3EncryptionClientV2(configuration, encryptionMaterial);
```

## Perbarui Klien V2 agar Tidak Lagi Membaca Format V1
<a name="s3-encryption-migration-v1-v2-v2-cleanup"></a>

Akhirnya, semua objek akan dienkripsi atau dienkripsi ulang menggunakan klien V2. *Setelah konversi ini selesai*, Anda dapat menonaktifkan kompatibilitas V1 di klien V2 dengan menyetel `SecurityProfile` properti ke`SecurityProfile.V2`, seperti yang ditunjukkan pada cuplikan berikut.

```
//var configuration = new AmazonS3CryptoConfigurationV2(SecurityProfile.V2AndLegacy);
var configuration = new AmazonS3CryptoConfigurationV2(SecurityProfile.V2);
```

# Migrasi Klien Enkripsi Amazon S3 (V2 ke V4)
<a name="s3-encryption-migration-v2-v4"></a>

**catatan**  
Jika Anda menggunakan V1 dan ingin bermigrasi ke V4, Anda harus terlebih dahulu bermigrasi ke V2. Lihat [Migrasi Klien Enkripsi Amazon S3 (V1 ke V2)](s3-encryption-migration-v1-v2.md).

Topik ini menunjukkan cara memigrasikan aplikasi Anda dari klien enkripsi Amazon Simple Storage Service (Amazon S3) ke Versi 2 (V4) Amazon Simple Storage Service (Amazon S3) ke Versi 4 (V4), dan memastikan ketersediaan aplikasi selama proses migrasi. V4 menggunakan AES-GCM dengan komitmen utama untuk enkripsi konten dan memperkenalkan Kebijakan Komitmen untuk meningkatkan keamanan terhadap serangan substitusi kunci.

Klien V4 tersedia dalam paket [ NuGet Amazon.Extensions.S3.Encryption](https://www.nuget.org/packages/Amazon.Extensions.S3.Encryption).

**penting**  
**Melanggar Perubahan:** Klien V4 yang dikonfigurasi dengan `REQUIRE_ENCRYPT_REQUIRE_DECRYPT` kebijakan tidak dapat mendekripsi objek yang dienkripsi dengan klien V1 atau V2. Hanya klien V2 terbaru yang dapat mendekripsi objek terenkripsi V4 dengan komitmen utama. Sebelum beralih ke `REQUIRE_ENCRYPT_REQUIRE_DECRYPT` kebijakan, Anda harus mengenkripsi ulang semua data yang ada menggunakan klien V4 dengan komitmen utama diaktifkan.

## Memahami Konsep V4
<a name="s3-encryption-migration-v2-v4-concepts"></a>

V4 menggunakan AES-GCM dengan komitmen utama untuk enkripsi konten dan memperkenalkan konsep keamanan utama yang meningkatkan perlindungan data terenkripsi Anda:

### Kebijakan Komitmen
<a name="s3-encryption-migration-v2-v4-concepts-policy"></a>

Kebijakan Komitmen mengontrol cara klien enkripsi menangani komitmen utama selama operasi enkripsi dan dekripsi. V4 mendukung tiga kebijakan komitmen:

`FORBID_ENCRYPT_ALLOW_DECRYPT`  
*Enkripsi:* Tanpa komitmen  
*Dekripsi:* Memungkinkan objek yang tidak berkomitmen  
*Keamanan:* Tidak menegakkan komitmen dan memungkinkan gangguan  
*Kompatibilitas:* Semua implementasi V2 dan V4 dapat membaca objek yang dienkripsi dengan kebijakan ini

`REQUIRE_ENCRYPT_ALLOW_DECRYPT`  
*Enkripsi:* Dengan komitmen utama  
*Dekripsi:* Memungkinkan objek yang melakukan dan tidak berkomitmen  
*Keamanan:* Objek baru dilindungi dari serangan substitusi kunci, objek lama masih dapat dibaca  
*Kompatibilitas:* Hanya V4 yang mendukung kebijakan ini

`REQUIRE_ENCRYPT_REQUIRE_DECRYPT`(Default untuk V4)  
*Enkripsi:* Dengan komitmen utama  
*Dekripsi:* Hanya melakukan objek  
*Keamanan:* Penegakan komitmen penuh untuk keamanan maksimum  
*Kompatibilitas:* Hanya V4 yang mendukung kebijakan ini

### AES GCM dengan Komitmen Utama
<a name="s3-encryption-migration-v2-v4-concepts-aesgcm"></a>

V4 menggunakan AES-GCM dengan komitmen utama untuk enkripsi konten, yang memberikan keamanan yang ditingkatkan:
+ *Perlindungan Perusakan:* Ini melindungi terhadap serangan substitusi kunci dengan mengikat kunci ke data terenkripsi secara kriptografis.
+ *Kompatibilitas Versi:* Objek yang dienkripsi dengan komitmen utama hanya dapat didekripsi oleh klien V4 dan versi yang lebih baru.

**Awas**  
Sebelum mengaktifkan enkripsi komitmen utama dalam produksi, pastikan bahwa semua aplikasi yang perlu mendekripsi objek Anda telah ditingkatkan ke V4 atau yang lebih baru karena klien V2 tidak digunakan lagi.

## Perbarui Klien yang Ada untuk Membaca Format V4
<a name="s3-encryption-migration-v2-v4-update-clients"></a>

Klien enkripsi V4 menggunakan algoritma enkripsi yang tidak didukung oleh versi klien yang lebih lama. Langkah pertama dalam migrasi adalah memperbarui klien V2 Anda sehingga mereka dapat membaca format V4 baru.

### Perbarui Dependensi NuGet Package
<a name="s3-encryption-migration-v2-v4-update-nuget"></a>

Perbarui aplikasi Anda untuk menggunakan versi terbaru dari paket [ NuGet Amazon.Extensions.S3.Encryption](https://www.nuget.org/packages/Amazon.Extensions.S3.Encryption) yang mencakup dukungan V4. Lakukan langkah-langkah berikut pada setiap aplikasi Anda:

1. Perbarui ke paket [Amazon.Extensions.S3.Encryption](https://www.nuget.org/packages/Amazon.Extensions.S3.Encryption) terbaru. **Jika proyek Anda bergantung langsung pada **AWSSDK.S3** atau. AWSSDK KeyManagementService**paket, Anda harus memperbarui dependensi tersebut atau menghapusnya sehingga versi yang diperbarui akan ditarik dengan paket baru ini.

1. Pastikan `using` pernyataan Anda mereferensikan namespace yang benar:

   ```
   using Amazon.Extensions.S3.Encryption;
   using Amazon.Extensions.S3.Encryption.Primitives;
   ```

1. Membangun kembali dan menerapkan kembali aplikasi Anda.

Klien V2 Anda yang ada akan terus bekerja dengan paket yang diperbarui dan akan dapat mendekripsi objek yang dienkripsi oleh klien V4 (tergantung pada kebijakan komitmen yang digunakan).

### Membangun dan Menyebarkan Aplikasi
<a name="s3-encryption-migration-v2-v4-build-deploy"></a>

Setelah memperbarui dependensi NuGet paket Anda:

1. Bangun aplikasi Anda untuk memastikan semua dependensi diselesaikan dengan benar.

1. Uji aplikasi Anda di lingkungan pengembangan untuk memverifikasi bahwa fungsionalitas yang ada terus berfungsi.

1. Terapkan aplikasi yang diperbarui ke lingkungan produksi Anda.

Pembaruan ini memungkinkan klien V2 Anda yang ada untuk mendekripsi objek yang akan dienkripsi oleh klien V4, memastikan kompatibilitas selama proses migrasi.

## Migrasi ke Klien V4
<a name="s3-encryption-migration-v2-v4-migrate"></a>

Setelah memperbarui klien Anda yang ada untuk membaca format enkripsi baru, Anda dapat melanjutkan untuk memperbarui aplikasi Anda dengan aman untuk menggunakan enkripsi V4 dan klien dekripsi. Klien V4 memberikan keamanan yang ditingkatkan melalui komitmen utama sambil mempertahankan kompatibilitas dengan objek terenkripsi yang ada.

### Proses Migrasi 4 Langkah
<a name="s3-encryption-migration-v2-v4-migrate-steps"></a>

Migrasi dari V2 ke V4 mengikuti proses 4 langkah terstruktur untuk memastikan kompatibilitas dan keamanan. Setiap langkah mewakili konfigurasi spesifik yang harus diterapkan di semua aplikasi Anda sebelum melanjutkan ke langkah berikutnya.

1. **Langkah 0: Klien V2 (Titik Awal)** - Implementasi V2 Anda yang ada

1. **Langkah 1: V4 dengan Kompatibilitas V2** - Migrasi ke klien V4 sambil mempertahankan perilaku enkripsi yang kompatibel dengan V2

1. **Langkah 2: V4 dengan Key Commitment Writes** - Mulai mengenkripsi dengan komitmen utama sambil memungkinkan dekripsi objek warisan

1. **Langkah 3: V4 dengan Penegakan Penuh** - Memerlukan komitmen utama untuk enkripsi dan dekripsi

### Langkah 0: Klien V2 (Titik Awal)
<a name="s3-encryption-migration-v2-v4-step0"></a>

Ini mewakili konfigurasi klien V2 Anda yang ada. Langkah ini menunjukkan status awal sebelum migrasi.

```
using Amazon.Extensions.S3.Encryption;
using Amazon.Extensions.S3.Encryption.Primitives;
using Amazon.S3.Model;

// Step 0: V2 Client - Starting configuration
var encryptionContext = new Dictionary<string, string>();
var encryptionMaterial = new EncryptionMaterialsV2(kmsKeyId, KmsType.KmsContext, encryptionContext);

#pragma warning disable 0618
var configuration = new AmazonS3CryptoConfigurationV2(SecurityProfile.V2);
#pragma warning enable 0618

var encryptionClient = new AmazonS3EncryptionClientV2(configuration, encryptionMaterial);

// Use the client for PutObject and GetObject operations
await encryptionClient.PutObjectAsync(new PutObjectRequest
{
    BucketName = bucket,
    Key = objectKey,
    ContentBody = content
});
```

### Langkah 1: V4 dengan Kompatibilitas V2
<a name="s3-encryption-migration-v2-v4-step1"></a>

Migrasi ke klien V4 sambil mempertahankan perilaku identik ke V2. Langkah ini menggunakan `FORBID_ENCRYPT_ALLOW_DECRYPT` kebijakan untuk mengenkripsi tanpa komitmen dan memungkinkan dekripsi semua objek.

```
using Amazon.Extensions.S3.Encryption;
using Amazon.Extensions.S3.Encryption.Primitives;
using Amazon.S3.Model;

// Step 1: V4 Client with V2 compatibility
var encryptionContext = new Dictionary<string, string>();
var encryptionMaterial = new EncryptionMaterialsV4(kmsKeyId, KmsType.KmsContext, encryptionContext);

var configuration = new AmazonS3CryptoConfigurationV4(
    SecurityProfile.V4, 
    CommitmentPolicy.FORBID_ENCRYPT_ALLOW_DECRYPT, 
    ContentEncryptionAlgorithm.AesGcm);

var encryptionClient = new AmazonS3EncryptionClientV4(configuration, encryptionMaterial);

// Use the client for PutObject and GetObject operations
await encryptionClient.PutObjectAsync(new PutObjectRequest
{
    BucketName = bucket,
    Key = objectKey,
    ContentBody = content
});
```

**Perilaku:** Mengenkripsi tanpa komitmen, dapat mendekripsi objek yang berkomitmen dan tidak berkomitmen. Identik dengan perilaku V2.

### Langkah 2: V4 dengan Key Commitment Writes
<a name="s3-encryption-migration-v2-v4-step2"></a>

Mulai enkripsi dengan komitmen utama sambil mempertahankan kompatibilitas mundur untuk dekripsi. Langkah ini menggunakan `REQUIRE_ENCRYPT_ALLOW_DECRYPT` kebijakan.

**Awas**  
Sebelum menerapkan Langkah 2, pastikan semua pembaca telah diperbarui ke Langkah 1 atau yang lebih baru untuk menangani enkripsi komitmen utama.

```
using Amazon.Extensions.S3.Encryption;
using Amazon.Extensions.S3.Encryption.Primitives;
using Amazon.S3.Model;

// Step 2: V4 Client with key commitment writes
var encryptionContext = new Dictionary<string, string>();
var encryptionMaterial = new EncryptionMaterialsV4(kmsKeyId, KmsType.KmsContext, encryptionContext);

var configuration = new AmazonS3CryptoConfigurationV4(
    SecurityProfile.V4, 
    CommitmentPolicy.REQUIRE_ENCRYPT_ALLOW_DECRYPT, 
    ContentEncryptionAlgorithm.AesGcmWithCommitment);

var encryptionClient = new AmazonS3EncryptionClientV4(configuration, encryptionMaterial);

// Use the client for PutObject and GetObject operations
await encryptionClient.PutObjectAsync(new PutObjectRequest
{
    BucketName = bucket,
    Key = objectKey,
    ContentBody = content
});
```

**Perilaku:** Mengenkripsi dengan komitmen, dapat mendekripsi objek yang berkomitmen dan tidak berkomitmen. Objek baru dilindungi dari serangan substitusi kunci.

### Langkah 3: V4 dengan Penegakan Penuh
<a name="s3-encryption-migration-v2-v4-step3"></a>

Memerlukan komitmen utama untuk enkripsi dan dekripsi. Langkah ini menggunakan `REQUIRE_ENCRYPT_REQUIRE_DECRYPT` kebijakan untuk keamanan maksimum.

**Awas**  
Sebelum menerapkan Langkah 3, pastikan semua objek di sistem Anda telah dienkripsi ulang dengan komitmen utama (Langkah 2). Langkah ini akan gagal mendekripsi objek yang dienkripsi tanpa komitmen.

```
using Amazon.Extensions.S3.Encryption;
using Amazon.Extensions.S3.Encryption.Primitives;
using Amazon.S3.Model;

// Step 3: V4 Client with full key commitment enforcement
var encryptionContext = new Dictionary<string, string>();
var encryptionMaterial = new EncryptionMaterialsV4(kmsKeyId, KmsType.KmsContext, encryptionContext);

var configuration = new AmazonS3CryptoConfigurationV4(
    SecurityProfile.V4, 
    CommitmentPolicy.REQUIRE_ENCRYPT_REQUIRE_DECRYPT, 
    ContentEncryptionAlgorithm.AesGcmWithCommitment);

var encryptionClient = new AmazonS3EncryptionClientV4(configuration, encryptionMaterial);

// Use the client for PutObject and GetObject operations
await encryptionClient.PutObjectAsync(new PutObjectRequest
{
    BucketName = bucket,
    Key = objectKey,
    ContentBody = content
});
```

**Perilaku:** Mengenkripsi dengan komitmen, hanya mendekripsi objek yang dienkripsi dengan komitmen. Keamanan maksimum terhadap serangan substitusi kunci.

## Contoh Konfigurasi Tambahan
<a name="s3-encryption-migration-v2-v4-examples"></a>

Bagian ini memberikan contoh tambahan untuk mengonfigurasi klien V4 dengan opsi berbeda selama migrasi.

### Mengaktifkan Legacy Support
<a name="s3-encryption-migration-v2-v4-examples-legacy"></a>

Untuk mengaktifkan klien V4 membaca objek yang dienkripsi oleh klien V1 dan V2, konfigurasikan klien dengan kebijakan komitmen yang memungkinkan dekripsi lama:

```
using Amazon.Extensions.S3.Encryption;
using Amazon.Extensions.S3.Encryption.Primitives;

// Configure V4 client to read V1/V2 objects
var configuration = new AmazonS3CryptoConfigurationV4(CommitmentPolicy.REQUIRE_ENCRYPT_ALLOW_DECRYPT)
{
    StorageMode = CryptoStorageMode.ObjectMetadata
};

// This configuration allows:
// - Encryption: With commitment (secure)
// - Decryption: Both V2 (non-committing) and V4 (committing) objects
```

Gunakan konfigurasi ini selama migrasi saat Anda perlu mendekripsi objek yang dienkripsi oleh klien lama sambil memastikan objek baru dienkripsi dengan keamanan yang ditingkatkan.

### Mengkonfigurasi Metode Penyimpanan
<a name="s3-encryption-migration-v2-v4-examples-storage"></a>

V4 mendukung dua metode penyimpanan untuk metadata enkripsi. Pilih metode yang paling sesuai dengan kasus penggunaan Anda:

**Metadata Objek (Default)**

```
var configuration = new AmazonS3CryptoConfigurationV4(CommitmentPolicy.REQUIRE_ENCRYPT_ALLOW_DECRYPT)
{
    StorageMode = CryptoStorageMode.ObjectMetadata
};
// Encryption metadata is stored in S3 object metadata
```

**File Instruksi**

```
var configuration = new AmazonS3CryptoConfigurationV4(CommitmentPolicy.REQUIRE_ENCRYPT_ALLOW_DECRYPT)
{
    StorageMode = CryptoStorageMode.InstructionFile
};
// Encryption metadata is stored in a separate S3 object (instruction file)
```

Gunakan `InstructionFile` saat Anda perlu mempertahankan metadata objek untuk tujuan lain atau saat bekerja dengan objek yang memiliki batasan ukuran metadata.

### Mengkonfigurasi Kebijakan Komitmen
<a name="s3-encryption-migration-v2-v4-examples-policy"></a>

Pilih kebijakan komitmen yang sesuai berdasarkan persyaratan keamanan dan fase migrasi Anda:

**Fase Migrasi (Kompatibilitas V2)**

```
// For migration: encrypt without commitment, allow all decryption
var migrationConfig = new AmazonS3CryptoConfigurationV4(CommitmentPolicy.FORBID_ENCRYPT_ALLOW_DECRYPT);
```

**Fase Transisi (Direkomendasikan)**

```
// For transition: encrypt with commitment, allow legacy decryption
var transitionConfig = new AmazonS3CryptoConfigurationV4(CommitmentPolicy.REQUIRE_ENCRYPT_ALLOW_DECRYPT);
```

**Fase Keamanan Penuh**

```
// For maximum security: require commitment for both encryption and decryption
var secureConfig = new AmazonS3CryptoConfigurationV4(CommitmentPolicy.REQUIRE_ENCRYPT_REQUIRE_DECRYPT);
```

Mulailah dengan `FORBID_ENCRYPT_ALLOW_DECRYPT` selama migrasi awal, pindah ke `REQUIRE_ENCRYPT_ALLOW_DECRYPT` untuk fase transisi, dan akhirnya gunakan `REQUIRE_ENCRYPT_REQUIRE_DECRYPT` ketika semua klien telah ditingkatkan dan semua objek telah dienkripsi ulang dengan komitmen.