

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

# Manajemen identitas dan akses untuk Amazon Aurora
<a name="UsingWithRDS.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 *diotorisasi* (memiliki izin) untuk menggunakan sumber daya Amazon RDS. 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)
+ [

# Cara kerja Amazon Aurora dengan IAM
](security_iam_service-with-iam.md)
+ [

# Contoh kebijakan berbasis identitas untuk Amazon Aurora
](security_iam_id-based-policy-examples.md)
+ [

# AWS kebijakan terkelola untuk Amazon RDS
](rds-security-iam-awsmanpol.md)
+ [

# Amazon RDS memperbarui kebijakan AWS terkelola
](rds-manpol-updates.md)
+ [

# Pencegahan masalah confused deputy lintas layanan
](cross-service-confused-deputy-prevention.md)
+ [

# Autentikasi basis data IAM
](UsingWithRDS.IAMDBAuth.md)
+ [

# Memecahkan masalah identitas dan akses Amazon Aurora
](security_iam_troubleshoot.md)

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

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

**Pengguna layanan** – Jika Anda menggunakan layanan Aurora untuk melakukan pekerjaan, administrator Anda akan memberikan kredensial dan izin yang Anda butuhkan. Saat Anda menggunakan lebih banyak fitur Aurora untuk melakukan pekerjaan, Anda mungkin memerlukan izin tambahan. Memahami bagaimana cara mengelola akses dapat membantu Anda meminta izin yang tepat dari administrator Anda. Jika Anda tidak dapat mengakses fitur di Aurora, lihat [Memecahkan masalah identitas dan akses Amazon Aurora](security_iam_troubleshoot.md).

**Administrator layanan** – Jika Anda bertanggung jawab atas sumber daya Aurora di perusahaan, Anda mungkin memiliki akses penuh ke Aurora. Tugas Anda adalah menentukan fitur Aurora dan sumber daya mana yang dapat diakses karyawan Anda. Kemudian, Anda harus mengirim permintaan kepada administrator untuk mengubah izin pengguna layanan. Tinjau informasi di halaman ini untuk memahami konsep dasar IAM. Untuk mempelajari selengkapnya tentang bagaimana perusahaan Anda dapat menggunakan IAM dengan Aurora, lihat [Cara kerja Amazon Aurora dengan IAM](security_iam_service-with-iam.md).

**Administrator** – Jika Anda adalah seorang administrator, Anda mungkin ingin mengetahui detail tentang cara menulis kebijakan untuk mengelola akses ke Aurora. Untuk melihat contoh kebijakan berbasis identitas Aurora yang dapat Anda gunakan di IAM, lihat [Contoh kebijakan berbasis identitas untuk Amazon Aurora](security_iam_id-based-policy-examples.md).

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

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

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

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

### AWS pengguna root akun
<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 kredensil pengguna root, lihat [Tugas yang memerlukan kredensil pengguna root di Panduan Pengguna IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks).* 

### Identitas gabungan
<a name="security_iam_authentication-federatedidentity"></a>

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

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

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

### 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 kredensi 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 kredensi sementara](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-users-federation-idp) di Panduan Pengguna *IAM*.

Grup [https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html) pengguna IAM dan membuat izin lebih mudah dikelola untuk kumpulan pengguna yang besar. Untuk informasi selengkapnya, lihat [Kasus penggunaan untuk pengguna IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/gs-identities-iam-users.html) di *Panduan Pengguna IAM*.

Anda dapat mengautentikasi ke klaster DB Anda menggunakan autentikasi basis data IAM.

Autentikasi basis data IAM kompatibel dengan Aurora. Untuk informasi selengkapnya tentang cara mengautentikasi ke klaster DB Anda menggunakan IAM, lihat [Autentikasi basis data IAM](UsingWithRDS.IAMDBAuth.md).

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

*[Peran IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)* adalah identitas dalam diri Anda Akun AWS yang memiliki izin khusus. Peran ini mirip dengan pengguna, tetapi tidak terkait dengan orang tertentu. Anda dapat mengambil peran IAM untuk sementara Konsol Manajemen AWS dengan [beralih peran](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-console.html). Anda dapat mengambil peran dengan memanggil operasi AWS CLI atau AWS API atau dengan menggunakan URL kustom. Untuk informasi selengkapnya tentang cara menggunakan peran, lihat [Menggunakan peran IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html) dalam *Panduan Pengguna IAM*.

Peran IAM dengan kredensial sementara berguna dalam situasi berikut:
+ **Izin pengguna sementara** – Pengguna dapat mengambil peran IAM untuk mendapatkan izin yang berbeda sementara waktu agar dapat melakukan tugas tertentu. 
+ **Akses pengguna terfederasi** – Untuk menetapkan izin ke identitas terfederasi, 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 rangkaian izin, silakan lihat [Rangkaian izin](https://docs.aws.amazon.com/singlesignon/latest/userguide/permissionsetsconcept.html) dalam *Panduan Pengguna AWS IAM Identity Center *. 
+ **Akses lintas akun** – Anda dapat menggunakan peran IAM untuk mengizinkan seseorang (prinsipal tepercaya) di akun lain untuk mengakses sumber daya di akun Anda. Peran adalah cara utama untuk memberikan akses lintas akun. Namun, dengan beberapa Layanan AWS, Anda dapat melampirkan kebijakan secara langsung ke sumber daya (alih-alih menggunakan peran sebagai proxy). Untuk mempelajari perbedaan antara peran dan kebijakan berbasis sumber daya untuk akses lintas akun, lihat [Bagaimana peran IAM berbeda dari kebijakan berbasis sumber daya](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_compare-resource-policies.html) dalam *Panduan Pengguna IAM*.
+ **Akses lintas layanan** — Beberapa Layanan AWS menggunakan fitur lain Layanan AWS. Misalnya, saat Anda melakukan panggilan dalam suatu layanan, biasanya layanan tersebut menjalankan aplikasi di Amazon EC2 atau menyimpan objek di Amazon S3. Sebuah layanan mungkin melakukannya menggunakan izin principal yang memanggil, menggunakan peran layanan, atau peran terkait layanan. 
  + **Sesi akses** teruskan — Sesi akses teruskan (FAS) menggunakan izin dari pemanggilan utama Layanan AWS, dikombinasikan dengan permintaan Layanan AWS untuk membuat permintaan ke layanan hilir. Untuk detail kebijakan ketika mengajukan permintaan FAS, lihat [Sesi akses terusan](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_forward_access_sessions.html). 
  + **Peran layanan** – Peran layanan adalah [peran IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) yang dijalankan oleh layanan untuk melakukan tindakan atas nama Anda. Administrator IAM dapat membuat, mengubah, dan menghapus peran layanan dari dalam IAM. Untuk informasi selengkapnya, lihat [Buat sebuah peran untuk mendelegasikan izin ke Layanan AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) dalam *Panduan pengguna IAM*. 
  + **Peran terkait layanan — Peran** terkait layanan adalah jenis peran layanan yang ditautkan ke peran layanan. Layanan AWS Layanan tersebut dapat menjalankan peran untuk melakukan tindakan atas nama Anda. Peran terkait layanan muncul di Anda Akun AWS dan dimiliki oleh layanan. Administrator IAM dapat melihat, tetapi tidak dapat mengedit izin untuk peran terkait layanan. 
+ **Aplikasi yang berjalan di Amazon EC2** — Anda dapat menggunakan peran IAM untuk mengelola kredensi sementara untuk aplikasi yang berjalan pada EC2 instance dan membuat AWS CLI atau AWS permintaan API. Ini lebih baik untuk menyimpan kunci akses dalam EC2 instance. Untuk menetapkan AWS peran ke EC2 instance dan membuatnya tersedia untuk semua aplikasinya, Anda membuat profil instance yang dilampirkan ke instance. Profil instance berisi peran dan memungkinkan program yang berjalan pada EC2 instance untuk mendapatkan kredensi sementara. Untuk informasi selengkapnya, lihat [Menggunakan peran IAM untuk memberikan izin ke aplikasi yang berjalan di EC2 instans Amazon di Panduan Pengguna](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2.html) *IAM*. 

Untuk mempelajari apakah harus menggunakan peran IAM, lihat [Kapan harus membuat peran IAM (bukan pengguna)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html#id_which-to-choose_role) 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 identitas atau sumber daya IAM. AWS Kebijakan adalah objek AWS yang, ketika dikaitkan dengan identitas atau sumber daya, menentukan izinnya. AWS mengevaluasi kebijakan ini ketika entitas (pengguna root, pengguna, atau peran IAM) membuat permintaan. Izin dalam kebijakan menentukan apakah permintaan diizinkan atau ditolak. Sebagian besar kebijakan disimpan AWS sebagai dokumen JSON. Untuk informasi selengkapnya tentang struktur dan isi 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*.

Administrator dapat menggunakan kebijakan untuk menentukan siapa yang memiliki akses ke AWS sumber daya, dan tindakan apa yang dapat mereka lakukan pada sumber daya tersebut. Setiap entitas IAM (set izin atau peran) dimulai tanpa izin. Dengan kata lain, secara default, pengguna tidak dapat melakukan apa pun, termasuk mengubah kata sandinya sendiri. Untuk memberikan izin kepada pengguna untuk melakukan sesuatu, administrator harus melampirkan kebijakan izin kepada pengguna. Atau administrator dapat menambahkan pengguna ke grup yang memiliki izin yang dimaksudkan. Ketika administrator memberikan izin untuk grup, semua pengguna dalam grup tersebut akan diberi izin tersebut.

Kebijakan IAM mendefinisikan izin untuk suatu tindakan terlepas dari metode yang Anda gunakan untuk melakukan operasinya. Misalnya, anggaplah Anda memiliki kebijakan yang mengizinkan tindakan `iam:GetRole`. Pengguna dengan kebijakan tersebut bisa mendapatkan informasi peran dari Konsol Manajemen AWS, API AWS CLI, atau AWS API.

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

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

Kebijakan berbasis identitas dapat dikategorikan lebih lanjut sebagai *kebijakan inline* atau *kebijakan yang dikelola*. Kebijakan inline disematkan secara langsung ke satu set izin atau peran. Kebijakan terkelola adalah kebijakan mandiri yang dapat Anda lampirkan ke beberapa set izin dan peran di AWS akun Anda. Kebijakan AWS terkelola mencakup kebijakan terkelola dan kebijakan yang dikelola pelanggan. Untuk mempelajari cara memilih antara kebijakan yang dikelola atau kebijakan inline, lihat [Memilih antara kebijakan yang dikelola dan kebijakan inline](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#choosing-managed-or-inline) dalam *Panduan Pengguna IAM*.

Untuk informasi tentang kebijakan AWS terkelola yang khusus untuk Amazon Aurora, lihat. [AWS kebijakan terkelola untuk Amazon RDS](rds-security-iam-awsmanpol.md)

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

AWS mendukung jenis kebijakan tambahan yang kurang umum. Jenis kebijakan ini dapat mengatur izin maksimum yang diberikan kepada Anda oleh jenis kebijakan yang lebih umum. 
+ **Batasan izin** – Batasan izin adalah fitur lanjutan untuk menetapkan izin maksimum yang dapat diberikan oleh kebijakan berbasis identitas kepada entitas IAM (set izin atau peran). Anda dapat menetapkan batasan izin untuk suatu entitas. Izin yang dihasilkan adalah perpotongan antara kebijakan berbasis identitas milik entitas dan batasan izin tersebut. Kebijakan berbasis sumber daya yang menentukan set izin atau peran di bidang `Principal` tidak dibatasi oleh batasan izin. Penolakan eksplisit dalam salah satu kebijakan ini membatalkan izin. Untuk informasi selengkapnya tentang batasan izin, 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)** — SCPs adalah kebijakan JSON yang menentukan izin maksimum untuk organisasi atau unit organisasi (OU) di. AWS Organizations AWS Organizations adalah layanan untuk mengelompokkan dan mengelola beberapa AWS akun secara terpusat yang dimiliki bisnis Anda. Jika Anda mengaktifkan semua fitur dalam organisasi, Anda dapat menerapkan kebijakan kontrol layanan (SCPs) ke salah satu atau semua akun Anda. SCP membatasi izin untuk entitas di akun anggota, termasuk masing-masing. Pengguna root akun AWS Untuk informasi selengkapnya tentang Organizations dan SCPs, lihat [Cara SCPs kerja](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_about-scps.html) di *Panduan AWS Organizations Pengguna*.
+ **Kebijakan sesi** – Kebijakan sesi adalah kebijakan lanjutan yang Anda berikan sebagai parameter saat Anda membuat sesi sementara secara programatis untuk peran atau pengguna terfederasi. Izin sesi yang dihasilkan adalah perpotongan antara set izin atau kebijakan berbasis identitas peran dan kebijakan sesi tersebut. Izin juga dapat berasal dari kebijakan berbasis sumber daya. Penolakan eksplisit dalam salah satu kebijakan ini akan menggantikan pemberian izin. 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*.

# Cara kerja Amazon Aurora dengan IAM
<a name="security_iam_service-with-iam"></a>

Sebelum menggunakan IAM untuk mengelola akses ke Amazon Aurora, Anda harus memahami fitur IAM yang dapat digunakan dengan Aurora.

Tabel berikut mencantumkan fitur IAM yang dapat Anda gunakan dengan Aurora:


| Fitur IAM | Dukungan Amazon Aurora | 
| --- | --- | 
|  [Kebijakan berbasis identitas](#security_iam_service-with-iam-id-based-policies)  |  Ya  | 
|  [Kebijakan berbasis sumber daya](#security_iam_service-with-iam-resource-based-policies)  |  Tidak  | 
|  [Tindakan kebijakan](#security_iam_service-with-iam-id-based-policies-actions)  |  Ya  | 
|  [Sumber daya kebijakan](#security_iam_service-with-iam-id-based-policies-resources)  |  Ya  | 
|  [kunci-kunci persyaratan kebijakan (spesifik layanan)](#UsingWithRDS.IAM.Conditions)  |  Ya  | 
|  [ACLs](#security_iam_service-with-iam-acls)  |  Tidak  | 
|  [Kontrol akses berbasis atribut (ABAC) (tag dalam kebijakan)](#security_iam_service-with-iam-tags)  |  Ya  | 
|  [Kredensial sementara](#security_iam_service-with-iam-roles-tempcreds)  |  Ya  | 
|  [Teruskan sesi akses](#security_iam_service-with-iam-principal-permissions)  |  Ya  | 
|  [Peran layanan](#security_iam_service-with-iam-roles-service)  |  Ya  | 
|  [Peran terkait layanan](#security_iam_service-with-iam-roles-service-linked)  |  Ya  | 

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

**Topics**
+ [

## Kebijakan berbasis identitas Aurora
](#security_iam_service-with-iam-id-based-policies)
+ [

## Kebijakan berbasis sumber daya dalam Aurora
](#security_iam_service-with-iam-resource-based-policies)
+ [

## Tindakan kebijakan untuk Aurora
](#security_iam_service-with-iam-id-based-policies-actions)
+ [

## Sumber daya kebijakan untuk Aurora
](#security_iam_service-with-iam-id-based-policies-resources)
+ [

## Kunci kondisi kebijakan untuk Aurora
](#UsingWithRDS.IAM.Conditions)
+ [

## Daftar kontrol akses (ACLs) di
](#security_iam_service-with-iam-acls)
+ [

## Kontrol akses berbasis atribut (ABAC) dalam kebijakan dengan tag Aurora
](#security_iam_service-with-iam-tags)
+ [

## Menggunakan kredensial sementara dengan Aurora
](#security_iam_service-with-iam-roles-tempcreds)
+ [

## Teruskan sesi akses untuk
](#security_iam_service-with-iam-principal-permissions)
+ [

## Peran layanan untuk Aurora
](#security_iam_service-with-iam-roles-service)
+ [

## Peran terkait layanan untuk Aurora
](#security_iam_service-with-iam-roles-service-linked)

## Kebijakan berbasis identitas Aurora
<a name="security_iam_service-with-iam-id-based-policies"></a>

**Mendukung kebijakan berbasis identitas**: Ya.

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

Dengan kebijakan berbasis identitas IAM, Anda dapat menentukan secara spesifik apakah tindakan dan sumber daya diizinkan atau ditolak, serta kondisi yang menjadi dasar dikabulkan atau ditolaknya tindakan tersebut. Untuk mempelajari semua elemen yang dapat digunakan dalam kebijakan JSON, lihat [Referensi elemen kebijakan JSON IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html) dalam *Panduan Pengguna IAM*.

### Contoh kebijakan berbasis identitas untuk Aurora
<a name="security_iam_service-with-iam-id-based-policies-examples"></a>

Untuk melihat contoh kebijakan berbasis identitas Aurora, lihat [Contoh kebijakan berbasis identitas untuk Amazon Aurora](security_iam_id-based-policy-examples.md).

## Kebijakan berbasis sumber daya dalam Aurora
<a name="security_iam_service-with-iam-resource-based-policies"></a>

**Mendukung kebijakan berbasis sumber daya**: No.

Kebijakan berbasis sumber daya adalah dokumen kebijakan JSON yang Anda lampirkan ke sumber daya. Contoh kebijakan berbasis sumber daya adalah *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. Untuk sumber daya tempat kebijakan dilampirkan, kebijakan menentukan tindakan apa yang dapat dilakukan oleh principal tertentu pada sumber daya tersebut dan dalam kondisi apa. Anda harus [menentukan principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html) dalam kebijakan berbasis sumber daya. Prinsipal dapat mencakup akun, pengguna, peran, pengguna federasi, atau. Layanan AWS

Untuk mengaktifkan akses lintas akun, Anda dapat menentukan secara spesifik seluruh akun atau entitas IAM di akun lain sebagai principal dalam kebijakan berbasis sumber daya. 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*.

## Tindakan kebijakan untuk Aurora
<a name="security_iam_service-with-iam-id-based-policies-actions"></a>

**Mendukung tindakan kebijakan:** Ya.

Administrator dapat menggunakan kebijakan AWS JSON untuk menentukan siapa yang memiliki akses ke apa. Yaitu, di mana **utama** dapat melakukan **tindakan** pada **sumber daya**, dan dalam **kondisi apa**.

Elemen `Action` dari kebijakan JSON menjelaskan tindakan yang dapat Anda gunakan untuk mengizinkan atau menolak akses dalam sebuah kebijakan. Menyertakan tindakan dalam suatu kebijakan untuk memberikan izin melakukan operasi terkait.

Tindakan kebijakan di Aurora menggunakan awalan berikut sebelum tindakan: `rds:`. Misalnya, untuk memberikan izin kepada seseorang untuk menjelaskan instans DB dengan operasi API `DescribeDBInstances` Amazon RDS, Anda menyertakan tindakan `rds:DescribeDBInstances` dalam kebijakan mereka. Pernyataan kebijakan harus memuat elemen `Action` atau `NotAction`. Aurora menentukan serangkaian tindakannya sendiri yang menjelaskan tugas yang dapat Anda lakukan dengan layanan ini.

Untuk menentukan beberapa tindakan dalam satu pernyataan, pisahkan tindakan dengan koma seperti berikut:

```
"Action": [
      "rds:action1",
      "rds:action2"
```

Anda juga dapat menentukan beberapa tindakan menggunakan wildcard (\$1). Misalnya, untuk menentukan semua tindakan yang dimulai dengan kata `Describe`, sertakan tindakan berikut.

```
"Action": "rds:Describe*"
```



Untuk melihat daftar tindakan Aurora, lihat [Tindakan yang Ditentukan oleh Amazon RDS](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonrds.html#amazonrds-actions-as-permissions) di *Referensi Otorisasi Layanan*.

## Sumber daya kebijakan untuk Aurora
<a name="security_iam_service-with-iam-id-based-policies-resources"></a>

**Mendukung sumber daya kebijakan:** Ya.

Administrator dapat menggunakan kebijakan AWS JSON untuk menentukan siapa yang memiliki akses ke apa. Yaitu, di mana **utama** dapat melakukan **tindakan** pada **sumber daya**, dan dalam **kondisi apa**.

Elemen kebijakan JSON `Resource` menentukan objek yang menjadi target penerapan tindakan. Praktik terbaiknya, tentukan sumber daya menggunakan [Amazon Resource Name (ARN)](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html). Untuk tindakan yang tidak mendukung izin di tingkat sumber daya, gunakan wildcard (\$1) untuk menunjukkan bahwa pernyataan tersebut berlaku untuk semua sumber daya.

```
"Resource": "*"
```

Sumber daya instans DB memiliki Amazon Resource Name (ARN) berikut.

```
arn:${Partition}:rds:${Region}:${Account}:{ResourceType}/${Resource}
```

Untuk informasi selengkapnya tentang format ARNs, lihat [Amazon Resource Names (ARNs) dan ruang nama AWS layanan](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html).

Misalnya, untuk menentukan instans DB `dbtest` dalam pernyataan Anda, gunakan ARN berikut.

```
"Resource": "arn:aws:rds:us-west-2:123456789012:db:dbtest"
```

Untuk menentukan semua instans DB milik akun tertentu, gunakan wildcard (\$1).

```
"Resource": "arn:aws:rds:us-east-1:123456789012:db:*"
```

Beberapa operasi API RDS, seperti operasi untuk membuat sumber daya, tidak dapat dilakukan pada sumber daya tertentu. Jika demikian, gunakan wildcard (\$1).

```
"Resource": "*"
```

Banyak operasi API Amazon RDS menggunakan beberapa sumber daya. Misalnya, `CreateDBInstance` membuat instans DB. Anda dapat menentukan bahwa seorang pengguna harus menggunakan grup keamanan dan grup parameter spesifik saat membuat instans DB. Untuk menentukan beberapa sumber daya dalam satu pernyataan, pisahkan ARNs dengan koma. 

```
"Resource": [
      "resource1",
      "resource2"
```

*Untuk melihat daftar jenis sumber daya Aurora beserta ARNs jenisnya, [lihat Sumber Daya yang Ditentukan oleh Amazon](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonrds.html#amazonrds-resources-for-iam-policies) RDS di Referensi Otorisasi Layanan.* Untuk mempelajari jenis tindakan yang dapat Anda tentukan dengan ARN di tiap sumber daya, lihat [Tindakan yang Ditentukan oleh Amazon RDS](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonrds.html#amazonrds-actions-as-permissions).

## Kunci kondisi kebijakan untuk Aurora
<a name="UsingWithRDS.IAM.Conditions"></a>

**Mendukung kunci kondisi kebijakan khusus layanan: Ya**.

Administrator dapat menggunakan kebijakan AWS JSON untuk menentukan siapa yang memiliki akses ke apa. Yaitu, **principal** dapat melakukan **tindakan** pada suatu **sumber daya**, dan dalam suatu **syarat**.

Elemen `Condition` menentukan ketika pernyataan dieksekusi berdasarkan kriteria yang ditetapkan. Anda dapat membuat ekspresi bersyarat yang menggunakan [operator kondisi](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html), misalnya sama dengan atau kurang dari, untuk mencocokkan kondisi dalam kebijakan dengan nilai-nilai yang diminta. Untuk melihat semua kunci kondisi AWS global, lihat [kunci konteks kondisi AWS global](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) di *Panduan Pengguna IAM*.

Aurora menentukan set kunci kondisinya sendiri dan juga mendukung penggunaan beberapa kunci kondisi global. Untuk melihat semua kunci kondisi AWS global, lihat [kunci konteks kondisi AWS global](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) di *Panduan Pengguna IAM*.



 Semua operasi API RDS mendukung kunci kondisi `aws:RequestedRegion`. 

Untuk melihat daftar kunci kondisi Aurora, lihat [Kunci Kondisi untuk Amazon RDS](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonrds.html#amazonrds-policy-keys) di *Referensi Otorisasi Layanan*. Untuk mempelajari tindakan dan sumber daya yang dapat Anda gunakan dengan kunci kondisi, lihat [Tindakan yang Ditentukan oleh Amazon RDS](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonrds.html#amazonrds-actions-as-permissions).

## Daftar kontrol akses (ACLs) di
<a name="security_iam_service-with-iam-acls"></a>

**Mendukung daftar kontrol akses (ACLs):** Tidak

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.

## Kontrol akses berbasis atribut (ABAC) dalam kebijakan dengan tag Aurora
<a name="security_iam_service-with-iam-tags"></a>

**Mendukung tag kontrol akses berbasis atribut (ABAC) dalam** kebijakan: Ya

Kontrol akses berbasis atribut (ABAC) adalah strategi otorisasi yang menentukan izin berdasarkan atribut tanda. Anda dapat melampirkan tag ke entitas dan AWS sumber daya IAM, lalu merancang kebijakan ABAC untuk mengizinkan operasi saat tag prinsipal cocok dengan tag pada sumber daya.

Untuk mengendalikan akses berdasarkan tanda, berikan informasi tentang tanda di [elemen kondisi](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html) dari kebijakan menggunakan kunci kondisi `aws:ResourceTag/key-name`, `aws:RequestTag/key-name`, atau `aws:TagKeys`.

Jika sebuah layanan mendukung ketiga kunci kondisi untuk setiap jenis sumber daya, nilainya adalah **Ya** untuk layanan tersebut. Jika suatu layanan mendukung ketiga kunci kondisi untuk hanya beberapa jenis sumber daya, nilainya adalah **Parsial**.

Untuk informasi selengkapnya tentang ABAC, lihat [Tentukan izin dengan otorisasi ABAC](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html) dalam *Panduan Pengguna IAM.* Untuk melihat tutorial terkait langkah-langkah penyiapan ABAC, lihat [Menggunakan kontrol akses berbasis atribut (ABAC)](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_attribute-based-access-control.html) di *Panduan Pengguna IAM*.

Untuk informasi selengkapnya cara memberi tag ke sumber daya Aurora, lihat [Menentukan kondisi: Menggunakan tag kustom](UsingWithRDS.IAM.SpecifyingCustomTags.md). Untuk melihat contoh kebijakan berbasis identitas untuk membatasi akses ke sumber daya berdasarkan tag pada sumber daya tersebut, lihat [Berikan izin untuk tindakan atas suatu sumber daya dengan tag tertentu dengan dua nilai yang berbeda](security_iam_id-based-policy-examples-create-and-modify-examples.md#security_iam_id-based-policy-examples-grant-permissions-tags).

## Menggunakan kredensial sementara dengan Aurora
<a name="security_iam_service-with-iam-roles-tempcreds"></a>

**Mendukung kredensi sementara: Ya**.

Kredensi sementara menyediakan akses jangka pendek ke AWS sumber daya dan secara otomatis dibuat saat Anda menggunakan federasi atau beralih peran. AWS merekomendasikan agar Anda secara dinamis menghasilkan kredensi sementara alih-alih menggunakan kunci akses jangka panjang. Untuk informasi selengkapnya, lihat [Kredensial keamanan sementara di IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html) dan [Layanan AWS yang berfungsi dengan IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html) dalam *Panduan Pengguna IAM*.

## Teruskan sesi akses untuk
<a name="security_iam_service-with-iam-principal-permissions"></a>

**Mendukung sesi akses maju:** Ya.

 Sesi akses teruskan (FAS) menggunakan izin dari pemanggilan utama Layanan AWS, dikombinasikan dengan permintaan Layanan AWS untuk membuat permintaan ke layanan hilir. Untuk detail kebijakan saat membuat permintaan FAS, lihat [Meneruskan sesi akses](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_forward_access_sessions.html). 

## Peran layanan untuk Aurora
<a name="security_iam_service-with-iam-roles-service"></a>

**Mendukung peran layanan:** Ya.

 Peran layanan adalah [peran IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) yang diambil oleh sebuah layanan untuk melakukan tindakan atas nama Anda. Administrator IAM dapat membuat, mengubah, dan menghapus peran layanan dari dalam IAM. Untuk informasi selengkapnya, lihat [Buat sebuah peran untuk mendelegasikan izin ke Layanan AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) dalam *Panduan pengguna IAM*. 

**Awas**  
Mengubah izin untuk peran layanan dapat mengganggu fungsionalitas Aurora. Edit peran layanan hanya jika Aurora menyediakan panduan untuk melakukannya.

## Peran terkait layanan untuk Aurora
<a name="security_iam_service-with-iam-roles-service-linked"></a>

**Mendukung peran terkait layanan: Ya**.

 Peran terkait layanan adalah jenis peran layanan yang ditautkan ke. Layanan AWS Layanan tersebut dapat menjalankan peran untuk melakukan tindakan atas nama Anda. Peran terkait layanan muncul di Anda Akun AWS dan dimiliki oleh layanan. Administrator IAM dapat melihat, tetapi tidak dapat mengedit izin untuk peran terkait layanan. 

Untuk detail tentang cara menggunakan peran terkait layanan Aurora, lihat [Menggunakan peran terkait layanan untuk Amazon Aurora](UsingWithRDS.IAM.ServiceLinkedRoles.md).

# Contoh kebijakan berbasis identitas untuk Amazon Aurora
<a name="security_iam_id-based-policy-examples"></a>

Secara default, peran dan kumpulan izin tidak memiliki izin untuk membuat atau mengubah sumber daya Aurora. Mereka juga tidak dapat melakukan tugas menggunakan Konsol Manajemen AWS, AWS CLI, atau AWS API. Administrator harus membuat kebijakan IAM yang memberikan izin kepada peran atau kumpulan izin untuk menjalankan operasi API tertentu pada sumber daya tertentu yang diperlukan. Administrator kemudian dapat melampirkan kebijakan tersebut ke peran atau kumpulan izin yang memerlukan izin tersebut.

Untuk mempelajari cara membuat kebijakan berbasis identitas IAM menggunakan contoh dokumen kebijakan JSON ini, lihat [Membuat kebijakan pada tab JSON](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-json-editor) dalam *Panduan Pengguna IAM*.

**Topics**
+ [

## Praktik terbaik kebijakan
](#security_iam_service-with-iam-policy-best-practices)
+ [

## Menggunakan konsol Aurora
](#security_iam_id-based-policy-examples-console)
+ [

## Izin yang diperlukan untuk menggunakan konsol
](#UsingWithRDS.IAM.RequiredPermissions.Console)
+ [

## Mengizinkan pengguna melihat izin mereka sendiri
](#security_iam_id-based-policy-examples-view-own-permissions)
+ [

# 
](security_iam_id-based-policy-examples-create-and-modify-examples.md)
+ [

# Contoh Kebijakan: Menggunakan kunci kondisi
](UsingWithRDS.IAM.Conditions.Examples.md)
+ [

# Menentukan kondisi: Menggunakan tag kustom
](UsingWithRDS.IAM.SpecifyingCustomTags.md)
+ [

# Berikan izin untuk menandai sumber daya Aurora selama pembuatan
](security_iam_id-based-policy-examples-grant-permissions-tags-on-create.md)

## Praktik terbaik kebijakan
<a name="security_iam_service-with-iam-policy-best-practices"></a>

Kebijakan berbasis identitas menentukan apakah seseorang dapat membuat, mengakses, atau menghapus sumber daya Amazon RDS yang ada di akun Anda. Tindakan ini dikenai biaya untuk Akun AWS Anda. Ketika Anda membuat atau mengedit kebijakan berbasis identitas, ikuti panduan dan rekomendasi ini:
+ **Mulailah dengan kebijakan AWS terkelola dan beralih ke izin hak istimewa paling sedikit — Untuk mulai memberikan izin** kepada pengguna dan beban kerja Anda, gunakan *kebijakan AWS terkelola* yang memberikan izin untuk banyak kasus penggunaan umum. Mereka tersedia di Anda Akun AWS. Kami menyarankan Anda mengurangi izin lebih lanjut dengan menentukan kebijakan yang dikelola AWS pelanggan yang khusus untuk kasus penggunaan Anda. Untuk informasi selengkapnya, lihat [Kebijakan yang dikelola AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) atau [Kebijakan yang dikelola AWS untuk fungsi tugas](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html) dalam *Panduan Pengguna IAM*.
+ **Menerapkan izin dengan hak akses paling rendah** – Ketika Anda menetapkan izin dengan kebijakan IAM, hanya berikan izin yang diperlukan untuk melakukan tugas. Anda melakukannya dengan mendefinisikan tindakan yang dapat diambil pada sumber daya tertentu dalam kondisi tertentu, yang juga dikenal sebagai *izin dengan hak akses paling rendah*. Untuk informasi selengkapnya tentang cara menggunakan IAM untuk mengajukan izin, lihat [Kebijakan dan izin dalam IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html) dalam *Panduan Pengguna IAM*.
+ **Gunakan kondisi dalam kebijakan IAM untuk membatasi akses lebih lanjut** – Anda dapat menambahkan suatu kondisi ke kebijakan Anda untuk membatasi akses ke tindakan dan sumber daya. Sebagai contoh, Anda dapat menulis kondisi kebijakan untuk menentukan bahwa semua permintaan harus dikirim menggunakan SSL. Anda juga dapat menggunakan ketentuan untuk memberikan akses ke tindakan layanan jika digunakan melalui yang spesifik Layanan AWS, seperti CloudFormation. Untuk informasi selengkapnya, lihat [Elemen kebijakan JSON IAM: Kondisi](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html) dalam *Panduan Pengguna IAM*.
+ **Gunakan IAM Access Analyzer untuk memvalidasi kebijakan IAM Anda untuk memastikan izin yang aman dan fungsional** – IAM Access Analyzer memvalidasi kebijakan baru dan yang sudah ada sehingga kebijakan tersebut mematuhi bahasa kebijakan IAM (JSON) dan praktik terbaik IAM. IAM Access Analyzer menyediakan lebih dari 100 pemeriksaan kebijakan dan rekomendasi yang dapat ditindaklanjuti untuk membantu Anda membuat kebijakan yang aman dan fungsional. Untuk informasi selengkapnya, lihat [Validasi kebijakan dengan IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html) dalam *Panduan Pengguna IAM*.
+ **Memerlukan otentikasi multi-faktor (MFA)** - Jika Anda memiliki skenario yang mengharuskan pengguna IAM atau pengguna root di Anda, Akun AWS aktifkan MFA untuk keamanan tambahan. Untuk meminta MFA ketika operasi API dipanggil, tambahkan kondisi MFA pada kebijakan Anda. Untuk informasi selengkapnya, lihat [Amankan akses API dengan MFA](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html) dalam *Panduan Pengguna IAM*.

Untuk informasi selengkapnya tentang praktik terbaik dalam IAM, lihat [Praktik terbaik keamanan di IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) dalam *Panduan Pengguna IAM*.

## Menggunakan konsol Aurora
<a name="security_iam_id-based-policy-examples-console"></a>

Untuk mengakses konsol Amazon Aurora, Anda harus memiliki kumpulan izin minimum. Izin ini harus memungkinkan Anda untuk membuat daftar dan melihat detail tentang sumber daya Amazon Aurora di Anda. Akun AWS Jika Anda membuat kebijakan berbasis identitas yang lebih ketat daripada izin minimum yang diperlukan, konsol tidak akan berfungsi sebagaimana mestinya untuk entitas (pengguna atau peran) dengan kebijakan tersebut.

Anda tidak perlu mengizinkan izin konsol minimum untuk pengguna yang melakukan panggilan hanya ke AWS CLI atau AWS API. Sebagai alternatif, hanya izinkan akses ke tindakan yang cocok dengan operasi API yang sedang Anda coba lakukan.

Untuk memastikan bahwa entitas tersebut masih dapat menggunakan konsol Aurora, lampirkan juga kebijakan terkelola AWS berikut ke entitas.

```
AmazonRDSReadOnlyAccess
```

Untuk informasi selengkapnya, lihat [Menambah izin untuk pengguna](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console) dalam *Panduan Pengguna IAM*.

## Izin yang diperlukan untuk menggunakan konsol
<a name="UsingWithRDS.IAM.RequiredPermissions.Console"></a>

Agar pengguna dapat bekerja dengan konsol, pengguna tersebut harus memiliki kumpulan izin minimum. Izin ini memungkinkan pengguna untuk mendeskripsikan sumber daya Amazon Aurora untuk akun AWS mereka dan untuk memberikan informasi terkait lainnya, termasuk keamanan Amazon EC2 dan informasi jaringan.

Jika Anda membuat kebijakan IAM yang lebih ketat daripada izin minimum yang diperlukan, konsol tidak akan berfungsi sebagaimana mestinya untuk pengguna dengan kebijakan IAM. Untuk memastikan bahwa pengguna masih dapat menggunakan konsol, lampirkan juga kebijakan yang dikelola `AmazonRDSReadOnlyAccess` kepada pengguna, sebagaimana dijelaskan dalam [Mengelola akses menggunakan kebijakan](UsingWithRDS.IAM.md#security_iam_access-manage).

Anda tidak perlu memperbolehkan izin konsol minimum bagi pengguna yang hanya melakukan panggilan ke AWS CLI atau Amazon RDS API. 

Kebijakan berikut memberikan akses penuh ke semua sumber daya Amazon Aurora untuk akun root: AWS 

```
AmazonRDSFullAccess             
```

## Mengizinkan pengguna melihat izin mereka sendiri
<a name="security_iam_id-based-policy-examples-view-own-permissions"></a>

Contoh ini menunjukkan cara membuat kebijakan yang mengizinkan pengguna IAM melihat kebijakan inline dan terkelola yang dilampirkan ke identitas pengguna mereka. Kebijakan ini mencakup izin untuk menyelesaikan tindakan ini di konsol atau menggunakan API atau secara terprogram. AWS CLI AWS 

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ViewOwnUserInfo",
            "Effect": "Allow",
            "Action": [
                "iam:GetUserPolicy",
                "iam:ListGroupsForUser",
                "iam:ListAttachedUserPolicies",
                "iam:ListUserPolicies",
                "iam:GetUser"
            ],
            "Resource": ["arn:aws:iam::*:user/${aws:username}"]
        },
        {
            "Sid": "NavigateInConsole",
            "Effect": "Allow",
            "Action": [
                "iam:GetGroupPolicy",
                "iam:GetPolicyVersion",
                "iam:GetPolicy",
                "iam:ListAttachedGroupPolicies",
                "iam:ListGroupPolicies",
                "iam:ListPolicyVersions",
                "iam:ListPolicies",
                "iam:ListUsers"
            ],
            "Resource": "*"
        }
    ]
}
```

# 
<a name="security_iam_id-based-policy-examples-create-and-modify-examples"></a>

Bagian berikut menyajikan contoh kebijakan izin yang memberikan dan membatasi akses ke sumber daya:

## Izinkan pengguna untuk membuat instans DB di akun AWS
<a name="security_iam_id-based-policy-examples-create-db-instance-in-account"></a>

Berikut ini adalah contoh kebijakan yang memungkinkan akun dengan ID `123456789012` untuk membuat instans DB untuk AWS akun Anda. Kebijakan ini mewajibkan nama instans DB baru dimulai dengan `test`. Instans DB yang baru juga harus menggunakan mesin basis data MySQL dan kelas instans DB `db.t2.micro`. Selain itu, instans DB baru harus menggunakan grup opsi dan grup parameter DB yang dimulai dengan `default`, dan harus menggunakan grup subnet `default`.

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Sid": "AllowCreateDBInstanceOnly",
         "Effect": "Allow",
         "Action": [
            "rds:CreateDBInstance"
         ],
         "Resource": [
            "arn:aws:rds:*:123456789012:db:test*",
            "arn:aws:rds:*:123456789012:og:default*",
            "arn:aws:rds:*:123456789012:pg:default*",
            "arn:aws:rds:*:123456789012:subgrp:default"
         ],
         "Condition": {
            "StringEquals": {
               "rds:DatabaseEngine": "mysql",
               "rds:DatabaseClass": "db.t2.micro"
            }
         }
      }
   ]
}
```

------

Kebijakan ini mencakup pernyataan tunggal yang menentukan izin berikut untuk pengguna:
+ Kebijakan ini memungkinkan akun untuk membuat instans DB menggunakan operasi [Create DBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html) API (ini juga berlaku untuk [create-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html) AWS CLI perintah dan Konsol Manajemen AWS).
+ Elemen `Resource` menentukan bahwa pengguna dapat melakukan tindakan pada atau dengan sumber daya. Anda menentukan sumber daya menggunakan Amazon Resource Name (ARN). ARN ini mencakup nama layanan yang dimiliki sumber daya (`rds`), AWS Wilayah (`*`menunjukkan wilayah mana pun dalam contoh ini), nomor AWS akun (`123456789012`adalah nomor akun dalam contoh ini), dan jenis sumber daya. Untuk informasi selengkapnya tentang membuat ARNs, lihat[Nama Sumber Daya Amazon (ARNs) di Amazon RDS](USER_Tagging.ARN.md).

  Elemen `Resource` dalam contoh menentukan batasan kebijakan berikut pada sumber daya untuk pengguna:
  + ID instans DB untuk instans DB baru harus dimulai dengan `test` (misalnya, `testCustomerData1`, `test-region2-data`).
  + Grup opsi untuk instans DB baru harus dimulai dengan `default`.
  + Grup parameter DB opsi untuk instans DB baru harus dimulai dengan `default`.
  + Grup subnet untuk instans DB baru harus berupa grup subnet `default`.
+ Elemen `Condition` menentukan bahwa mesin DB harus berupa MySQL dan kelas instans DB harus berupa `db.t2.micro`. Elemen `Condition` menentukan kondisi ketika kebijakan harus diberlakukan. Anda dapat menambahkan izin atau batasan tambahan dengan menggunakan elemen `Condition`. Untuk informasi selengkapnya tentang cara menentukan kondisi, lihat [Kunci kondisi kebijakan untuk Aurora](security_iam_service-with-iam.md#UsingWithRDS.IAM.Conditions). Contoh ini menetapkan kondisi `rds:DatabaseEngine` dan `rds:DatabaseClass`. Untuk informasi tentang nilai kondisi yang valid untuk`rds:DatabaseEngine`, lihat daftar di bawah `Engine` parameter di [Buat DBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html). Untuk informasi tentang nilai kondisi yang valid untuk `rds:DatabaseClass`, Lihat [Mesin DB yang didukung untuk kelas instans DB](Concepts.DBInstanceClass.SupportAurora.md). 

Kebijakan ini tidak menentukan elemen `Principal` karena dalam kebijakan berbasis identitas, Anda tidak menentukan pengguna utama yang mendapatkan izin. Saat Anda menyematkan kebijakan kepada pengguna, pengguna ini menjadi pengguna utama implisit. Saat Anda menyematkan kebijakan izin pada peran IAM, pengguna utama yang diidentifikasi dalam kebijakan kepercayaan peran tersebut akan mendapatkan izin.

Untuk melihat daftar tindakan Aurora, lihat [Tindakan yang Ditentukan oleh Amazon RDS](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonrds.html#amazonrds-actions-as-permissions) di *Referensi Otorisasi Layanan*.

## Mengizinkan pengguna melakukan setiap tindakan yang dijelaskan pada sumber daya RDS
<a name="IAMPolicyExamples-RDS-perform-describe-action"></a>

Kebijakan izin berikut memberikan izin kepada pengguna untuk menjalankan semua tindakan yang dimulai dengan `Describe`. Tindakan ini menunjukkan informasi tentang sumber daya RDS, seperti instans DB. Karakter wildcard (\$1) dalam elemen `Resource` menunjukkan bahwa tindakan diperbolehkan untuk semua sumber daya Amazon Aurora yang dimiliki akun tersebut. 

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Sid": "AllowRDSDescribe",
         "Effect": "Allow",
         "Action": "rds:Describe*",
         "Resource": "*"
      }
   ]
}
```

------

## Mengizinkan pengguna membuat instans DB yang menggunakan grup parameter DB dan grup subnet yang telah ditentukan
<a name="security_iam_id-based-policy-examples-create-db-instance-specified-groups"></a>

Kebijakan izin berikut memberikan izin untuk hanya memperbolehkan pengguna membuat instans DB yang harus menggunakan grup parameter DB `mydbpg` dan grup subnet DB `mydbsubnetgroup`. 

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Sid": "VisualEditor0",
         "Effect": "Allow",
         "Action": "rds:CreateDBInstance",
         "Resource": [
            "arn:aws:rds:*:*:pg:mydbpg",
            "arn:aws:rds:*:*:subgrp:mydbsubnetgroup"
         ]
      }
   ]
}
```

------

## Berikan izin untuk tindakan atas suatu sumber daya dengan tag tertentu dengan dua nilai yang berbeda
<a name="security_iam_id-based-policy-examples-grant-permissions-tags"></a>

Anda dapat menggunakan kondisi dalam kebijakan berbasis identitas untuk mengontrol akses ke sumber daya Aurora berdasarkan tag. Kebijakan berikut memungkinkan izin untuk melakukan operasi `CreateDBSnapshot` API pada instans DB dengan tag `stage` diatur ke `development` atau `test`.

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"AllowAnySnapshotName",
         "Effect":"Allow",
         "Action":[
            "rds:CreateDBSnapshot"
         ],
         "Resource":"arn:aws:rds:*:123456789012:snapshot:*"
      },
      {
         "Sid":"AllowDevTestToCreateSnapshot",
         "Effect":"Allow",
         "Action":[
            "rds:CreateDBSnapshot"
         ],
         "Resource":"arn:aws:rds:*:123456789012:db:*",
         "Condition":{
            "StringEquals":{
                "rds:db-tag/stage":[
                  "development",
                  "test"
               ]
            }
         }
      }
   ]
}
```

------

Kebijakan berikut memungkinkan izin untuk melakukan operasi `ModifyDBInstance` API pada instans DB dengan tag `stage` diatur ke `development` atau `test`.

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"AllowChangingParameterOptionSecurityGroups",
         "Effect":"Allow",
         "Action":[
            "rds:ModifyDBInstance"
         ],
         "Resource": [
            "arn:aws:rds:*:123456789012:pg:*",
            "arn:aws:rds:*:123456789012:secgrp:*",
            "arn:aws:rds:*:123456789012:og:*"
         ]
      },
      {
         "Sid":"AllowDevTestToModifyInstance",
         "Effect":"Allow",
         "Action":[
            "rds:ModifyDBInstance"
         ],
         "Resource":"arn:aws:rds:*:123456789012:db:*",
         "Condition":{
            "StringEquals":{
                "rds:db-tag/stage":[
                  "development",
                  "test"
               ]
            }
         }
      }
   ]
}
```

------

## Mencegah pengguna menghapus instans DB
<a name="IAMPolicyExamples-RDS-prevent-db-deletion"></a>

Kebijakan izin berikut memberikan izin untuk mencegah pengguna menghapus instans DB tertentu. Misalnya, Anda mungkin ingin menolak kemampuan untuk menghapus instans DB produksi Anda kepada setiap pengguna yang bukan administrator.

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Sid": "DenyDelete1",
         "Effect": "Deny",
         "Action": "rds:DeleteDBInstance",
         "Resource": "arn:aws:rds:us-west-2:123456789012:db:my-mysql-instance"
      }
   ]
}
```

------

## Menolak semua akses ke sumber daya
<a name="IAMPolicyExamples-RDS-deny-all-access"></a>

Anda juga dapat secara eksplisit menolak akses ke sumber daya. Kebijakan penolakan lebih diutamakan daripada kebijakan yang diizinkan. Kebijakan berikut secara eksplisit menolak kemampuan pengguna untuk mengelola sumber daya:

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Effect": "Deny",
         "Action": "rds:*",
         "Resource": "arn:aws:rds:us-east-1:123456789012:db:mydb"
      }
   ]
}
```

------

# Contoh Kebijakan: Menggunakan kunci kondisi
<a name="UsingWithRDS.IAM.Conditions.Examples"></a>

Berikut ini adalah contoh cara menggunakan kunci kondisi dalam kebijakan izin IAM Amazon Aurora. 

## Contoh 1: Memberikan izin untuk membuat instans DB yang menggunakan mesin DB spesifik dan tidak berupa Multi-AZ
<a name="w2aac73c48c33c21b5"></a>

Kebijakan berikut menggunakan kunci kondisi RDS dan memungkinkan pengguna membuat instans DB yang menggunakan mesin basis data MySQL saja dan tidak menggunakan MultiAZ. Elemen `Condition` menunjukkan persyaratan bahwa mesin basis data adalah MySQL. 

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Sid": "AllowMySQLCreate",
         "Effect": "Allow",
         "Action": "rds:CreateDBInstance",
         "Resource": "*",
         "Condition": {
            "StringEquals": {
               "rds:DatabaseEngine": "mysql"
            },
            "Bool": {
               "rds:MultiAz": false
            }
         }
      }
   ]
}
```

------

## Contoh 2: Secara eksplisit menolak izin untuk membuat instans DB untuk kelas instans DB tertentu dan membuat instans DB yang menggunakan IOPS yang Tersedia
<a name="w2aac73c48c33c21b7"></a>

Kebijakan berikut secara eksplisit menolak izin untuk membuat instans DB yang menggunakan kelas instans DB `r3.8xlarge` dan `m4.10xlarge`, yang merupakan kelas instans DB terbesar dan termahal. Kebijakan ini juga mencegah pengguna membuat instans DB yang menggunakan IOPS yang Tersedia, yang menimbulkan biaya tambahan. 

Izin yang secara tegas menolak lebih diprioritaskan daripada izin lain yang diberikan. Ini memastikan bahwa identitas tidak akan secara kebetulan mendapatkan izin yang tidak pernah ingin Anda berikan.

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Sid": "DenyLargeCreate",
         "Effect": "Deny",
         "Action": "rds:CreateDBInstance",
         "Resource": "*",
         "Condition": {
            "StringEquals": {
               "rds:DatabaseClass": [
                  "db.r3.8xlarge",
                  "db.m4.10xlarge"
               ]
            }
         }
      },
      {
         "Sid": "DenyPIOPSCreate",
         "Effect": "Deny",
         "Action": "rds:CreateDBInstance",
         "Resource": "*",
         "Condition": {
            "NumericNotEquals": {
               "rds:Piops": "0"
            }
         }
      }
   ]
}
```

------

## Contoh 3: Membatasi kumpulan kunci dan nilai tag yang dapat digunakan untuk menandai sumber daya
<a name="w2aac73c48c33c21b9"></a>

Kebijakan berikut menggunakan kunci kondisi RDS dan memungkinkan penambahan tag dengan kunci `stage` untuk ditambahkan ke sumber daya dengan nilai `test`, `qa`, dan `production`.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowTagEdits",
      "Effect": "Allow",
      "Action": [
        "rds:AddTagsToResource",
        "rds:RemoveTagsFromResource"
      ],
      "Resource": "arn:aws:rds:us-east-1:123456789012:db:db-123456",
      "Condition": {
        "StringEquals": {
          "rds:req-tag/stage": [
            "test",
            "qa",
            "production"
          ]
        }
      }
    }
  ]
}
```

------

# Menentukan kondisi: Menggunakan tag kustom
<a name="UsingWithRDS.IAM.SpecifyingCustomTags"></a>

Amazon Aurora mendukung penentuan kondisi dalam kebijakan IAM menggunakan tag kustom.

Sebagai contoh, misalkan Anda menambahkan tag bernama `environment` ke instans DB Anda dengan nilai seperti `beta`, `staging`, `production`, dan sebagainya. Jika melakukannya, Anda dapat membuat kebijakan yang membatasi pengguna tertentu pada instans DB berdasarkan nilai tag `environment`.

**catatan**  
ID tag kustom bersifat peka huruf besar-kecil.

Tabel berikut mencantumkan ID tag RDS yang dapat digunakan pada elemen `Condition`. 

<a name="rds-iam-condition-tag-reference"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.IAM.SpecifyingCustomTags.html)

Sintaks untuk kondisi tag kustom adalah sebagai berikut:

`"Condition":{"StringEquals":{"rds:rds-tag-identifier/tag-name": ["value"]} }` 

Misalnya, elemen `Condition` berikut berlaku untuk instans DB dengan tag bernama `environment` dan nilai tag `production`. 

` "Condition":{"StringEquals":{"rds:db-tag/environment": ["production"]} } ` 

Untuk informasi tentang membuat tag, lihat [Menandai sumber daya Amazon Aurora dan Amazon RDS](USER_Tagging.md).

**penting**  
Jika Anda mengelola akses ke sumber daya RDS Anda menggunakan pemberian tag, sebaiknya Anda mengamankan akses ke tag untuk sumber daya RDS Anda. Anda dapat mengelola akses ke tag dengan membuat kebijakan untuk tindakan `AddTagsToResource` dan `RemoveTagsFromResource`. Misalnya, kebijakan berikut menolak kemampuan pengguna untuk menambahkan atau menghapus tag untuk semua sumber daya. Anda kemudian dapat membuat kebijakan untuk mengizinkan pengguna tertentu menambahkan atau menghapus tag.   

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"DenyTagUpdates",
         "Effect":"Deny",
         "Action":[
            "rds:AddTagsToResource",
            "rds:RemoveTagsFromResource"
         ],
         "Resource":"*"
      }
   ]
}
```

Untuk melihat daftar tindakan Aurora, lihat [Tindakan yang Ditentukan oleh Amazon RDS](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonrds.html#amazonrds-actions-as-permissions) di *Referensi Otorisasi Layanan*.

## Contoh kebijakan: Menggunakan tag kustom
<a name="UsingWithRDS.IAM.Conditions.Tags.Examples"></a>

Contoh berikut menunjukkan cara menggunakan tag kustom dalam kebijakan izin IAM Amazon Aurora. Untuk informasi lebih lanjut tentang cara menambahkan tag ke sumber daya Amazon Aurora, lihat [Nama Sumber Daya Amazon (ARNs) di Amazon RDS](USER_Tagging.ARN.md). 

**catatan**  
Semua contoh menggunakan wilayah us-west-2 dan berisi akun fiktif. IDs

### Contoh 1: Memberikan izin untuk tindakan pada sumber daya dengan tag tertentu dengan dua nilai yang berbeda
<a name="w2aac73c48c33c23c29b6"></a>

Kebijakan berikut memungkinkan izin untuk melakukan operasi `CreateDBSnapshot` API pada instans DB dengan tag `stage` diatur ke `development` atau `test`.

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"AllowAnySnapshotName",
         "Effect":"Allow",
         "Action":[
            "rds:CreateDBSnapshot"
         ],
         "Resource":"arn:aws:rds:*:123456789012:snapshot:*"
      },
      {
         "Sid":"AllowDevTestToCreateSnapshot",
         "Effect":"Allow",
         "Action":[
            "rds:CreateDBSnapshot"
         ],
         "Resource":"arn:aws:rds:*:123456789012:db:*",
         "Condition":{
            "StringEquals":{
                "rds:db-tag/stage":[
                  "development",
                  "test"
               ]
            }
         }
      }
   ]
}
```

------

Kebijakan berikut memungkinkan izin untuk melakukan operasi `ModifyDBInstance` API pada instans DB dengan tag `stage` diatur ke `development` atau `test`.

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"AllowChangingParameterOptionSecurityGroups",
         "Effect":"Allow",
         "Action":[
            "rds:ModifyDBInstance"
            ],
          "Resource": [
            "arn:aws:rds:*:123456789012:pg:*",
            "arn:aws:rds:*:123456789012:secgrp:*",
            "arn:aws:rds:*:123456789012:og:*"
            ]
       },
       {
         "Sid":"AllowDevTestToModifyInstance",
         "Effect":"Allow",
         "Action":[
            "rds:ModifyDBInstance"
            ],
         "Resource":"arn:aws:rds:*:123456789012:db:*",
         "Condition":{
            "StringEquals":{
               "rds:db-tag/stage":[
                  "development",
                  "test"
                  ]
               }
            }
       }
    ]
}
```

------

### Contoh 2: Secara eksplisit menolak izin untuk membuat instans DB yang menggunakan grup parameter DB yang ditentukan
<a name="w2aac73c48c33c23c29b8"></a>

Kebijakan berikut secara eksplisit menolak izin untuk membuat instans DB yang menggunakan grup parameter DB dengan nilai tag spesifik. Anda dapat menerapkan kebijakan ini jika Anda mengharuskan grup parameter DB yang dibuat pengguna tertentu selalu digunakan saat membuat instans DB. Kebijakan yang menggunakan `Deny` paling sering digunakan untuk membatasi akses yang diberikan oleh kebijakan yang lebih luas.

Izin yang secara tegas menolak lebih diprioritaskan daripada izin lain yang diberikan. Ini memastikan bahwa identitas tidak akan secara kebetulan mendapatkan izin yang tidak pernah ingin Anda berikan.

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"DenyProductionCreate",
         "Effect":"Deny",
         "Action":"rds:CreateDBInstance",
         "Resource":"arn:aws:rds:*:123456789012:pg:*",
         "Condition":{
            "StringEquals":{
               "rds:pg-tag/usage":"prod"
            }
         }
      }
   ]
}
```

------

### Contoh 3: Memberikan izin untuk tindakan pada instans DB dengan nama instans yang diawali dengan nama pengguna
<a name="w2aac73c48c33c23c29c10"></a>

Kebijakan berikut memungkinkan izin untuk memanggil API apa pun (kecuali untuk `AddTagsToResource` atau `RemoveTagsFromResource`) pada instans DB yang memiliki nama instans DB yang diawali dengan nama pengguna dan memiliki tag bernama `stage` yang sama dengan `devo` atau yang tidak memiliki tag bernama `stage`.

Baris `Resource` dalam kebijakan mengidentifikasi sumber daya berdasarkan Amazon Resource Name (ARN). Untuk informasi selengkapnya tentang penggunaan ARNs dengan sumber daya Amazon Aurora, lihat. [Nama Sumber Daya Amazon (ARNs) di Amazon RDS](USER_Tagging.ARN.md) 

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"AllowFullDevAccessNoTags",
         "Effect":"Allow",
         "NotAction":[
            "rds:AddTagsToResource",
            "rds:RemoveTagsFromResource"
         ],
         "Resource":"arn:aws:rds:*:123456789012:db:${aws:username}*",
         "Condition":{
            "StringEqualsIfExists":{
               "rds:db-tag/stage":"devo"
            }
         }
      }
   ]
}
```

------

# Berikan izin untuk menandai sumber daya Aurora selama pembuatan
<a name="security_iam_id-based-policy-examples-grant-permissions-tags-on-create"></a>

Beberapa operasi API RDS memungkinkan Anda menentukan tag saat membuat sumber daya. Anda dapat menggunakan tanda sumber daya untuk menerapkan pengendalian berbasis atribut (ABAC). Untuk informasi lebih lanjut, lihat [Untuk apa ABAC? AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html) dan [Mengontrol akses ke AWS sumber daya menggunakan tag](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html).

Untuk memungkinkan pengguna menandai sumber daya pada pembuatan, mereka harus memiliki izin untuk menggunakan tindakan yang membuat sumber daya, seperti . Jika tag ditentukan dalam tindakan buat, RDS melakukan otorisasi tambahan pada `rds:AddTagsToResource` tindakan untuk memverifikasi apakah pengguna memiliki izin untuk membuat tag. Oleh karena itu, para pengguna juga harus memiliki izin eksplisit untuk menggunakan tindakan `rds:AddTagsToResource`.

Dalam definisi kebijakan IAM untuk `rds:AddTagsToResource` tindakan, Anda dapat menggunakan kunci `aws:RequestTag` kondisi untuk mewajibkan tag dalam permintaan untuk menandai sumber daya.

Misalnya, kebijakan berikut memungkinkan pengguna untuk membuat instance DB dan menerapkan tag selama pembuatan instans DB, tetapi hanya dengan kunci tag tertentu (`environment`atau`project`):

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
       {
           "Effect": "Allow",
           "Action": [
               "rds:CreateDBInstance"
           ],
           "Resource": "*"
       },
       {
           "Effect": "Allow",
           "Action": [
               "rds:AddTagsToResource"
           ],
           "Resource": "*",
           "Condition": {
               "StringEquals": {
                   "aws:RequestTag/environment": ["production", "development"],
                   "aws:RequestTag/project": ["dataanalytics", "webapp"]
               },
               "ForAllValues:StringEquals": {
                   "aws:TagKeys": ["environment", "project"]
               }
           }
       }
   ]
}
```

------

Kebijakan ini menolak permintaan instans create DB yang menyertakan tag selain `project` tag `environment` atau, atau yang tidak menentukan salah satu tag ini. Selain itu, pengguna harus menentukan nilai untuk tag yang cocok dengan nilai yang diizinkan dalam kebijakan.

Kebijakan berikut memungkinkan pengguna untuk membuat cluster DB dan menerapkan tag apa pun selama pembuatan kecuali `environment=prod` tag:

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
       {
           "Effect": "Allow",
           "Action": [
               "rds:CreateDBCluster"
           ],
           "Resource": "*"
       },
       {
           "Effect": "Allow",
           "Action": [
               "rds:AddTagsToResource"
           ],
           "Resource": "*",
           "Condition": {
               "StringNotEquals": {
                   "aws:RequestTag/environment": "prod"
               }
           }
       }
   ]
}
```

------

## Tindakan API RDS yang didukung untuk menandai pada pembuatan
<a name="security_iam_id-based-policy-examples-supported-rds-api-actions-tagging-creation"></a>

Tindakan API RDS berikut mendukung penandaan saat Anda membuat sumber daya. Untuk tindakan ini, Anda dapat menentukan tag saat membuat sumber daya:
+ `CreateBlueGreenDeployment`
+ `CreateCustomDBEngineVersion`
+ `CreateDBCluster`
+ `CreateDBClusterEndpoint`
+ `CreateDBClusterParameterGroup`
+ `CreateDBClusterSnapshot`
+ `CreateDBInstance`
+ `CreateDBInstanceReadReplica`
+ `CreateDBParameterGroup`
+ `CreateDBProxy`
+ `CreateDBProxyEndpoint`
+ `CreateDBSecurityGroup`
+ `CreateDBShardGroup`
+ `CreateDBSnapshot`
+ `CreateDBSubnetGroup`
+ `CreateEventSubscription`
+ `CreateGlobalCluster`
+ `CreateIntegration`
+ `CreateOptionGroup`
+ `CreateTenantDatabase`
+ `CopyDBClusterParameterGroup`
+ `CopyDBClusterSnapshot`
+ `CopyDBParameterGroup`
+ `CopyDBSnapshot`
+ `CopyOptionGroup`
+ `RestoreDBClusterFromS3`
+ `RestoreDBClusterFromSnapshot`
+ `RestoreDBClusterToPointInTime`
+ `RestoreDBInstanceFromDBSnapshot`
+ `RestoreDBInstanceFromS3`
+ `RestoreDBInstanceToPointInTime`
+ `PurchaseReservedDBInstancesOffering`

Jika Anda menggunakan API AWS CLI atau untuk membuat sumber daya dengan tag, `Tags` parameter tersebut digunakan untuk menerapkan tag ke sumber daya selama pembuatan.

Untuk tindakan API ini, jika penandaan gagal, sumber daya tidak dibuat, dan permintaan gagal dengan kesalahan. Ini memastikan bahwa sumber daya dibuat dengan tag atau tidak dibuat sama sekali, mencegah sumber daya dibuat tanpa tag yang dimaksudkan.

# AWS kebijakan terkelola untuk Amazon RDS
<a name="rds-security-iam-awsmanpol"></a>

Untuk menambahkan izin ke set dan peran izin, lebih mudah menggunakan kebijakan AWS terkelola daripada menulis kebijakan sendiri. Dibutuhkan waktu dan keahlian untuk [membuat kebijakan yang dikelola pelanggan IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html) yang hanya memberi tim Anda izin yang mereka butuhkan. Untuk memulai dengan cepat, Anda dapat menggunakan kebijakan AWS terkelola kami. Kebijakan ini mencakup kasus penggunaan umum dan tersedia di Akun AWS Anda. Untuk informasi selengkapnya tentang kebijakan AWS [AWS terkelola, lihat kebijakan terkelola](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) di *Panduan Pengguna IAM*.

Layanan AWS memelihara dan memperbarui kebijakan AWS terkelola. Anda tidak dapat mengubah izin dalam kebijakan AWS terkelola. Layanan terkadang menambahkan izin tambahan ke kebijakan AWS terkelola untuk mendukung fitur baru. Jenis pembaruan ini akan memengaruhi semua identitas (pengguna, grup, dan peran) di mana kebijakan tersebut dilampirkan. Layanan kemungkinan besar akan memperbarui kebijakan AWS terkelola saat fitur baru diluncurkan atau saat operasi baru tersedia. Layanan tidak menghapus izin dari kebijakan AWS terkelola, sehingga pembaruan kebijakan tidak merusak izin yang ada.

Selain itu, AWS mendukung kebijakan terkelola untuk fungsi pekerjaan yang mencakup beberapa layanan. Misalnya, kebijakan `ReadOnlyAccess` AWS terkelola menyediakan akses hanya-baca ke semua Layanan AWS dan sumber daya. Saat layanan meluncurkan fitur baru, AWS tambahkan izin hanya-baca untuk operasi dan sumber daya baru. Untuk melihat daftar dan deskripsi dari kebijakan fungsi tugas, lihat [kebijakan yang dikelola AWS untuk fungsi tugas](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html) di *Panduan Pengguna IAM*.

**Topics**
+ [

## AWS kebijakan terkelola: Amazon RDSRead OnlyAccess
](#rds-security-iam-awsmanpol-AmazonRDSReadOnlyAccess)
+ [

## AWS kebijakan terkelola: RDSFull Akses Amazon
](#rds-security-iam-awsmanpol-AmazonRDSFullAccess)
+ [

## AWS kebijakan terkelola: Amazon RDSData FullAccess
](#rds-security-iam-awsmanpol-AmazonRDSDataFullAccess)
+ [

## AWS kebijakan terkelola: Amazon RDSEnhanced MonitoringRole
](#rds-security-iam-awsmanpol-AmazonRDSEnhancedMonitoringRole)
+ [

## AWS kebijakan terkelola: Amazon RDSPerformance InsightsReadOnly
](#rds-security-iam-awsmanpol-AmazonRDSPerformanceInsightsReadOnly)
+ [

## AWS kebijakan terkelola: Amazon RDSPerformance InsightsFullAccess
](#rds-security-iam-awsmanpol-AmazonRDSPerformanceInsightsFullAccess)
+ [

## AWS kebijakan terkelola: Amazon RDSDirectory ServiceAccess
](#rds-security-iam-awsmanpol-AmazonRDSDirectoryServiceAccess)
+ [

## AWS kebijakan terkelola: Amazon RDSService RolePolicy
](#rds-security-iam-awsmanpol-AmazonRDSServiceRolePolicy)
+ [

## AWS kebijakan terkelola: Amazon RDSPreview ServiceRolePolicy
](#rds-security-iam-awsmanpol-AmazonRDSPreviewServiceRolePolicy)
+ [

## AWS kebijakan terkelola: Amazon RDSBeta ServiceRolePolicy
](#rds-security-iam-awsmanpol-AmazonRDSBetaServiceRolePolicy)

## AWS kebijakan terkelola: Amazon RDSRead OnlyAccess
<a name="rds-security-iam-awsmanpol-AmazonRDSReadOnlyAccess"></a>

Kebijakan ini memungkinkan akses hanya-baca ke Amazon RDS melalui. Konsol Manajemen AWS

**Detail izin**

Kebijakan ini mencakup izin berikut:
+ `rds` – Mengizinkan pengguna utama mendeskripsikan sumber daya Amazon RDS dan mencantumkan tag untuk sumber daya Amazon RDS.
+ `cloudwatch`— Memungkinkan kepala sekolah untuk mendapatkan statistik metrik Amazon CloudWatch .
+ `ec2` – Mengizinkan pengguna utama mendeskripsikan Zona Ketersediaan dan sumber daya jaringan.
+ `logs`— Memungkinkan prinsipal untuk menggambarkan aliran CloudWatch log Log dari grup log, dan mendapatkan CloudWatch peristiwa log Log.
+ `devops-guru`— Memungkinkan prinsipal untuk mendeskripsikan sumber daya yang memiliki cakupan Amazon DevOps Guru, yang ditentukan baik oleh nama CloudFormation tumpukan atau tag sumber daya.

Untuk informasi selengkapnya tentang kebijakan ini, termasuk dokumen kebijakan JSON, lihat [Amazon RDSRead OnlyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonRDSReadOnlyAccess.html) di *Panduan Referensi Kebijakan AWS Terkelola*.

## AWS kebijakan terkelola: RDSFull Akses Amazon
<a name="rds-security-iam-awsmanpol-AmazonRDSFullAccess"></a>

Kebijakan ini menyediakan akses penuh ke Amazon RDS melalui. Konsol Manajemen AWS

**Detail izin**

Kebijakan ini mencakup izin berikut:
+ `rds` – Mengizinkan pengguna utama memiliki akses penuh ke Amazon RDS.
+ `application-autoscaling` – Mengizinkan pengguna utama mendeskripsikan dan mengelola target dan kebijakan penskalaan Application Auto Scaling.
+ `cloudwatch`— Memungkinkan kepala sekolah mendapatkan statika CloudWatch metrik dan mengelola alarm. CloudWatch 
+ `ec2` – Mengizinkan pengguna utama mendeskripsikan Zona Ketersediaan dan sumber daya jaringan.
+ `logs`— Memungkinkan prinsipal untuk menggambarkan aliran CloudWatch log Log dari grup log, dan mendapatkan CloudWatch peristiwa log Log.
+ `outposts`— Memungkinkan prinsipal untuk mendapatkan AWS Outposts jenis instance.
+ `pi` – Mengizinkan pengguna utama untuk mendapatkan metrik Wawasan Performa.
+ `sns` – Mengizinkan pengguna utama untuk menggunakan langganan dan topik Amazon Simple Notification Service (Amazon SNS), dan menerbitkan pesan Amazon SNS.
+ `devops-guru`— Memungkinkan prinsipal untuk mendeskripsikan sumber daya yang memiliki cakupan Amazon DevOps Guru, yang ditentukan baik oleh nama CloudFormation tumpukan atau tag sumber daya.

Untuk informasi selengkapnya tentang kebijakan ini, termasuk dokumen kebijakan JSON, lihat [Amazon RDSFull Access](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonRDSFullAccess.html) di *Panduan Referensi Kebijakan AWS Terkelola*.

## AWS kebijakan terkelola: Amazon RDSData FullAccess
<a name="rds-security-iam-awsmanpol-AmazonRDSDataFullAccess"></a>

Kebijakan ini memungkinkan akses penuh untuk menggunakan Data API dan editor kueri pada Aurora Serverless cluster tertentu Akun AWS. Kebijakan ini memungkinkan Akun AWS untuk mendapatkan nilai rahasia dari AWS Secrets Manager. 

Anda dapat melampirkan kebijakan `AmazonRDSDataFullAccess` ke identitas IAM Anda.

**Detail izin**

Kebijakan ini mencakup izin berikut:
+ `dbqms` – Mengizinkan pengguna utama mengakses, menghapus, mendeskripsikan, dan memperbarui kueri. Layanan Metadata Kueri Basis Data (`dbqms`) adalah layanan khusus internal. Ini memberikan kueri terbaru dan tersimpan Anda untuk editor kueri di Konsol Manajemen AWS untuk beberapa Layanan AWS, termasuk Amazon RDS.
+ `rds-data` – Mengizinkan pengguna utama untuk menjalankan pernyataan SQL pada basis data Aurora Serverless.
+ `secretsmanager`— Memungkinkan kepala sekolah untuk mendapatkan nilai rahasia dari. AWS Secrets Manager

Untuk informasi selengkapnya tentang kebijakan ini, termasuk dokumen kebijakan JSON, lihat [Amazon RDSData FullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonRDSDataFullAccess.html) di *Panduan Referensi Kebijakan AWS Terkelola*.

## AWS kebijakan terkelola: Amazon RDSEnhanced MonitoringRole
<a name="rds-security-iam-awsmanpol-AmazonRDSEnhancedMonitoringRole"></a>

Kebijakan ini menyediakan akses ke Amazon CloudWatch Logs untuk Amazon RDS Enhanced Monitoring.

**Detail izin**

Kebijakan ini mencakup izin berikut:
+ `logs`— Memungkinkan prinsipal untuk membuat grup CloudWatch log Log dan kebijakan retensi, dan untuk membuat dan mendeskripsikan aliran CloudWatch log log dari grup log. Ini juga memungkinkan kepala sekolah untuk menempatkan dan mendapatkan peristiwa CloudWatch log Log.

Untuk informasi selengkapnya tentang kebijakan ini, termasuk dokumen kebijakan JSON, lihat [Amazon RDSEnhanced MonitoringRole](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonRDSEnhancedMonitoringRole.html) di *Panduan Referensi Kebijakan AWS Terkelola*.

## AWS kebijakan terkelola: Amazon RDSPerformance InsightsReadOnly
<a name="rds-security-iam-awsmanpol-AmazonRDSPerformanceInsightsReadOnly"></a>

Kebijakan ini menyediakan akses hanya-baca ke Wawasan Performa Amazon RDS untuk instans DB Amazon RDS dan klaster DB Amazon Aurora.

Kebijakan ini kini mencakup `Sid` (ID pernyataan) sebagai pengidentifikasi pernyataan kebijakan. 

**Detail izin**

Kebijakan ini mencakup izin berikut:
+ `rds` – Mengizinkan pengguna utama mendeskripsikan instans DB Amazon RDS dan klaster DB Amazon Aurora.
+ `pi` – Mengizinkan pengguna utama melakukan panggilan ke API Wawasan Performa Amazon RDS dan mengakses metrik Wawasan Performa.

Untuk informasi selengkapnya tentang kebijakan ini, termasuk dokumen kebijakan JSON, lihat [Amazon RDSPerformance InsightsReadOnly](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonRDSPerformanceInsightsReadOnly.html) di *Panduan Referensi Kebijakan AWS Terkelola*.

## AWS kebijakan terkelola: Amazon RDSPerformance InsightsFullAccess
<a name="rds-security-iam-awsmanpol-AmazonRDSPerformanceInsightsFullAccess"></a>

Kebijakan ini menyediakan akses penuh ke Wawasan Performa Amazon RDS untuk instans DB Amazon RDS dan klaster DB Amazon Aurora.

Kebijakan ini kini mencakup `Sid` (ID pernyataan) sebagai pengidentifikasi pernyataan kebijakan. 

**Detail izin**

Kebijakan ini mencakup izin berikut:
+ `rds` – Mengizinkan pengguna utama mendeskripsikan instans DB Amazon RDS dan klaster DB Amazon Aurora.
+ `pi` – Mengizinkan pengguna utama melakukan panggilan ke API Wawasan Performa Amazon RDS, serta membuat, melihat, dan menghapus laporan analisis performa.
+ `cloudwatch`— Memungkinkan kepala sekolah untuk membuat daftar semua metrik Amazon, dan mendapatkan CloudWatch data metrik dan statistik.

Untuk informasi selengkapnya tentang kebijakan ini, termasuk dokumen kebijakan JSON, lihat [Amazon RDSPerformance InsightsFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonRDSPerformanceInsightsFullAccess.html) di *Panduan Referensi Kebijakan AWS Terkelola*.

## AWS kebijakan terkelola: Amazon RDSDirectory ServiceAccess
<a name="rds-security-iam-awsmanpol-AmazonRDSDirectoryServiceAccess"></a>

Kebijakan ini mengizinkan Amazon RDS untuk melakukan panggilan ke Directory Service.

**Detail izin**

Kebijakan ini mencakup izin berikut:
+ `ds`— Memungkinkan kepala sekolah untuk mendeskripsikan Directory Service direktori dan mengontrol otorisasi ke direktori. Directory Service 

Untuk informasi selengkapnya tentang kebijakan ini, termasuk dokumen kebijakan JSON, lihat [Amazon RDSDirectory ServiceAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonRDSDirectoryServiceAccess.html) di *Panduan Referensi Kebijakan AWS Terkelola*.

## AWS kebijakan terkelola: Amazon RDSService RolePolicy
<a name="rds-security-iam-awsmanpol-AmazonRDSServiceRolePolicy"></a>

Anda tidak dapat melampirkan kebijakan `AmazonRDSServiceRolePolicy` ke entitas IAM Anda. Kebijakan ini dilampirkan ke peran tertaut layanan yang memungkinkan Amazon RDS melakukan tindakan atas nama Anda. Untuk informasi selengkapnya, lihat [Izin peran terkait layanan untuk Amazon Aurora](UsingWithRDS.IAM.ServiceLinkedRoles.md#service-linked-role-permissions).

## AWS kebijakan terkelola: Amazon RDSPreview ServiceRolePolicy
<a name="rds-security-iam-awsmanpol-AmazonRDSPreviewServiceRolePolicy"></a>

Anda tidak harus melampirkan `AmazonRDSPreviewServiceRolePolicy` ke entitas IAM Anda. Kebijakan ini dilampirkan ke peran terkait layanan yang memungkinkan Amazon RDS memanggil AWS layanan atas nama sumber daya RDS DB Anda. Untuk informasi selengkapnya, lihat [Peran terkait layanan untuk Amazon RDS Preview](UsingWithRDS.IAM.ServiceLinkedRoles.md#slr-permissions-rdspreview). 

**Detail izin**

Kebijakan ini mencakup izin berikut:
+ `ec2`- Memungkinkan kepala sekolah untuk menggambarkan Availability Zone dan sumber daya jaringan.
+ `secretsmanager`— Memungkinkan kepala sekolah untuk mendapatkan nilai rahasia dari. AWS Secrets Manager
+ `cloudwatch`, `logs` - Memungkinkan Amazon RDS mengunggah metrik dan log instans DB CloudWatch melalui CloudWatch agen.

Untuk informasi selengkapnya tentang kebijakan ini, termasuk dokumen kebijakan JSON, lihat [Amazon RDSPreview ServiceRolePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonRDSPreviewServiceRolePolicy.html) di *Panduan Referensi Kebijakan AWS Terkelola*.

## AWS kebijakan terkelola: Amazon RDSBeta ServiceRolePolicy
<a name="rds-security-iam-awsmanpol-AmazonRDSBetaServiceRolePolicy"></a>

Anda tidak harus melampirkan `AmazonRDSBetaServiceRolePolicy` ke entitas IAM Anda. Kebijakan ini dilampirkan ke peran terkait layanan yang memungkinkan Amazon RDS memanggil AWS layanan atas nama sumber daya RDS DB Anda. Untuk informasi selengkapnya, lihat [Izin peran terkait layanan untuk Amazon RDS Beta](UsingWithRDS.IAM.ServiceLinkedRoles.md#slr-permissions-rdsbeta).

**Detail izin**

Kebijakan ini mencakup izin berikut:
+ `ec2`- Memungkinkan Amazon RDS melakukan operasi pencadangan pada instans DB yang menyediakan kemampuan point-in-time pemulihan.
+ `secretsmanager`- Memungkinkan Amazon RDS mengelola rahasia spesifik instans DB yang dibuat oleh Amazon RDS.
+ `cloudwatch`, `logs` - Memungkinkan Amazon RDS mengunggah metrik dan log instans DB CloudWatch melalui CloudWatch agen.

Untuk informasi selengkapnya tentang kebijakan ini, termasuk dokumen kebijakan JSON, lihat [Amazon RDSBeta ServiceRolePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonRDSBetaServiceRolePolicy.html) di *Panduan Referensi Kebijakan AWS Terkelola*.

# Amazon RDS memperbarui kebijakan AWS terkelola
<a name="rds-manpol-updates"></a>

Lihat detail tentang pembaruan kebijakan AWS terkelola untuk Amazon RDS sejak layanan ini mulai melacak perubahan ini. Untuk peringatan otomatis tentang perubahan pada halaman ini, berlangganan di umpan RSS di halaman [Riwayat dokumen](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/WhatsNew.html) Amazon RDS.




| Perubahan | Deskripsi | Tanggal | 
| --- | --- | --- | 
| [AWS kebijakan terkelola: Amazon RDSPreview ServiceRolePolicy](rds-security-iam-awsmanpol.md#rds-security-iam-awsmanpol-AmazonRDSPreviewServiceRolePolicy) – Pembaruan ke kebijakan yang sudah ada |  Amazon RDS menghapus `sns:Publish` izin `AmazonRDSPreviewServiceRolePolicy` dari peran `AWSServiceRoleForRDSPreview` terkait layanan. Untuk informasi selengkapnya, lihat [AWS kebijakan terkelola: Amazon RDSPreview ServiceRolePolicy](rds-security-iam-awsmanpol.md#rds-security-iam-awsmanpol-AmazonRDSPreviewServiceRolePolicy). | Agustus 7, 2024 | 
| [AWS kebijakan terkelola: Amazon RDSBeta ServiceRolePolicy](rds-security-iam-awsmanpol.md#rds-security-iam-awsmanpol-AmazonRDSBetaServiceRolePolicy) – Pembaruan ke kebijakan yang sudah ada |  Amazon RDS menghapus `sns:Publish` izin `AmazonRDSBetaServiceRolePolicy` dari peran `AWSServiceRoleForRDSBeta` terkait layanan. Untuk informasi selengkapnya, lihat [AWS kebijakan terkelola: Amazon RDSBeta ServiceRolePolicy](rds-security-iam-awsmanpol.md#rds-security-iam-awsmanpol-AmazonRDSBetaServiceRolePolicy).  | Agustus 7, 2024 | 
| [AWS kebijakan terkelola: Amazon RDSService RolePolicy](rds-security-iam-awsmanpol.md#rds-security-iam-awsmanpol-AmazonRDSServiceRolePolicy) – Pembaruan ke kebijakan yang sudah ada |  Amazon RDS menghapus `sns:Publish` izin `AmazonRDSServiceRolePolicy` dari peran ` AWSServiceRoleForRDS` terkait layanan. Untuk informasi selengkapnya, lihat [AWS kebijakan terkelola: Amazon RDSService RolePolicy](rds-security-iam-awsmanpol.md#rds-security-iam-awsmanpol-AmazonRDSServiceRolePolicy).  | Juli 2, 2024 | 
| [AWS kebijakan terkelola untuk Amazon RDS](rds-security-iam-awsmanpol.md) – Pembaruan ke kebijakan yang sudah ada |  Amazon RDS menambahkan izin baru ke peran `AWSServiceRoleForRDSCustom` terkait layanan untuk memungkinkan RDS Custom for SQL Server memodifikasi jenis instans host database yang mendasarinya. `AmazonRDSCustomServiceRolePolicy` RDS juga menambahkan `ec2:DescribeInstanceTypes` izin untuk mendapatkan informasi tipe instance untuk host database. Untuk informasi selengkapnya, lihat [AWS kebijakan terkelola untuk Amazon RDS](rds-security-iam-awsmanpol.md).  | April 8, 2024 | 
|  [AWS kebijakan terkelola untuk Amazon RDS](rds-security-iam-awsmanpol.md) – Kebijakan baru  | Amazon RDS menambahkan kebijakan terkelola baru yang diberi nama AmazonRDSCustomInstanceProfileRolePolicy untuk memungkinkan RDS Custom melakukan tindakan otomatisasi dan tugas manajemen database melalui profil EC2 instans. Untuk informasi selengkapnya, lihat [AWS kebijakan terkelola untuk Amazon RDS](rds-security-iam-awsmanpol.md). | Februari 27, 2024 | 
|  [Izin peran terkait layanan untuk Amazon Aurora](UsingWithRDS.IAM.ServiceLinkedRoles.md#service-linked-role-permissions) – Pembaruan ke kebijakan yang ada | Amazon RDS menambahkan pernyataan baru IDs ke `AmazonRDSServiceRolePolicy` peran `AWSServiceRoleForRDS` terkait layanan. Untuk informasi selengkapnya, lihat [Izin peran terkait layanan untuk Amazon Aurora](UsingWithRDS.IAM.ServiceLinkedRoles.md#service-linked-role-permissions).  |  Januari 19, 2024  | 
|  [AWS kebijakan terkelola untuk Amazon RDS](rds-security-iam-awsmanpol.md) – Pembaruan ke kebijakan yang ada  |  Kebijakan yang dikelola `AmazonRDSPerformanceInsightsReadOnly` dan `AmazonRDSPerformanceInsightsFullAccess` kini menyertakan `Sid` (ID pernyataan) sebagai ID dalam pernyataan kebijakan.  Untuk informasi selengkapnya, lihat [AWS kebijakan terkelola: Amazon RDSPerformance InsightsReadOnly](rds-security-iam-awsmanpol.md#rds-security-iam-awsmanpol-AmazonRDSPerformanceInsightsReadOnly) dan [AWS kebijakan terkelola: Amazon RDSPerformance InsightsFullAccess](rds-security-iam-awsmanpol.md#rds-security-iam-awsmanpol-AmazonRDSPerformanceInsightsFullAccess)   |  23 Oktober 2023  | 
|  [AWS kebijakan terkelola untuk Amazon RDS](rds-security-iam-awsmanpol.md) – Pembaruan ke kebijakan yang sudah ada  |  Amazon RDS menambahkan izin baru ke kebijakan yang dikelola `AmazonRDSFullAccess`. Kebijakan ini memungkinkan Anda membuat, melihat, dan menghapus laporan analisis performa selama periode tertentu. Untuk informasi selengkapnya tentang cara mengonfigurasi kebijakan akses untuk Wawasan Performa, lihat [Mengonfigurasi kebijakan akses untuk Wawasan Performa](USER_PerfInsights.access-control.md)  |  17 Agustus 2023  | 
|  [AWS kebijakan terkelola untuk Amazon RDS](rds-security-iam-awsmanpol.md) – Kebijakan baru dan pembaruan ke kebijakan yang ada  |  Amazon RDS menambahkan izin baru ke kebijakan yang dikelola `AmazonRDSPerformanceInsightsReadOnly` dan kebijakan terkelola baru bernama `AmazonRDSPerformanceInsightsFullAccess`. Izin ini memungkinkan Anda menganalisis Wawasan Performa selama periode tertentu, melihat hasil analisis beserta rekomendasinya, dan menghapus laporan. Untuk informasi selengkapnya tentang cara mengonfigurasi kebijakan akses untuk Wawasan Performa, lihat [Mengonfigurasi kebijakan akses untuk Wawasan Performa](USER_PerfInsights.access-control.md)  |  16 Agustus 2023  | 
|  [AWS kebijakan terkelola untuk Amazon RDS](rds-security-iam-awsmanpol.md) – Pembaruan ke kebijakan yang ada  |  Amazon RDS menambahkan CloudWatch namespace `ListMetrics` Amazon baru ke dan. `AmazonRDSFullAccess` `AmazonRDSReadOnlyAccess` Nama ruang ini diperlukan untuk Amazon RDS untuk mencantumkan metrik penggunaan sumber daya tertentu. Untuk informasi selengkapnya, lihat [Ringkasan mengelola izin akses ke CloudWatch sumber daya Anda](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/iam-access-control-overview-cw.html) di *Panduan CloudWatch Pengguna Amazon*.  |  4 April 2023  | 
|  [Izin peran terkait layanan untuk Amazon Aurora](UsingWithRDS.IAM.ServiceLinkedRoles.md#service-linked-role-permissions) – Pembaruan ke kebijakan yang ada  |  Amazon RDS menambahkan izin baru ke `AmazonRDSServiceRolePolicy` peran `AWSServiceRoleForRDS` terkait layanan untuk integrasi. AWS Secrets Manager RDS memerlukan integrasi dengan Secrets Manager untuk mengelola kata sandi pengguna utama di Secrets Manager. Rahasianya menggunakan konvensi penamaan yang dicadangkan dan membatasi pembaruan pelanggan. Untuk informasi selengkapnya, lihat [Manajemen kata sandi dengan dan AWS Secrets Manager](rds-secrets-manager.md).  |  22 Desember 2022  | 
|  [AWS kebijakan terkelola untuk Amazon RDS](rds-security-iam-awsmanpol.md) – Pembaruan ke kebijakan yang ada  |  Amazon RDS menambahkan izin baru ke `AmazonRDSFullAccess` dan kebijakan `AmazonRDSReadOnlyAccess` terkelola untuk memungkinkan Anda mengaktifkan Amazon DevOps Guru di konsol RDS. Izin ini diperlukan untuk memeriksa apakah DevOps Guru dihidupkan. Untuk informasi selengkapnya, lihat [Mengkonfigurasi kebijakan akses IAM untuk DevOps Guru untuk RDS](devops-guru-for-rds.md#devops-guru-for-rds.configuring.access).  |  19 Desember 2022  | 
|  [Izin peran terkait layanan untuk Amazon Aurora](UsingWithRDS.IAM.ServiceLinkedRoles.md#service-linked-role-permissions) – Pembaruan ke kebijakan yang ada  |  Amazon RDS menambahkan CloudWatch namespace Amazon baru ke for. `AmazonRDSPreviewServiceRolePolicy` `PutMetricData` Namespace ini mewajibkan Amazon RDS menerbitkan metrik penggunaan sumber daya. Untuk informasi selengkapnya, lihat [Menggunakan tombol kondisi untuk membatasi akses ke CloudWatch ruang nama](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/iam-cw-condition-keys-namespace.html) di * CloudWatch Panduan Pengguna Amazon*.  |  7 Juni 2022  | 
|  [Izin peran terkait layanan untuk Amazon Aurora](UsingWithRDS.IAM.ServiceLinkedRoles.md#service-linked-role-permissions) – Pembaruan ke kebijakan yang ada  |  Amazon RDS menambahkan CloudWatch namespace Amazon baru ke for. `AmazonRDSBetaServiceRolePolicy` `PutMetricData` Namespace ini mewajibkan Amazon RDS menerbitkan metrik penggunaan sumber daya. Untuk informasi selengkapnya, lihat [Menggunakan tombol kondisi untuk membatasi akses ke CloudWatch ruang nama](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/iam-cw-condition-keys-namespace.html) di * CloudWatch Panduan Pengguna Amazon*.  |  7 Juni 2022  | 
|  [Izin peran terkait layanan untuk Amazon Aurora](UsingWithRDS.IAM.ServiceLinkedRoles.md#service-linked-role-permissions) – Pembaruan ke kebijakan yang ada  |  Amazon RDS menambahkan CloudWatch namespace Amazon baru ke for. `AWSServiceRoleForRDS` `PutMetricData` Namespace ini mewajibkan Amazon RDS menerbitkan metrik penggunaan sumber daya. Untuk informasi selengkapnya, lihat [Menggunakan tombol kondisi untuk membatasi akses ke CloudWatch ruang nama](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/iam-cw-condition-keys-namespace.html) di * CloudWatch Panduan Pengguna Amazon*.  |  22 April 2022  | 
|  [AWS kebijakan terkelola untuk Amazon RDS](rds-security-iam-awsmanpol.md) – Kebijakan baru  |  Amazon RDS menambahkan kebijakan terkelola baru yang diberi nama `AmazonRDSPerformanceInsightsReadOnly` untuk mengizinkan Amazon RDS memanggil AWS layanan atas nama instans DB Anda. Untuk informasi selengkapnya tentang cara mengonfigurasi kebijakan akses untuk Wawasan Performa, lihat [Mengonfigurasi kebijakan akses untuk Wawasan Performa](USER_PerfInsights.access-control.md)  |  10 Maret 2022  | 
|  [Izin peran terkait layanan untuk Amazon Aurora](UsingWithRDS.IAM.ServiceLinkedRoles.md#service-linked-role-permissions) – Pembaruan ke kebijakan yang ada  |  Amazon RDS menambahkan CloudWatch ruang nama Amazon baru ke for. `AWSServiceRoleForRDS` `PutMetricData` Ruang nama ini diperlukan untuk Amazon DocumentDB (dengan kompatibilitas MongoDB) dan Amazon Neptune untuk menerbitkan metrik. CloudWatch  Untuk informasi selengkapnya, lihat [Menggunakan tombol kondisi untuk membatasi akses ke CloudWatch ruang nama](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/iam-cw-condition-keys-namespace.html) di * CloudWatch Panduan Pengguna Amazon*.  |  4 Maret 2022  | 
|  Amazon RDS memulai pelacakan perubahan  |  Amazon RDS mulai melacak perubahan untuk kebijakan yang AWS dikelola.  |  26 Oktober 2021  | 

# Pencegahan masalah confused deputy lintas layanan
<a name="cross-service-confused-deputy-prevention"></a>

*Masalah confused deputy* adalah masalah keamanan saat entitas yang tidak memiliki izin untuk melakukan suatu tindakan dapat memaksa entitas yang lebih berhak untuk melakukan tindakan tersebut. Pada tahunAWS, peniruan lintas layanan dapat mengakibatkan masalah wakil yang membingungkan. 

Peniruan identitas lintas layanan dapat terjadi ketika satu layanan (*layanan panggilan*) memanggil layanan lain (*layanan yang dipanggil*). Layanan panggilan dapat dimanipulasi agar menggunakan izinnya untuk bertindak pada sumber daya pelanggan lain dengan cara yang seharusnya tidak dilakukannya kecuali bila memiliki izin untuk mengakses. Untuk mencegah hal ini, AWS sediakan alat yang dapat membantu Anda melindungi data Anda untuk semua layanan dengan prinsip layanan yang telah diberikan akses ke sumber daya di akun Anda. Untuk informasi selengkapnya, lihat [Masalah confused deputy](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html) di *Panduan Pengguna IAM*.

Untuk membatasi izin yang diberikan Amazon RDS ke layanan lain untuk sumber daya tertentu, sebaiknya gunakan kunci konteks kondisi global [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) dan [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) di kebijakan sumber daya. 

Dalam beberapa kasus, nilai `aws:SourceArn` tidak berisi ID akun, misalnya saat Anda menggunakan Amazon Resource Name (ARN) untuk bucket Amazon S3. Dalam kasus ini, pastikan untuk menggunakan kedua kunci konteks kondisi global untuk membatasi izin. Dalam beberapa kasus, Anda menggunakan kunci konteks kondisi global dan nilai `aws:SourceArn` yang berisi ID akun. Dalam hal ini, pastikan bahwa nilai `aws:SourceAccount` dan akun dalam nilai `aws:SourceArn` menggunakan ID akun yang sama ketika digunakan dalam pernyataan yang sama. Jika Anda ingin hanya satu sumber daya yang akan dikaitkan dengan akses lintas layanan, gunakan `aws:SourceArn`. Jika Anda ingin mengizinkan sumber daya apa pun di AWS akun yang ditentukan dikaitkan dengan penggunaan lintas layanan, gunakan`aws:SourceAccount`.

Pastikan nilai `aws:SourceArn` adalah ARN untuk jenis sumber daya Amazon RDS. Untuk informasi selengkapnya, lihat [Nama Sumber Daya Amazon (ARNs) di Amazon RDS](USER_Tagging.ARN.md).

Cara paling efektif untuk melindungi dari masalah "confused deputy" adalah dengan menggunakan kunci konteks kondisi global `aws:SourceArn` dengan ARN lengkap sumber daya. Dalam beberapa kasus, Anda mungkin tidak mengetahui ARN lengkap sumber daya atau mungkin Anda menentukan beberapa sumber daya. Dalam hal ini, gunakan kunci kondisi konteks global `aws:SourceArn` dengan wildcard (`*`) untuk bagian ARN yang tidak diketahui. Contohnya adalah `arn:aws:rds:*:123456789012:*`. 

Contoh berikut menunjukkan cara Anda dapat menggunakan `aws:SourceArn` dan kunci konteks kondisi global `aws:SourceAccount` di Amazon RDS untuk mencegah masalah confused deputy.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Sid": "ConfusedDeputyPreventionExamplePolicy",
    "Effect": "Allow",
    "Principal": {
      "Service": "rds.amazonaws.com"
    },
    "Action": "sts:AssumeRole",
    "Condition": {
      "ArnLike": {
        "aws:SourceArn": "arn:aws:rds:us-east-1:123456789012:db:mydbinstance"
      },
      "StringEquals": {
        "aws:SourceAccount": "123456789012"
      }
    }
  }
}
```

------

Untuk contoh kebijakan lainnya yang menggunakan kunci konteks kondisi global `aws:SourceArn` dan `aws:SourceAccount`, lihat bagian berikut:
+ [Memberikan izin untuk menerbitkan pemberitahuan ke topik Amazon SNS](USER_Events.GrantingPermissions.md)
+ [Menyiapkan akses ke bucket Amazon S3](USER_PostgreSQL.S3Import.AccessPermission.md) (Impor PostgreSQL)
+ [Menyiapkan akses ke bucket Amazon S3](postgresql-s3-export-access-bucket.md) (Ekspor PostgreSQL)

# Autentikasi basis data IAM
<a name="UsingWithRDS.IAMDBAuth"></a>

Anda dapat mengautentikasi ke cluster DB Anda menggunakan otentikasi database AWS Identity and Access Management (IAM). Autentikasi basis data IAM berfungsi dengan Aurora MySQL, dan Aurora PostgreSQL. Dengan metode autentikasi ini, Anda tidak perlu menggunakan kata sandi saat menghubungkan dengan klaster basis data. Sebagai gantinya, gunakan token autentikasi.

*Token autentikasi* adalah string karakter unik yang dihasilkan Amazon Aurora sesuai permintaan. Token otentikasi dihasilkan menggunakan AWS Signature Version 4. Setiap token memiliki masa pakai 15 menit. Anda tidak perlu menyimpan kredensial pengguna di basis data karena autentikasi dikelola secara eksternal menggunakan IAM. Anda juga masih dapat menggunakan autentikasi basis data standar. Token hanya digunakan untuk autentikasi dan tidak memengaruhi sesi setelah dibuat.

Autentikasi basis data IAM memberikan manfaat berikut:
+ Lalu lintas jaringan ke dan dari basis data dienkripsi menggunakan Lapisan Soket Aman (SSL) atau Keamanan Lapisan Pengangkutan (TLS). Untuk informasi selengkapnya tentang penggunaan SSL/TLS Amazon Aurora, lihat. [Menggunakan SSL/TLS untuk mengenkripsi koneksi ke ](UsingWithRDS.SSL.md)
+ Anda dapat menggunakan IAM untuk mengelola akses ke sumber daya basis data Anda secara terpusat, bukan mengelola akses satu per satu pada setiap klaster DB.
+ Untuk aplikasi yang berjalan di Amazon EC2, Anda dapat menggunakan kredensial profil khusus untuk instans EC2 untuk mengakses basis data, bukan menggunakan kata sandi, untuk keamanan yang lebih baik.

Secara umum, pertimbangkan untuk menggunakan autentikasi basis data IAM ketika aplikasi Anda membuat kurang dari 200 koneksi per detik, dan Anda tidak ingin mengelola nama pengguna dan kata sandi secara langsung dalam kode aplikasi Anda.

Driver Amazon Web Services (AWS) JDBC mendukung autentikasi database IAM. Untuk informasi selengkapnya, lihat [Plugin Autentikasi AWS IAM di repositori](https://github.com/aws/aws-advanced-jdbc-wrapper/blob/main/docs/using-the-jdbc-driver/using-plugins/UsingTheIamAuthenticationPlugin.md) [Driver Amazon Web Services (AWS) JDBC](https://github.com/aws/aws-advanced-jdbc-wrapper). GitHub 

Driver Python Amazon Web Services (AWS) mendukung otentikasi database IAM. Untuk informasi selengkapnya, lihat [Plugin Autentikasi AWS IAM](https://github.com/aws/aws-advanced-python-wrapper/blob/main/docs/using-the-python-driver/using-plugins/UsingTheIamAuthenticationPlugin.md) di repositori [Amazon Web Services ()AWS Python](https://github.com/aws/aws-advanced-python-wrapper) Driver. GitHub

Arahkan topik berikut untuk mempelajari proses menyetel IAM untuk otentikasi DB:
+ [Mengaktifkan dan menonaktifkan autentikasi basis data IAM](UsingWithRDS.IAMDBAuth.Enabling.md)
+ [Membuat dan menggunakan kebijakan IAM untuk akses basis data IAM](UsingWithRDS.IAMDBAuth.IAMPolicy.md)
+ [Membuat akun basis data menggunakan autentikasi IAM](UsingWithRDS.IAMDBAuth.DBAccounts.md)
+ [Menghubungkan ke klaster DB menggunakan autentikasi IAM](UsingWithRDS.IAMDBAuth.Connecting.md) 

## Ketersediaan wilayah dan versi
<a name="UsingWithRDS.IAMDBAuth.Availability"></a>

 Ketersediaan fitur dan dukungan bervariasi di seluruh versi spesifik dari setiap mesin basis data Aurora, dan di seluruh Wilayah AWS. Untuk informasi selengkapnya tentang ketersediaan versi dan Wilayah dengan autentikasi basis data IAM dan Aurora, lihat [Daerah yang Didukung dan mesin Aurora DB untuk otentikasi database IAM](Concepts.Aurora_Fea_Regions_DB-eng.Feature.IAMdbauth.md). 

Untuk Aurora MySQL, semua kelas instans DB yang didukung mendukung autentikasi basis data IAM, kecuali untuk db.t2.small dan db.t3.small. Untuk informasi tentang kelas instans DB yang didukung, lihat [Mesin DB yang didukung untuk kelas instans DB](Concepts.DBInstanceClass.SupportAurora.md). 

## Dukungan CLI dan SDK
<a name="UsingWithRDS.IAMDBAuth.cli-sdk"></a>

Autentikasi database IAM tersedia untuk [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/rds/generate-db-auth-token.html)dan untuk bahasa khusus berikut: AWS SDKs
+ [AWS SDK untuk .NET](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/RDS/TRDSAuthTokenGenerator.html)
+ [AWS SDK untuk C\$1\$1](https://docs.aws.amazon.com/sdk-for-cpp/latest/api/class_aws_1_1_r_d_s_1_1_r_d_s_client.html#ae134ffffed5d7672f6156d324e7bd392)
+ [AWS SDK untuk Go](https://docs.aws.amazon.com/sdk-for-go/api/service/rds/#pkg-overview)
+ [AWS SDK untuk Java](https://docs.aws.amazon.com/sdk-for-java/latest/reference/software/amazon/awssdk/services/rds/RdsUtilities.html)
+ [AWS SDK untuk JavaScript](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_rds_signer.html)
+ [AWS SDK untuk PHP](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.Rds.AuthTokenGenerator.html)
+ [AWS SDK untuk Python (Boto3)](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/rds.html#RDS.Client.generate_db_auth_token)
+ [AWS SDK untuk Ruby](https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/RDS/AuthTokenGenerator.html)

## Batasan untuk autentikasi basis data IAM
<a name="UsingWithRDS.IAMDBAuth.Limitations"></a>

Saat menggunakan autentikasi basis data IAM, batasan berikut berlaku:
+ Saat ini, autentikasi basis data IAM tidak mendukung kunci konteks kondisi global.

  Untuk informasi selengkapnya tentang kunci konteks kondisi global, lihat [Kunci konteks kondisi global AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) dalam *Panduan Pengguna IAM*.
+ Untuk PostgreSQL, jika peran IAM (`rds_iam`) ditambahkan ke pengguna (termasuk pengguna master RDS), autentikasi IAM akan lebih diprioritaskan daripada autentikasi kata sandi, sehingga pengguna harus login sebagai pengguna IAM.
+ Anda tidak dapat menggunakan data DNS Route 53 kustom sebagai pengganti titik akhir klaster DB untuk menghasilkan token autentikasi.
+ CloudWatch dan CloudTrail jangan mencatat otentikasi IAM. Layanan ini tidak melacak panggilan `generate-db-auth-token` API yang mengotorisasi peran IAM untuk mengaktifkan koneksi database.
+  Anda harus memiliki antara 300 dan 1000 MiB memori tambahan pada database Anda untuk konektivitas yang andal. Untuk melihat memori yang dibutuhkan untuk beban kerja Anda, bandingkan kolom RES untuk proses RDS dalam daftar proses Enhanced Monitoring sebelum dan sesudah mengaktifkan autentikasi IAM DB. Lihat [Melihat metrik OS di konsol RDS](USER_Monitoring.OS.Viewing.md).

  Jika Anda menggunakan instance kelas burstable, hindari kehabisan memori dengan mengurangi memori yang digunakan oleh parameter lain seperti buffer dan cache dengan jumlah yang sama.
+ Untuk Aurora MySQL, Anda tidak dapat menggunakan otentikasi berbasis kata sandi untuk pengguna database yang Anda konfigurasikan dengan otentikasi IAM.
+ Autentikasi IAM DB tidak didukung untuk RDS di Outposts untuk mesin apa pun.

## Rekomendasi untuk autentikasi basis data IAM
<a name="UsingWithRDS.IAMDBAuth.ConnectionsPerSecond"></a>

Kami merekomendasikan hal berikut saat menggunakan autentikasi basis data IAM:
+ Gunakan autentikasi basis data IAM ketika aplikasi Anda membutuhkan tidak lebih dari 200 koneksi autentikasi basis data IAM per detik.

  Mesin basis data yang berfungsi dengan Amazon Aurora tidak memberlakukan batasan apa pun untuk percobaan autentikasi per detik. Namun, ketika Anda menggunakan autentikasi basis data IAM, aplikasi Anda harus membuat token autentikasi. Aplikasi Anda kemudian menggunakan token tersebut untuk terhubung ke klaster DB. Jika Anda melebihi batas maksimum untuk koneksi baru per detik, maka overhead tambahan dari autentikasi basis data IAM dapat menyebabkan throttling koneksi. 

  Pertimbangkan untuk menggunakan pooling koneksi di aplikasi Anda untuk mengurangi pembuatan koneksi yang konstan. Cara ini dapat mengurangi overhead dari autentikasi DB IAM dan memungkinkan aplikasi Anda menggunakan kembali koneksi yang ada. Alternatifnya, pertimbangkan untuk menggunakan Proksi RDS untuk kasus penggunaan ini. Proksi RDS memiliki biaya tambahan. Lihat [Harga Proksi RDS](https://aws.amazon.com/rds/proxy/pricing/).
+ Ukuran token autentikasi basis data IAM tergantung pada banyak hal termasuk jumlah tag IAM, kebijakan layanan IAM, panjang ARN, serta properti IAM dan basis data lainnya. Ukuran minimum token ini umumnya sekitar 1 KB tetapi bisa lebih besar. Karena token ini digunakan sebagai kata sandi dalam string koneksi ke database menggunakan otentikasi IAM, Anda harus memastikan bahwa driver database Anda (misalnya, ODBC) alat and/or apa pun tidak membatasi atau memotong token ini karena ukurannya. Token yang terpotong akan menyebabkan kegagalan validasi autentikasi oleh basis data dan IAM.
+ Jika Anda menggunakan kredensial sementara saat membuat token autentikasi basis data IAM, kredensial sementara masih harus valid saat menggunakan token autentikasi basis data IAM untuk membuat permintaan koneksi.

## Kunci konteks kondisi AWS global yang tidak didukung
<a name="UsingWithRDS.IAMDBAuth.GlobalContextKeys"></a>

 Autentikasi database IAM tidak mendukung subset kunci konteks kondisi AWS global berikut. 
+ `aws:Referer`
+ `aws:SourceIp`
+ `aws:SourceVpc`
+ `aws:SourceVpce`
+ `aws:UserAgent`
+ `aws:VpcSourceIp`

Untuk informasi selengkapnya, lihat [Kunci konteks kondisi global AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) dalam *Panduan Pengguna IAM*. 

# Mengaktifkan dan menonaktifkan autentikasi basis data IAM
<a name="UsingWithRDS.IAMDBAuth.Enabling"></a>

Secara default, autentikasi basis data IAM dinonaktifkan di klaster DB. Anda dapat mengaktifkan atau menonaktifkan autentikasi database IAM menggunakan Konsol Manajemen AWS, AWS CLI, atau API.

Anda dapat mengaktifkan autentikasi basis data IAM saat Anda melakukan salah satu tindakan berikut:
+ Untuk membuat klaster DB baru dengan autentikasi IAM diaktifkan, lihat [Membuat klaster DB Amazon Aurora](Aurora.CreateInstance.md).
+ Untuk memodifikasi klaster DB untuk mengaktifkan autentikasi basis data IAM, lihat [Memodifikasi klaster DB Amazon Aurora](Aurora.Modifying.md).
+ Untuk memulihkan klaster DB dari snapshot dengan autentikasi basis data IAM diaktifkan, lihat [Memulihkan dari snapshot klaster DB](aurora-restore-snapshot.md).
+ Untuk memulihkan klaster DB ke titik waktu dengan autentikasi basis data IAM diaktifkan, lihat [Memulihkan klaster DB ke waktu tertentu](aurora-pitr.md).

## Konsol
<a name="UsingWithRDS.IAMDBAuth.Enabling.Console"></a>

Setiap alur kerja pembuatan atau modifikasi memiliki bagian **Autentikasi basis data**, tempat Anda dapat mengaktifkan atau menonaktifkan autentikasi basis data IAM. Di bagian tersebut, pilih **Kata sandi dan autentikasi basis data IAM** untuk mengaktifkan autentikasi basis data IAM.

**Untuk mengaktifkan atau menonaktifkan autentikasi basis data IAM untuk klaster DB yang ada**

1. Buka konsol Amazon RDS di [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Di panel navigasi, pilih **Basis data**.

1. Pilih klaster DB yang ingin Anda ubah.
**catatan**  
Anda hanya dapat mengaktifkan autentikasi IAM jika semua instans DB dalam klaster DB kompatibel dengan IAM. Periksa persyaratan kompatibilitas dalam [Ketersediaan wilayah dan versi](UsingWithRDS.IAMDBAuth.md#UsingWithRDS.IAMDBAuth.Availability). 

1. Pilih **Ubah**.

1. Di bagian **otentikasi database**, pilih untuk mengaktifkan **autentikasi database IAM**. Pilih **Autentikasi kata sandi** atau **Kata sandi dan autentikasi Kerberos** untuk menonaktifkan autentikasi IAM.

1. Anda juga dapat memilih untuk mengaktifkan penerbitan log otentikasi IAM DB ke CloudWatch Log. Di bawah **Ekspor log**, pilih opsi **iam-db-auth-error log**. Menerbitkan log Anda ke CloudWatch Log menghabiskan penyimpanan dan Anda dikenakan biaya untuk penyimpanan itu. Pastikan untuk menghapus CloudWatch Log apa pun yang tidak lagi Anda butuhkan.

1. Pilih **Lanjutkan**.

1. Untuk segera menerapkan perubahan, pilih **Segera** di bagian **Penjadwalan modifikasi**.

1. Pilih **Ubah klaster**.

## AWS CLI
<a name="UsingWithRDS.IAMDBAuth.Enabling.CLI"></a>

Untuk membuat cluster DB baru dengan otentikasi IAM dengan menggunakan AWS CLI, gunakan perintah. [https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-cluster.html](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-cluster.html) Tentukan opsi `--enable-iam-database-authentication`.

Untuk memperbarui klaster DB yang ada agar memiliki atau tidak memiliki autentikasi IAM, gunakan perintah AWS CLI [https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-cluster.html](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-cluster.html). Tentukan opsi `--enable-iam-database-authentication` atau `--no-enable-iam-database-authentication`, sesuai kebutuhan.

**catatan**  
Anda hanya dapat mengaktifkan autentikasi IAM jika semua instans DB dalam klaster DB kompatibel dengan IAM. Periksa persyaratan kompatibilitas dalam [Ketersediaan wilayah dan versi](UsingWithRDS.IAMDBAuth.md#UsingWithRDS.IAMDBAuth.Availability). 

Secara default, Aurora melakukan modifikasi selama periode pemeliharaan berikutnya. Jika Anda ingin menggantinya dan mengaktifkan autentikasi DB IAM sesegera mungkin, gunakan parameter `--apply-immediately`. 

Jika Anda memulihkan cluster DB, gunakan salah satu AWS CLI perintah berikut:
+ `[restore-db-cluster-to-point-in-time](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-cluster-to-point-in-time.html)`
+ `[restore-db-cluster-from-db-snapshot](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html)`

Pengaturan autentikasi basis data IAM akan ditetapkan secara default ke pengaturan untuk snapshot sumber. Untuk mengubah pengaturan ini, atur opsi `--enable-iam-database-authentication` atau `--no-enable-iam-database-authentication` sebagaimana diperlukan.

## API RDS
<a name="UsingWithRDS.IAMDBAuth.Enabling.API"></a>

Untuk membuat instans DB baru dengan autentikasi IAM dengan menggunakan API, gunakan operasi API [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBCluster.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBCluster.html). Atur parameter `EnableIAMDatabaseAuthentication` ke `true`.

Untuk memperbarui klaster DB yang ada agar memiliki autentikasi IAM, gunakan operasi API [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBCluster.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBCluster.html). Atur parameter `EnableIAMDatabaseAuthentication` ke `true` untuk mengaktifkan autentikasi IAM, atau `false` untuk menonaktifkannya.

**catatan**  
Anda hanya dapat mengaktifkan autentikasi IAM jika semua instans DB dalam klaster DB kompatibel dengan IAM. Periksa persyaratan kompatibilitas dalam [Ketersediaan wilayah dan versi](UsingWithRDS.IAMDBAuth.md#UsingWithRDS.IAMDBAuth.Availability). 

Jika Anda memulihkan klaster DB, gunakan salah satu operasi API berikut:
+ [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBClusterFromSnapshot.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBClusterFromSnapshot.html)
+ [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBClusterToPointInTime.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBClusterToPointInTime.html)

Pengaturan autentikasi basis data IAM akan ditetapkan secara default ke pengaturan untuk snapshot sumber. Untuk mengubah pengaturan ini, atur parameter `EnableIAMDatabaseAuthentication` ke `true` untuk mengaktifkan autentikasi IAM, atau `false` untuk menonaktifkannya.

# Membuat dan menggunakan kebijakan IAM untuk akses basis data IAM
<a name="UsingWithRDS.IAMDBAuth.IAMPolicy"></a>

Untuk memungkinkan pengguna atau peran terhubung ke klaster DB, Anda harus membuat kebijakan IAM. Setelah itu, lampirkan kebijakan tersebut ke set izin atau peran.

**catatan**  
Untuk mempelajari selengkapnya tentang kebijakan IAM, lihat [Manajemen identitas dan akses untuk Amazon Aurora](UsingWithRDS.IAM.md).

Contoh kebijakan berikut memungkinkan pengguna terhubung ke klaster DB menggunakan autentikasi basis data IAM.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "rds-db:connect"
            ],
            "Resource": [
                "arn:aws:rds-db:us-east-2:111122223333:dbuser:cluster-ABCDEFGHIJKL01234/db_user"
            ]
        }
    ]
}
```

------

**penting**  
Pengguna dengan izin administrator dapat mengakses klaster DB tanpa izin eksplisit dalam kebijakan IAM. Jika Anda ingin membatasi akses administrator ke klaster DB, Anda dapat membuat peran IAM yang dengan izin istimewa yang sesuai dan menetapkannya ke administrator.

**catatan**  
Jangan samakan awalan `rds-db:` dengan awalan operasi API RDS lain yang diawali dengan `rds:`. Anda menggunakan awalan `rds-db:` dan tindakan `rds-db:connect` hanya untuk autentikasi basis data IAM. Hal ini tidak berlaku dalam konteks lainnya. 

Contoh kebijakan ini mencakup satu pernyataan dengan elemen berikut:
+ `Effect` – Tentukan `Allow` untuk memberikan akses ke klaster DB. Jika Anda tidak secara eksplisit mengizinkan akses, maka akses ditolak secara default.
+ `Action` – Tentukan `rds-db:connect` untuk mengizinkan koneksi ke klaster DB.
+ `Resource` – Tentukan Amazon Resource Name (ARN) yang menjelaskan satu akun basis data dalam satu klaster DB. Format ARN adalah sebagai berikut.

  ```
  arn:aws:rds-db:region:account-id:dbuser:DbClusterResourceId/db-user-name
  ```

  Dalam format ini, ganti hal berikut:
  + `region`adalah AWS Region untuk cluster DB. Dalam contoh kebijakan, AWS Wilayah adalah`us-east-2`.
  + `account-id`adalah nomor AWS akun untuk cluster DB. Dalam contoh kebijakan, nomor akun adalah `1234567890`. Pengguna harus berada di akun yang sama dengan akun untuk klaster DB.

    Untuk melakukan akses lintas akun, buat peran IAM dengan kebijakan yang ditunjukkan di atas di akun untuk klaster DB dan izinkan akun Anda yang lain untuk mengambil peran tersebut. 
  + `DbClusterResourceId` adalah pengidentifikasi untuk klaster DB. Pengenal ini unik untuk AWS Wilayah dan tidak pernah berubah. Dalam contoh kebijakan, pengidentifikasi adalah `cluster-ABCDEFGHIJKL01234`.

    Untuk menemukan ID sumber daya cluster DB di Amazon Aurora Amazon, pilih cluster instans untuk melihat detailnya. Konsol Manajemen AWS Kemudian, pilih tab **Konfigurasi**. **ID Sumber Daya** ditampilkan di bagian **Konfigurasi**.

    Atau, Anda dapat menggunakan AWS CLI perintah untuk mencantumkan pengenal dan sumber daya IDs untuk semua cluster DB Anda di AWS Wilayah saat ini, seperti yang ditunjukkan berikut.

    ```
    aws rds describe-db-clusters --query "DBClusters[*].[DBClusterIdentifier,DbClusterResourceId]"
    ```
**catatan**  
Jika Anda terhubung ke basis data melalui Proksi RDS, tentukan ID sumber daya proksi, seperti `prx-ABCDEFGHIJKL01234`. Untuk informasi tentang menggunakan autentikasi basis data IAM dengan Proksi RDS, lihat [Menghubungkan ke database menggunakan otentikasi IAM](rds-proxy-connecting.md#rds-proxy-connecting-iam).
  + `db-user-name` adalah nama akun basis data untuk dikaitkan dengan autentikasi IAM. Dalam contoh kebijakan, akun basis data adalah `db_user`.

Anda dapat membangun yang lain ARNs untuk mendukung berbagai pola akses. Kebijakan berikut memungkinkan akses ke dua akun basis data yang berbeda dalam klaster DB.

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Effect": "Allow",
         "Action": [
             "rds-db:connect"
         ],
         "Resource": [
             "arn:aws:rds-db:us-east-2:123456789012:dbuser:cluster-ABCDEFGHIJKL01234/jane_doe",
             "arn:aws:rds-db:us-east-2:123456789012:dbuser:cluster-ABCDEFGHIJKL01234/mary_roe"
         ]
      }
   ]
}
```

------

Kebijakan berikut menggunakan karakter “\$1” untuk mencocokkan semua cluster DB dan akun database untuk AWS akun dan AWS Wilayah tertentu. 

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "rds-db:connect"
            ],
            "Resource": [
                "arn:aws:rds-db:us-east-2:111122223333:dbuser:*/*"
            ]
        }
    ]
}
```

------

Kebijakan berikut cocok dengan semua cluster DB untuk AWS akun dan AWS Wilayah tertentu. Namun, kebijakan ini hanya memberikan akses ke klaster DB yang memiliki akun basis data `jane_doe`.

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Effect": "Allow",
         "Action": [
             "rds-db:connect"
         ],
         "Resource": [
             "arn:aws:rds-db:us-east-2:123456789012:dbuser:*/jane_doe"
         ]
      }
   ]
}
```

------

Pengguna atau peran hanya memiliki akses ke basis data yang aksesnya dimiliki oleh pengguna basis data tersebut. Misalnya, anggaplah klaster DB Anda memiliki basis data bernama *dev*, dan basis data lain bernama *uji*. Jika pengguna basis data `jane_doe` hanya memiliki akses ke *dev*, setiap pengguna atau peran yang mengakses klaster DB tersebut dengan pengguna `jane_doe` juga hanya akan memiliki akses ke *dev*. Pembatasan akses ini juga berlaku untuk objek basis data lain, seperti tabel, tampilan, dan sebagainya.

Administrator harus membuat kebijakan IAM yang memberikan izin pada entitas untuk melakukan operasi API tertentu pada sumber daya yang diperlukan. Administrator kemudian harus melampirkan kebijakan tersebut ke set izin atau peran yang memerlukan izin tersebut. Untuk contoh kebijakan, lihat [Contoh kebijakan berbasis identitas untuk Amazon Aurora](security_iam_id-based-policy-examples.md).

## Melampirkan kebijakan IAM ke set izin atau peran
<a name="UsingWithRDS.IAMDBAuth.IAMPolicy.Attaching"></a>

Setelah membuat kebijakan IAM untuk memungkinkan autentikasi basis data, Anda perlu melampirkan kebijakan tersebut ke set izin atau peran. Untuk tutorial tentang topik ini, lihat [Buat dan lampirkan kebijakan yang dikelola pelanggan pertama Anda](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_managed-policies.html) dalam *Panduan Pengguna IAM*.

Saat mengikuti tutorial ini, Anda dapat menggunakan salah satu contoh kebijakan yang ditunjukkan dalam bagian ini sebagai titik awal dan menyesuaikannya dengan kebutuhan Anda. Di akhir tutorial, Anda akan memiliki set izin dengan kebijakan terlampir yang dapat menggunakan tindakan `rds-db:connect`.

**catatan**  
Anda dapat memetakan beberapa set izin atau peran ke akun pengguna basis data yang sama. Misalnya, anggaplah kebijakan IAM Anda telah menentukan ARN sumber daya berikut.  

```
arn:aws:rds-db:us-east-2:123456789012:dbuser:cluster-12ABC34DEFG5HIJ6KLMNOP78QR/jane_doe
```
Jika Anda melampirkan kebijakan ke *Jane*, *Bob*, dan *Diego*, maka masing-masing pengguna tersebut dapat terhubung ke instans DB yang telah ditentukan menggunakan akun basis data `jane_doe`.

# Membuat akun basis data menggunakan autentikasi IAM
<a name="UsingWithRDS.IAMDBAuth.DBAccounts"></a>

Dengan autentikasi basis data IAM, Anda tidak perlu menetapkan kata sandi basis data ke akun pengguna yang Anda buat. Jika Anda menghapus pengguna yang dipetakan ke akun basis data, Anda juga harus menghapus akun basis data dengan pernyataan `DROP USER`.

**catatan**  
Nama pengguna yang digunakan untuk autentikasi IAM harus sesuai dengan huruf besar/kecil nama pengguna dalam basis data.

**Topics**
+ [

## Menggunakan autentikasi IAM dengan Aurora MySQL
](#UsingWithRDS.IAMDBAuth.DBAccounts.MySQL)
+ [

## Menggunakan otentikasi IAM dengan Aurora PostgreSQL
](#UsingWithRDS.IAMDBAuth.DBAccounts.PostgreSQL)

## Menggunakan autentikasi IAM dengan Aurora MySQL
<a name="UsingWithRDS.IAMDBAuth.DBAccounts.MySQL"></a>

Dengan dan Aurora MySQL, otentikasi `AWSAuthenticationPlugin` ditangani AWS oleh —sebuah plugin yang disediakan yang bekerja mulus dengan IAM untuk mengautentikasi pengguna Anda. Hubungkan ke klaster DB sebagai pengguna master atau pengguna lain yang dapat membuat pengguna dan memberikan hak akses. Setelah terhubung, berikan pernyataan `CREATE USER`, seperti yang ditunjukkan pada contoh berikut.

```
CREATE USER 'jane_doe' IDENTIFIED WITH AWSAuthenticationPlugin AS 'RDS'; 
```

Klausa `IDENTIFIED WITH` memungkinkan Aurora MySQL menggunakan `AWSAuthenticationPlugin` untuk mengautentikasi akun basis data (`jane_doe`). Klausa `AS 'RDS'` mengacu pada metode autentikasi. Pastikan nama pengguna basis data yang ditentukan sama dengan sumber daya dalam kebijakan IAM untuk akses basis data IAM. Untuk informasi selengkapnya, lihat [Membuat dan menggunakan kebijakan IAM untuk akses basis data IAM](UsingWithRDS.IAMDBAuth.IAMPolicy.md). 

**catatan**  
Jika Anda melihat pesan berikut, itu berarti plugin AWS-provided tidak tersedia untuk cluster DB saat ini.  
`ERROR 1524 (HY000): Plugin 'AWSAuthenticationPlugin' is not loaded`  
Untuk mengatasi kesalahan ini, verifikasikan bahwa Anda menggunakan konfigurasi yang didukung dan bahwa Anda telah mengaktifkan autentikasi basis data IAM di klaster DB Anda. Untuk informasi lebih lanjut, lihat [Ketersediaan wilayah dan versi](UsingWithRDS.IAMDBAuth.md#UsingWithRDS.IAMDBAuth.Availability) dan [Mengaktifkan dan menonaktifkan autentikasi basis data IAM](UsingWithRDS.IAMDBAuth.Enabling.md).

Setelah membuat akun menggunakan `AWSAuthenticationPlugin`, Anda mengelolanya dengan cara yang sama seperti akun basis data lainnya. Misalnya, Anda dapat memodifikasi hak akses akun dengan pernyataan `GRANT` dan `REVOKE`, atau memodifikasi berbagai atribut akun dengan pernyataan `ALTER USER`. 

Lalu lintas jaringan database dienkripsi menggunakan SSL/TLS saat menggunakan IAM. Untuk mengizinkan koneksi SSL, ubah akun pengguna dengan perintah berikut.

```
ALTER USER 'jane_doe'@'%' REQUIRE SSL;     
```

 

## Menggunakan otentikasi IAM dengan Aurora PostgreSQL
<a name="UsingWithRDS.IAMDBAuth.DBAccounts.PostgreSQL"></a>

Untuk menggunakan autentikasi IAM dengan Aurora PostgreSQL, hubungkan ke klaster DB sebagai pengguna master atau pengguna lain yang dapat membuat pengguna dan memberikan hak istimewa. Setelah terhubung, buat pengguna basis data lalu berikan peran `rds_iam` kepada pengguna tersebut seperti yang ditunjukkan pada contoh berikut.

```
CREATE USER db_userx; 
GRANT rds_iam TO db_userx;
```

Pastikan nama pengguna basis data yang ditentukan sama dengan sumber daya dalam kebijakan IAM untuk akses basis data IAM. Untuk informasi selengkapnya, lihat [Membuat dan menggunakan kebijakan IAM untuk akses basis data IAM](UsingWithRDS.IAMDBAuth.IAMPolicy.md). Anda harus memberikan `rds_iam` peran untuk menggunakan otentikasi IAM. Anda juga dapat menggunakan keanggotaan bersarang atau hibah tidak langsung dari peran tersebut. 

Perhatikan bahwa pengguna basis data PostgreSQL dapat menggunakan autentikasi IAM atau Kerberos tetapi tidak keduanya, sehingga pengguna ini tidak dapat memiliki juga peran `rds_ad`. Hal ini juga berlaku untuk keanggotaan bersarang. Lihat informasi yang lebih lengkap di [Langkah 7: Buat pengguna PostgreSQL untuk pengguna utama Kerberos Anda](postgresql-kerberos-setting-up.md#postgresql-kerberos-setting-up.create-logins).

# Menghubungkan ke klaster DB menggunakan autentikasi IAM
<a name="UsingWithRDS.IAMDBAuth.Connecting"></a>

Dengan autentikasi basis data IAM, Anda menggunakan token autentikasi ketika Anda terhubung ke klaster DB Anda. *Token autentikasi* adalah string karakter yang Anda gunakan sebagai pengganti kata sandi. Setelah Anda membuat token autentikasi, token tersebut berlaku selama 15 menit sebelum kedaluwarsa. Jika Anda mencoba terhubung menggunakan token yang kedaluwarsa, permintaan koneksi ditolak.

Setiap token autentikasi harus disertai dengan tanda tangan yang valid, menggunakan AWS Signature versi 4. (Untuk informasi selengkapnya, lihat [Proses penandatanganan Versi Tanda Tangan 4](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html) di * Referensi Umum AWS.* ) SDK AWS CLI dan AWS SDK, seperti AWS SDK untuk Java or AWS SDK untuk Python (Boto3), dapat secara otomatis menandatangani setiap token yang Anda buat.

Anda dapat menggunakan token otentikasi saat Anda terhubung ke Aurora dari layanan AWS lain, seperti. AWS Lambda Dengan menggunakan token, Anda tidak perlu menempatkan kata sandi dalam kode Anda. Atau, Anda dapat menggunakan AWS SDK untuk membuat dan menandatangani token otentikasi secara terprogram secara terprogram.

Setelah Anda memiliki token autentikasi IAM yang telah ditandatangani, Anda dapat terhubung ke klaster DB Aurora. Berikut ini, Anda dapat mengetahui cara melakukan ini menggunakan alat baris perintah atau AWS SDK, seperti AWS SDK untuk Java atau AWS SDK untuk Python (Boto3).

Untuk informasi selengkapnya, lihat postingan blog berikut ini:
+ [Gunakan autentikasi IAM untuk terhubung dengan SQL Workbench/J ke Aurora MySQL atau Amazon RDS for MySQL](https://aws.amazon.com/blogs/database/use-iam-authentication-to-connect-with-sql-workbenchj-to-amazon-aurora-mysql-or-amazon-rds-for-mysql/)
+ [Menggunakan autentikasi IAM untuk terhubung dengan pgAdmin Amazon Aurora PostgreSQL atau Amazon RDS for PostgreSQL](https://aws.amazon.com/blogs/database/using-iam-authentication-to-connect-with-pgadmin-amazon-aurora-postgresql-or-amazon-rds-for-postgresql/)

**Prasyarat**  
Berikut adalah prasyarat untuk menghubungkan ke klaster DB menggunakan autentikasi IAM:
+ [Mengaktifkan dan menonaktifkan autentikasi basis data IAM](UsingWithRDS.IAMDBAuth.Enabling.md)
+ [Membuat dan menggunakan kebijakan IAM untuk akses basis data IAM](UsingWithRDS.IAMDBAuth.IAMPolicy.md)
+ [Membuat akun basis data menggunakan autentikasi IAM](UsingWithRDS.IAMDBAuth.DBAccounts.md)

**Topics**
+ [

# Menghubungkan ke cluster DB Anda menggunakan autentikasi IAM dengan driver AWS
](IAMDBAuth.Connecting.Drivers.md)
+ [

# Menghubungkan ke cluster DB Anda menggunakan otentikasi IAM dari baris perintah: AWS CLI dan klien mysql
](UsingWithRDS.IAMDBAuth.Connecting.AWSCLI.md)
+ [

# Menghubungkan ke cluster DB Anda menggunakan otentikasi IAM dari baris perintah: AWS CLI dan klien psql
](UsingWithRDS.IAMDBAuth.Connecting.AWSCLI.PostgreSQL.md)
+ [

# Menghubungkan ke cluster DB Anda menggunakan otentikasi IAM dan AWS SDK untuk .NET
](UsingWithRDS.IAMDBAuth.Connecting.NET.md)
+ [

# Menghubungkan ke cluster DB Anda menggunakan otentikasi IAM dan AWS SDK untuk Go
](UsingWithRDS.IAMDBAuth.Connecting.Go.md)
+ [

# Menghubungkan ke cluster DB Anda menggunakan otentikasi IAM dan AWS SDK untuk Java
](UsingWithRDS.IAMDBAuth.Connecting.Java.md)
+ [

# Menghubungkan ke cluster DB Anda menggunakan otentikasi IAM dan AWS SDK untuk Python (Boto3)
](UsingWithRDS.IAMDBAuth.Connecting.Python.md)

# Menghubungkan ke cluster DB Anda menggunakan autentikasi IAM dengan driver AWS
<a name="IAMDBAuth.Connecting.Drivers"></a>

 AWS Rangkaian driver telah dirancang untuk memberikan dukungan untuk waktu peralihan dan failover yang lebih cepat, dan otentikasi dengan, AWS Identity and Access Management (IAM) AWS Secrets Manager, dan Federated Identity. AWS Driver mengandalkan pemantauan status dan menyadari topologi cluster untuk menentukan penulis baru. Pendekatan ini mengurangi waktu peralihan dan failover menjadi satu digit detik, dibandingkan dengan puluhan detik untuk driver open-source.

[Untuk informasi lebih lanjut tentang AWS driver, lihat driver bahasa yang sesuai untuk klaster Aurora [MySQL atau Aurora PostgreSQL DB](Aurora.Connecting.md#Aurora.Connecting.JDBCDriverMySQL) Anda.](Aurora.Connecting.md#Aurora.Connecting.AuroraPostgreSQL.Utilities)

# Menghubungkan ke cluster DB Anda menggunakan otentikasi IAM dari baris perintah: AWS CLI dan klien mysql
<a name="UsingWithRDS.IAMDBAuth.Connecting.AWSCLI"></a>

Anda dapat terhubung dari baris perintah ke cluster Aurora DB dengan AWS CLI alat baris perintah `mysql` dan seperti yang dijelaskan berikut.

**Prasyarat**  
Berikut adalah prasyarat untuk menghubungkan ke klaster DB menggunakan autentikasi IAM:
+ [Mengaktifkan dan menonaktifkan autentikasi basis data IAM](UsingWithRDS.IAMDBAuth.Enabling.md)
+ [Membuat dan menggunakan kebijakan IAM untuk akses basis data IAM](UsingWithRDS.IAMDBAuth.IAMPolicy.md)
+ [Membuat akun basis data menggunakan autentikasi IAM](UsingWithRDS.IAMDBAuth.DBAccounts.md)

**catatan**  
Untuk informasi tentang menghubungkan ke database Anda menggunakan SQL Workbench/J dengan autentikasi IAM, lihat posting blog [Menggunakan otentikasi IAM untuk terhubung dengan SQL ke Workbench/J Aurora MySQL atau Amazon RDS for MySQL](https://aws.amazon.com/blogs/database/use-iam-authentication-to-connect-with-sql-workbenchj-to-amazon-aurora-mysql-or-amazon-rds-for-mysql/).

**Topics**
+ [

## Membuat token autentikasi IAM
](#UsingWithRDS.IAMDBAuth.Connecting.AWSCLI.AuthToken)
+ [

## Menghubungkan ke klaster DB
](#UsingWithRDS.IAMDBAuth.Connecting.AWSCLI.Connect)

## Membuat token autentikasi IAM
<a name="UsingWithRDS.IAMDBAuth.Connecting.AWSCLI.AuthToken"></a>

Contoh berikut menunjukkan cara mendapatkan token autentikasi yang ditandatangani menggunakan AWS CLI.

```
aws rds generate-db-auth-token \
   --hostname rdsmysql.123456789012.us-west-2.rds.amazonaws.com \
   --port 3306 \
   --region us-west-2 \
   --username jane_doe
```

Dalam contoh, parameternya adalah sebagai berikut:
+ `--hostname` – Nama host klaster DB yang ingin Anda akses
+ `--port` – Nomor port yang digunakan untuk menghubungkan ke klaster DB Anda
+ `--region`— AWS Wilayah tempat cluster DB berjalan
+ `--username` – Akun basis data yang ingin Anda akses

Beberapa karakter pertama dari token terlihat seperti berikut.

```
rdsmysql.123456789012.us-west-2.rds.amazonaws.com:3306/?Action=connect&DBUser=jane_doe&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=900...
```

**catatan**  
Anda tidak dapat menggunakan data DNS Route 53 kustom sebagai pengganti titik akhir klaster DB untuk menghasilkan token autentikasi.

## Menghubungkan ke klaster DB
<a name="UsingWithRDS.IAMDBAuth.Connecting.AWSCLI.Connect"></a>

Format umum untuk terhubung ditampilkan sebagai berikut.

```
mysql --host=hostName --port=portNumber --ssl-ca=full_path_to_ssl_certificate --enable-cleartext-plugin --user=userName --password=authToken
```

Parameternya adalah sebagai berikut:
+ `--host` – Nama host klaster DB yang ingin Anda akses
+ `--port` – Nomor port yang digunakan untuk menghubungkan ke klaster DB Anda
+ `--ssl-ca` – Jalur lengkap ke file sertifikat SSL yang berisi kunci publik

  Untuk informasi selengkapnya, lihat [Koneksi TLS ke cluster DB MySQL Aurora](AuroraMySQL.Security.md#AuroraMySQL.Security.SSL).

  Untuk mengunduh sertifikat SSL, lihat [Menggunakan SSL/TLS untuk mengenkripsi koneksi ke ](UsingWithRDS.SSL.md).
+ `--enable-cleartext-plugin` – Nilai yang menentukan bahwa `AWSAuthenticationPlugin` harus digunakan untuk koneksi ini

  Jika Anda menggunakan klien MariaDB, opsi `--enable-cleartext-plugin` tidak diperlukan.
+ `--user` – Akun basis data yang ingin Anda akses
+ `--password` – Token autentikasi IAM yang ditandatangani

Token autentikasi terdiri atas beberapa ratus karakter. Hal ini dapat sulit ditangani di baris perintah. Salah satu cara untuk mengatasinya adalah dengan menyimpan token ke variabel lingkungan, lalu menggunakan variabel tersebut saat Anda terhubung. Contoh berikut menunjukkan satu cara untuk melakukan solusi ini. Dalam contoh, */sample\$1dir/* adalah path lengkap ke file sertifikat SSL yang berisi kunci publik.

```
RDSHOST="mysqlcluster.cluster-123456789012.us-east-1.rds.amazonaws.com"
TOKEN="$(aws rds generate-db-auth-token --hostname $RDSHOST --port 3306 --region us-west-2 --username jane_doe )"

mysql --host=$RDSHOST --port=3306 --ssl-ca=/sample_dir/global-bundle.pem --enable-cleartext-plugin --user=jane_doe --password=$TOKEN
```

Saat Anda terhubung menggunakan `AWSAuthenticationPlugin`, koneksi diamankan menggunakan SSL. Untuk memverifikasi hal ini, ketik berikut ini di prompt perintah `mysql>`.

```
show status like 'Ssl%';
```

Baris berikut dalam output menampilkan lebih banyak detail.

```
+---------------+-------------+
| Variable_name | Value                                                                                                                                                                                                                                |
+---------------+-------------+
| ...           | ...
| Ssl_cipher    | AES256-SHA                                                                                                                                                                                                                           |
| ...           | ...
| Ssl_version   | TLSv1.1                                                                                                                                                                                                                              |
| ...           | ...
+-----------------------------+
```

Jika Anda ingin terhubung ke klaster DB melalui proksi, lihat [Menghubungkan ke database menggunakan otentikasi IAM](rds-proxy-connecting.md#rds-proxy-connecting-iam).

# Menghubungkan ke cluster DB Anda menggunakan otentikasi IAM dari baris perintah: AWS CLI dan klien psql
<a name="UsingWithRDS.IAMDBAuth.Connecting.AWSCLI.PostgreSQL"></a>

Anda dapat terhubung dari baris perintah ke klaster DB Aurora PostgreSQL dengan AWS CLI dan alat baris perintah psql seperti yang dijelaskan berikut.

**Prasyarat**  
Berikut adalah prasyarat untuk menghubungkan ke klaster DB menggunakan autentikasi IAM:
+ [Mengaktifkan dan menonaktifkan autentikasi basis data IAM](UsingWithRDS.IAMDBAuth.Enabling.md)
+ [Membuat dan menggunakan kebijakan IAM untuk akses basis data IAM](UsingWithRDS.IAMDBAuth.IAMPolicy.md)
+ [Membuat akun basis data menggunakan autentikasi IAM](UsingWithRDS.IAMDBAuth.DBAccounts.md)

**catatan**  
Untuk informasi tentang menghubungkan ke basis data Anda menggunakan pgAdmin dengan autentikasi IAM, lihat postingan blog [Menggunakan autentikasi IAM untuk terhubung dengan pgAdmin Amazon Aurora PostgreSQL atau Amazon RDS for PostgreSQL](https://aws.amazon.com/blogs/database/using-iam-authentication-to-connect-with-pgadmin-amazon-aurora-postgresql-or-amazon-rds-for-postgresql/).

**Topics**
+ [

## Membuat token autentikasi IAM
](#UsingWithRDS.IAMDBAuth.Connecting.AWSCLI.AuthToken.PostgreSQL)
+ [

## Menghubungkan ke klaster Aurora PostgreSQL
](#UsingWithRDS.IAMDBAuth.Connecting.AWSCLI.Connect.PostgreSQL)

## Membuat token autentikasi IAM
<a name="UsingWithRDS.IAMDBAuth.Connecting.AWSCLI.AuthToken.PostgreSQL"></a>

Token autentikasi terdiri dari ratusan karakter sehingga kemungkinan menjadi sulit ditangani di baris perintah. Salah satu cara untuk mengatasi ini adalah dengan menyimpan token ke variabel lingkungan, lalu menggunakan variabel tersebut saat Anda terhubung. Contoh berikut menunjukkan bagaimana menggunakan AWS CLI untuk mendapatkan token otentikasi ditandatangani menggunakan `generate-db-auth-token` perintah, dan menyimpannya dalam variabel `PGPASSWORD` lingkungan.

```
export RDSHOST="mypostgres-cluster.cluster-123456789012.us-west-2.rds.amazonaws.com"
export PGPASSWORD="$(aws rds generate-db-auth-token --hostname $RDSHOST --port 5432 --region us-west-2 --username jane_doe )"
```

Dalam contoh, parameter untuk perintah `generate-db-auth-token` adalah sebagai berikut:
+ `--hostname` – Nama host klaster (titik akhir klaster) DB yang ingin Anda akses
+ `--port` – Nomor port yang digunakan untuk menghubungkan ke klaster DB Anda
+ `--region`— AWS Wilayah tempat cluster DB berjalan
+ `--username` – Akun basis data yang ingin Anda akses

Beberapa karakter pertama dari token yang dihasilkan terlihat seperti berikut.

```
mypostgres-cluster.cluster-123456789012.us-west-2.rds.amazonaws.com:5432/?Action=connect&DBUser=jane_doe&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=900...
```

**catatan**  
Anda tidak dapat menggunakan data DNS Route 53 kustom sebagai pengganti titik akhir klaster DB untuk menghasilkan token autentikasi.

## Menghubungkan ke klaster Aurora PostgreSQL
<a name="UsingWithRDS.IAMDBAuth.Connecting.AWSCLI.Connect.PostgreSQL"></a>

Format umum untuk menggunakan psql untuk terhubung ditampilkan sebagai berikut.

```
psql "host=hostName port=portNumber sslmode=verify-full sslrootcert=full_path_to_ssl_certificate dbname=DBName user=userName password=authToken"
```

Parameternya adalah sebagai berikut:
+ `host` – Nama host klaster (titik akhir klaster) DB yang ingin Anda akses
+ `port` – Nomor port yang digunakan untuk menghubungkan ke klaster DB Anda
+ `sslmode` – Mode SSL yang akan digunakan

  Saat Anda menggunakan `sslmode=verify-full`, koneksi SSL memverifikasi titik akhir klaster DB di sertifikat SSL.
+ `sslrootcert` – Jalur lengkap ke file sertifikat SSL yang berisi kunci publik

  Untuk informasi selengkapnya, lihat [Mengamankan data Aurora PostgreSQL dengan SSL/TLS](AuroraPostgreSQL.Security.md#AuroraPostgreSQL.Security.SSL).

  Untuk mengunduh sertifikat SSL, lihat [Menggunakan SSL/TLS untuk mengenkripsi koneksi ke ](UsingWithRDS.SSL.md).
+ `dbname` – Basis data yang ingin Anda akses
+ `user` – Akun basis data yang ingin Anda akses
+ `password` – Token autentikasi IAM yang ditandatangani

**catatan**  
Anda tidak dapat menggunakan data DNS Route 53 kustom sebagai pengganti titik akhir klaster DB untuk menghasilkan token autentikasi.

Contoh berikut menunjukkan penggunaan psql untuk terhubung. Dalam contoh, psql menggunakan variabel lingkungan `RDSHOST` untuk host dan variabel lingkungan `PGPASSWORD` untuk token yang dihasilkan. Juga, */sample\$1dir/* adalah jalur lengkap ke file sertifikat SSL yang berisi kunci publik.

```
export RDSHOST="mypostgres-cluster.cluster-123456789012.us-west-2.rds.amazonaws.com"
export PGPASSWORD="$(aws rds generate-db-auth-token --hostname $RDSHOST --port 5432 --region us-west-2 --username jane_doe )"
                    
psql "host=$RDSHOST port=5432 sslmode=verify-full sslrootcert=/sample_dir/global-bundle.pem dbname=DBName user=jane_doe password=$PGPASSWORD"
```

Jika Anda ingin terhubung ke klaster DB melalui proksi, lihat [Menghubungkan ke database menggunakan otentikasi IAM](rds-proxy-connecting.md#rds-proxy-connecting-iam).

# Menghubungkan ke cluster DB Anda menggunakan otentikasi IAM dan AWS SDK untuk .NET
<a name="UsingWithRDS.IAMDBAuth.Connecting.NET"></a>

Anda dapat terhubung ke dengan seperti yang dijelaskan berikut. AWS SDK untuk .NET 

**Prasyarat**  
Berikut adalah prasyarat untuk menghubungkan ke klaster DB menggunakan autentikasi IAM:
+ [Mengaktifkan dan menonaktifkan autentikasi basis data IAM](UsingWithRDS.IAMDBAuth.Enabling.md)
+ [Membuat dan menggunakan kebijakan IAM untuk akses basis data IAM](UsingWithRDS.IAMDBAuth.IAMPolicy.md)
+ [Membuat akun basis data menggunakan autentikasi IAM](UsingWithRDS.IAMDBAuth.DBAccounts.md)

**Contoh**  
Contoh kode berikut ini menunjukkan cara membuat token autentikasi, lalu menggunakannya untuk menghubungkan ke klaster DB.

Untuk menjalankan contoh kode ini, Anda memerlukan [AWS SDK untuk .NET](https://aws.amazon.com/sdk-for-net/), ditemukan di AWS situs. Paket `AWSSDK.CORE` dan `AWSSDK.RDS` diperlukan. Untuk terhubung ke cluster DB, gunakan konektor database.NET untuk mesin DB, seperti untuk MariaDB atau MySQL, atau Npgsql MySqlConnector untuk PostgreSQL.

Kode ini terhubung ke klaster DB Aurora MySQL. Ubah nilai variabel berikut sesuai kebutuhan:
+ `server` – Titik akhir klaster DB yang ingin Anda akses
+ `user` – Akun basis data yang ingin Anda akses
+ `database` – Basis data yang ingin Anda akses
+ `port` – Nomor port yang digunakan untuk menghubungkan ke klaster DB Anda
+ `SslMode` – Mode SSL yang akan digunakan

  Saat Anda menggunakan `SslMode=Required`, koneksi SSL memverifikasi titik akhir klaster DB di sertifikat SSL.
+ `SslCa` – Jalur lengkap ke sertifikat SSL untuk Amazon Aurora

  Untuk mengunduh sertifikat, lihat [Menggunakan SSL/TLS untuk mengenkripsi koneksi ke ](UsingWithRDS.SSL.md).

**catatan**  
Anda tidak dapat menggunakan data DNS Route 53 kustom sebagai pengganti titik akhir klaster DB untuk menghasilkan token autentikasi.

```
using System;
using System.Data;
using MySql.Data;
using MySql.Data.MySqlClient;
using Amazon;

namespace ubuntu
{
  class Program
  {
    static void Main(string[] args)
    {
      var pwd = Amazon.RDS.Util.RDSAuthTokenGenerator.GenerateAuthToken(RegionEndpoint.USEast1, "mysqlcluster.cluster-123456789012.us-east-1.rds.amazonaws.com", 3306, "jane_doe");
      // for debug only Console.Write("{0}\n", pwd);  //this verifies the token is generated

      MySqlConnection conn = new MySqlConnection($"server=mysqlcluster.cluster-123456789012.us-east-1.rds.amazonaws.com;user=jane_doe;database=mydB;port=3306;password={pwd};SslMode=Required;SslCa=full_path_to_ssl_certificate");
      conn.Open();

      // Define a query
      MySqlCommand sampleCommand = new MySqlCommand("SHOW DATABASES;", conn);

      // Execute a query
      MySqlDataReader mysqlDataRdr = sampleCommand.ExecuteReader();

      // Read all rows and output the first column in each row
      while (mysqlDataRdr.Read())
        Console.WriteLine(mysqlDataRdr[0]);

      mysqlDataRdr.Close();
      // Close connection
      conn.Close();
    }
  }
}
```

Kode ini terhubung ke klaster DB Aurora PostgreSQL.

Ubah nilai variabel berikut sesuai kebutuhan:
+ `Server` – Titik akhir klaster DB yang ingin Anda akses
+ `User ID` – Akun basis data yang ingin Anda akses
+ `Database` – Basis data yang ingin Anda akses
+ `Port` – Nomor port yang digunakan untuk menghubungkan ke klaster DB Anda
+ `SSL Mode` – Mode SSL yang akan digunakan

  Saat Anda menggunakan `SSL Mode=Required`, koneksi SSL memverifikasi titik akhir klaster DB di sertifikat SSL.
+ `Root Certificate` – Jalur lengkap ke sertifikat SSL untuk Amazon Aurora

  Untuk mengunduh sertifikat, lihat [Menggunakan SSL/TLS untuk mengenkripsi koneksi ke ](UsingWithRDS.SSL.md).

**catatan**  
Anda tidak dapat menggunakan data DNS Route 53 kustom sebagai pengganti titik akhir klaster DB untuk menghasilkan token autentikasi.

```
using System;
using Npgsql;
using Amazon.RDS.Util;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            var pwd = RDSAuthTokenGenerator.GenerateAuthToken("postgresmycluster.cluster-123456789012.us-east-1.rds.amazonaws.com", 5432, "jane_doe");
// for debug only Console.Write("{0}\n", pwd);  //this verifies the token is generated

            NpgsqlConnection conn = new NpgsqlConnection($"Server=postgresmycluster.cluster-123456789012.us-east-1.rds.amazonaws.com;User Id=jane_doe;Password={pwd};Database=mydb;SSL Mode=Require;Root Certificate=full_path_to_ssl_certificate");
            conn.Open();

            // Define a query
                   NpgsqlCommand cmd = new NpgsqlCommand("select count(*) FROM pg_user", conn);

            // Execute a query
            NpgsqlDataReader dr = cmd.ExecuteReader();

            // Read all rows and output the first column in each row
            while (dr.Read())
                Console.Write("{0}\n", dr[0]);

            // Close connection
            conn.Close();
        }
    }
}
```

Jika Anda ingin terhubung ke klaster DB melalui proksi, lihat [Menghubungkan ke database menggunakan otentikasi IAM](rds-proxy-connecting.md#rds-proxy-connecting-iam).

# Menghubungkan ke cluster DB Anda menggunakan otentikasi IAM dan AWS SDK untuk Go
<a name="UsingWithRDS.IAMDBAuth.Connecting.Go"></a>

Anda dapat terhubung ke dengan seperti yang dijelaskan berikut. AWS SDK untuk Go 

**Prasyarat**  
Berikut adalah prasyarat untuk menghubungkan ke klaster DB menggunakan autentikasi IAM:
+ [Mengaktifkan dan menonaktifkan autentikasi basis data IAM](UsingWithRDS.IAMDBAuth.Enabling.md)
+ [Membuat dan menggunakan kebijakan IAM untuk akses basis data IAM](UsingWithRDS.IAMDBAuth.IAMPolicy.md)
+ [Membuat akun basis data menggunakan autentikasi IAM](UsingWithRDS.IAMDBAuth.DBAccounts.md)

**Contoh**  
Untuk menjalankan contoh kode ini, Anda memerlukan [AWS SDK untuk Go](https://aws.amazon.com/sdk-for-go/), ditemukan di AWS situs.

Ubah nilai variabel berikut sesuai kebutuhan:
+ `dbName` – Basis data yang ingin Anda akses
+ `dbUser` – Akun basis data yang ingin Anda akses
+ `dbHost` – Titik akhir klaster DB yang ingin Anda akses
**catatan**  
Anda tidak dapat menggunakan data DNS Route 53 kustom sebagai pengganti titik akhir klaster DB untuk menghasilkan token autentikasi.
+ `dbPort` – Nomor port yang digunakan untuk menghubungkan ke klaster DB Anda
+ `region`— AWS Wilayah tempat cluster DB berjalan

Selain itu, pastikan pustaka yang diimpor dalam kode sampel ada di sistem Anda.

**penting**  
Contoh dalam bagian ini menggunakan kode berikut untuk menyediakan kredensial yang mengakses basis data dari lingkungan lokal:  
`creds := credentials.NewEnvCredentials()`  
Jika Anda mengakses database dari AWS layanan, seperti Amazon EC2 atau Amazon ECS, Anda dapat mengganti kode dengan kode berikut:  
`sess := session.Must(session.NewSession())`  
`creds := sess.Config.Credentials`  
Jika Anda membuat perubahan ini, pastikan Anda menambahkan impor berikut:  
`"github.com/aws/aws-sdk-go/aws/session"`

**Topics**
+ [

## Menghubungkan menggunakan otentikasi IAM dan V2 AWS SDK untuk Go
](#UsingWithRDS.IAMDBAuth.Connecting.GoV2)
+ [

## Menghubungkan menggunakan otentikasi IAM dan V1. AWS SDK untuk Go
](#UsingWithRDS.IAMDBAuth.Connecting.GoV1)

## Menghubungkan menggunakan otentikasi IAM dan V2 AWS SDK untuk Go
<a name="UsingWithRDS.IAMDBAuth.Connecting.GoV2"></a>

Anda dapat terhubung ke cluster DB menggunakan autentikasi IAM dan V2. AWS SDK untuk Go 

Contoh kode berikut ini menunjukkan cara membuat token autentikasi, lalu menggunakannya untuk menghubungkan ke klaster DB. 

Kode ini terhubung ke klaster DB Aurora MySQL.

```
package main
                
import (
     "context"
     "database/sql"
     "fmt"

     "github.com/aws/aws-sdk-go-v2/config"
     "github.com/aws/aws-sdk-go-v2/feature/rds/auth"
     _ "github.com/go-sql-driver/mysql"
)

func main() {

     var dbName string = "DatabaseName"
     var dbUser string = "DatabaseUser"
     var dbHost string = "mysqlcluster.cluster-123456789012.us-east-1.rds.amazonaws.com"
     var dbPort int = 3306
     var dbEndpoint string = fmt.Sprintf("%s:%d", dbHost, dbPort)
     var region string = "us-east-1"

    cfg, err := config.LoadDefaultConfig(context.TODO())
    if err != nil {
    	panic("configuration error: " + err.Error())
    }

    authenticationToken, err := auth.BuildAuthToken(
    	context.TODO(), dbEndpoint, region, dbUser, cfg.Credentials)
    if err != nil {
	    panic("failed to create authentication token: " + err.Error())
    }

    dsn := fmt.Sprintf("%s:%s@tcp(%s)/%s?tls=true&allowCleartextPasswords=true",
        dbUser, authenticationToken, dbEndpoint, dbName,
    )

    db, err := sql.Open("mysql", dsn)
    if err != nil {
        panic(err)
    }

    err = db.Ping()
    if err != nil {
        panic(err)
    }
}
```

Kode ini terhubung ke klaster DB Aurora PostgreSQL.

```
package main

import (
     "context"
     "database/sql"
     "fmt"

     "github.com/aws/aws-sdk-go-v2/config"
     "github.com/aws/aws-sdk-go-v2/feature/rds/auth"
     _ "github.com/lib/pq"
)

func main() {

     var dbName string = "DatabaseName"
     var dbUser string = "DatabaseUser"
     var dbHost string = "postgresmycluster.cluster-123456789012.us-east-1.rds.amazonaws.com"
     var dbPort int = 5432
     var dbEndpoint string = fmt.Sprintf("%s:%d", dbHost, dbPort)
     var region string = "us-east-1"

    cfg, err := config.LoadDefaultConfig(context.TODO())
    if err != nil {
    	panic("configuration error: " + err.Error())
    }

    authenticationToken, err := auth.BuildAuthToken(
    	context.TODO(), dbEndpoint, region, dbUser, cfg.Credentials)
    if err != nil {
	    panic("failed to create authentication token: " + err.Error())
    }

    dsn := fmt.Sprintf("host=%s port=%d user=%s password=%s dbname=%s",
        dbHost, dbPort, dbUser, authenticationToken, dbName,
    )

    db, err := sql.Open("postgres", dsn)
    if err != nil {
        panic(err)
    }

    err = db.Ping()
    if err != nil {
        panic(err)
    }
}
```

Jika Anda ingin terhubung ke klaster DB melalui proksi, lihat [Menghubungkan ke database menggunakan otentikasi IAM](rds-proxy-connecting.md#rds-proxy-connecting-iam).

## Menghubungkan menggunakan otentikasi IAM dan V1. AWS SDK untuk Go
<a name="UsingWithRDS.IAMDBAuth.Connecting.GoV1"></a>

Anda dapat terhubung ke cluster DB menggunakan otentikasi IAM dan V1 AWS SDK untuk Go 

Contoh kode berikut ini menunjukkan cara membuat token autentikasi, lalu menggunakannya untuk menghubungkan ke klaster DB. 

Kode ini terhubung ke klaster DB Aurora MySQL.

```
package main
         
import (
    "database/sql"
    "fmt"
    "log"

    "github.com/aws/aws-sdk-go/aws/credentials"
    "github.com/aws/aws-sdk-go/service/rds/rdsutils"
    _ "github.com/go-sql-driver/mysql"
)

func main() {
    dbName := "app"
    dbUser := "jane_doe"
    dbHost := "mysqlcluster.cluster-123456789012.us-east-1.rds.amazonaws.com"
    dbPort := 3306
    dbEndpoint := fmt.Sprintf("%s:%d", dbHost, dbPort)
    region := "us-east-1"

    creds := credentials.NewEnvCredentials()
    authToken, err := rdsutils.BuildAuthToken(dbEndpoint, region, dbUser, creds)
    if err != nil {
        panic(err)
    }

    dsn := fmt.Sprintf("%s:%s@tcp(%s)/%s?tls=true&allowCleartextPasswords=true",
        dbUser, authToken, dbEndpoint, dbName,
    )

    db, err := sql.Open("mysql", dsn)
    if err != nil {
        panic(err)
    }

    err = db.Ping()
    if err != nil {
        panic(err)
    }
}
```

Kode ini terhubung ke klaster DB Aurora PostgreSQL.

```
package main

import (
	"database/sql"
	"fmt"

	"github.com/aws/aws-sdk-go/aws/credentials"
	"github.com/aws/aws-sdk-go/service/rds/rdsutils"
	_ "github.com/lib/pq"
)

func main() {
    dbName := "app"
    dbUser := "jane_doe"
    dbHost := "postgresmycluster.cluster-123456789012.us-east-1.rds.amazonaws.com"
    dbPort := 5432
    dbEndpoint := fmt.Sprintf("%s:%d", dbHost, dbPort)
    region := "us-east-1"

    creds := credentials.NewEnvCredentials()
    authToken, err := rdsutils.BuildAuthToken(dbEndpoint, region, dbUser, creds)
    if err != nil {
        panic(err)
    }

    dsn := fmt.Sprintf("host=%s port=%d user=%s password=%s dbname=%s",
        dbHost, dbPort, dbUser, authToken, dbName,
    )

    db, err := sql.Open("postgres", dsn)
    if err != nil {
        panic(err)
    }

    err = db.Ping()
    if err != nil {
        panic(err)
    }
}
```

Jika Anda ingin terhubung ke klaster DB melalui proksi, lihat [Menghubungkan ke database menggunakan otentikasi IAM](rds-proxy-connecting.md#rds-proxy-connecting-iam).

# Menghubungkan ke cluster DB Anda menggunakan otentikasi IAM dan AWS SDK untuk Java
<a name="UsingWithRDS.IAMDBAuth.Connecting.Java"></a>

Anda dapat terhubung ke dengan seperti yang dijelaskan berikut. AWS SDK untuk Java 

**Prasyarat**  
Berikut adalah prasyarat untuk menghubungkan ke klaster DB menggunakan autentikasi IAM:
+ [Mengaktifkan dan menonaktifkan autentikasi basis data IAM](UsingWithRDS.IAMDBAuth.Enabling.md)
+ [Membuat dan menggunakan kebijakan IAM untuk akses basis data IAM](UsingWithRDS.IAMDBAuth.IAMPolicy.md)
+ [Membuat akun basis data menggunakan autentikasi IAM](UsingWithRDS.IAMDBAuth.DBAccounts.md)
+ [Menyiapkan AWS SDK for Java](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/setup-install.html)

Untuk contoh tentang cara menggunakan SDK for Java 2.x, lihat [contoh Amazon RDS menggunakan SDK for Java](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/java_rds_code_examples.html) 2.x. Anda juga dapat menggunakan AWS Advanced JDBC Wrapper, lihat Dokumentasi [AWS Advanced JDBC](https://github.com/aws/aws-advanced-jdbc-wrapper/blob/main/docs/Documentation.md) Wrapper.

**Topics**
+ [

## Membuat token autentikasi IAM
](#UsingWithRDS.IAMDBAuth.Connecting.Java.AuthToken)
+ [

## Membuat token autentikasi IAM secara manual
](#UsingWithRDS.IAMDBAuth.Connecting.Java.AuthToken2)
+ [

## Menghubungkan ke klaster DB
](#UsingWithRDS.IAMDBAuth.Connecting.Java.AuthToken.Connect)

## Membuat token autentikasi IAM
<a name="UsingWithRDS.IAMDBAuth.Connecting.Java.AuthToken"></a>

Jika Anda menulis program menggunakan AWS SDK untuk Java, Anda bisa mendapatkan token otentikasi yang ditandatangani menggunakan `RdsIamAuthTokenGenerator` kelas. Menggunakan kelas ini mengharuskan Anda memberikan AWS kredensil. Untuk melakukan ini, Anda membuat instance dari `DefaultAWSCredentialsProviderChain` kelas. `DefaultAWSCredentialsProviderChain`menggunakan kunci AWS akses pertama dan kunci rahasia yang ditemukan di [rantai penyedia kredensi default](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/credentials.html#credentials-default). Untuk informasi selengkapnya tentang kunci akses AWS , lihat [Mengelola kunci akses untuk pengguna](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html).

**catatan**  
Anda tidak dapat menggunakan data DNS Route 53 kustom sebagai pengganti titik akhir klaster DB untuk menghasilkan token autentikasi.

Setelah membuat instans `RdsIamAuthTokenGenerator`, Anda dapat memanggil metode `getAuthToken` untuk mendapatkan token yang ditandatangani. Berikan Wilayah AWS , nama host, nomor port, dan nama pengguna. Contoh kode berikut menunjukkan cara melakukannya.

```
package com.amazonaws.codesamples;

import com.amazonaws.auth.DefaultAWSCredentialsProviderChain;
import com.amazonaws.services.rds.auth.GetIamAuthTokenRequest;
import com.amazonaws.services.rds.auth.RdsIamAuthTokenGenerator;

public class GenerateRDSAuthToken {

    public static void main(String[] args) {

	    String region = "us-west-2";
	    String hostname = "rdsmysql.123456789012.us-west-2.rds.amazonaws.com";
	    String port = "3306";
	    String username = "jane_doe";
	
	    System.out.println(generateAuthToken(region, hostname, port, username));
    }

    static String generateAuthToken(String region, String hostName, String port, String username) {

	    RdsIamAuthTokenGenerator generator = RdsIamAuthTokenGenerator.builder()
		    .credentials(new DefaultAWSCredentialsProviderChain())
		    .region(region)
		    .build();

	    String authToken = generator.getAuthToken(
		    GetIamAuthTokenRequest.builder()
		    .hostname(hostName)
		    .port(Integer.parseInt(port))
		    .userName(username)
		    .build());
	    
	    return authToken;
    }

}
```

## Membuat token autentikasi IAM secara manual
<a name="UsingWithRDS.IAMDBAuth.Connecting.Java.AuthToken2"></a>

Di Java, cara termudah untuk menghasilkan token autentikasi adalah dengan menggunakan `RdsIamAuthTokenGenerator`. Kelas ini membuat token otentikasi untuk Anda, dan kemudian menandatanganinya menggunakan AWS tanda tangan versi 4. Untuk informasi selengkapnya, lihat [Proses penandatanganan Signature versi 4](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html) dalam *Referensi Umum AWS.*

Namun, Anda juga dapat membuat dan menandatangani token autentikasi secara manual, seperti ditunjukkan dalam contoh kode berikut.

```
package com.amazonaws.codesamples;

import com.amazonaws.SdkClientException;
import com.amazonaws.auth.DefaultAWSCredentialsProviderChain;
import com.amazonaws.auth.SigningAlgorithm;
import com.amazonaws.util.BinaryUtils;
import org.apache.commons.lang3.StringUtils;

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.Charset;
import java.security.MessageDigest;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.SortedMap;
import java.util.TreeMap;

import static com.amazonaws.auth.internal.SignerConstants.AWS4_TERMINATOR;
import static com.amazonaws.util.StringUtils.UTF8;

public class CreateRDSAuthTokenManually {
    public static String httpMethod = "GET";
    public static String action = "connect";
    public static String canonicalURIParameter = "/";
    public static SortedMap<String, String> canonicalQueryParameters = new TreeMap();
    public static String payload = StringUtils.EMPTY;
    public static String signedHeader = "host";
    public static String algorithm = "AWS4-HMAC-SHA256";
    public static String serviceName = "rds-db";
    public static String requestWithoutSignature;

    public static void main(String[] args) throws Exception {

        String region = "us-west-2";
        String instanceName = "rdsmysql.123456789012.us-west-2.rds.amazonaws.com";
        String port = "3306";
        String username = "jane_doe";
	
        Date now = new Date();
        String date = new SimpleDateFormat("yyyyMMdd").format(now);
        String dateTimeStamp = new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'").format(now);
        DefaultAWSCredentialsProviderChain creds = new DefaultAWSCredentialsProviderChain();
	    String awsAccessKey = creds.getCredentials().getAWSAccessKeyId();
	    String awsSecretKey = creds.getCredentials().getAWSSecretKey();
        String expiryMinutes = "900";
        
        System.out.println("Step 1:  Create a canonical request:");
        String canonicalString = createCanonicalString(username, awsAccessKey, date, dateTimeStamp, region, expiryMinutes, instanceName, port);
        System.out.println(canonicalString);
        System.out.println();

        System.out.println("Step 2:  Create a string to sign:");        
        String stringToSign = createStringToSign(dateTimeStamp, canonicalString, awsAccessKey, date, region);
        System.out.println(stringToSign);
        System.out.println();

        System.out.println("Step 3:  Calculate the signature:");        
        String signature = BinaryUtils.toHex(calculateSignature(stringToSign, newSigningKey(awsSecretKey, date, region, serviceName)));
        System.out.println(signature);
        System.out.println();

        System.out.println("Step 4:  Add the signing info to the request");                
        System.out.println(appendSignature(signature));
        System.out.println();
        
    }

    //Step 1: Create a canonical request date should be in format YYYYMMDD and dateTime should be in format YYYYMMDDTHHMMSSZ
    public static String createCanonicalString(String user, String accessKey, String date, String dateTime, String region, String expiryPeriod, String hostName, String port) throws Exception {
        canonicalQueryParameters.put("Action", action);
        canonicalQueryParameters.put("DBUser", user);
        canonicalQueryParameters.put("X-Amz-Algorithm", "AWS4-HMAC-SHA256");
        canonicalQueryParameters.put("X-Amz-Credential", accessKey + "%2F" + date + "%2F" + region + "%2F" + serviceName + "%2Faws4_request");
        canonicalQueryParameters.put("X-Amz-Date", dateTime);
        canonicalQueryParameters.put("X-Amz-Expires", expiryPeriod);
        canonicalQueryParameters.put("X-Amz-SignedHeaders", signedHeader);
        String canonicalQueryString = "";
        while(!canonicalQueryParameters.isEmpty()) {
            String currentQueryParameter = canonicalQueryParameters.firstKey();
            String currentQueryParameterValue = canonicalQueryParameters.remove(currentQueryParameter);
            canonicalQueryString = canonicalQueryString + currentQueryParameter + "=" + currentQueryParameterValue;
            if (!currentQueryParameter.equals("X-Amz-SignedHeaders")) {
                canonicalQueryString += "&";
            }
        }
        String canonicalHeaders = "host:" + hostName + ":" + port + '\n';
        requestWithoutSignature = hostName + ":" + port + "/?" + canonicalQueryString;

        String hashedPayload = BinaryUtils.toHex(hash(payload));
        return httpMethod + '\n' + canonicalURIParameter + '\n' + canonicalQueryString + '\n' + canonicalHeaders + '\n' + signedHeader + '\n' + hashedPayload;

    }

    //Step 2: Create a string to sign using sig v4
    public static String createStringToSign(String dateTime, String canonicalRequest, String accessKey, String date, String region) throws Exception {
        String credentialScope = date + "/" + region + "/" + serviceName + "/aws4_request";
        return algorithm + '\n' + dateTime + '\n' + credentialScope + '\n' + BinaryUtils.toHex(hash(canonicalRequest));

    }

    //Step 3: Calculate signature
    /**
     * Step 3 of the &AWS; Signature version 4 calculation. It involves deriving
     * the signing key and computing the signature. Refer to
     * http://docs.aws.amazon
     * .com/general/latest/gr/sigv4-calculate-signature.html
     */
    public static byte[] calculateSignature(String stringToSign,
                                            byte[] signingKey) {
        return sign(stringToSign.getBytes(Charset.forName("UTF-8")), signingKey,
                SigningAlgorithm.HmacSHA256);
    }

    public static byte[] sign(byte[] data, byte[] key,
                          SigningAlgorithm algorithm) throws SdkClientException {
        try {
            Mac mac = algorithm.getMac();
            mac.init(new SecretKeySpec(key, algorithm.toString()));
            return mac.doFinal(data);
        } catch (Exception e) {
            throw new SdkClientException(
                    "Unable to calculate a request signature: "
                            + e.getMessage(), e);
        }
    }

    public static byte[] newSigningKey(String secretKey,
                                   String dateStamp, String regionName, String serviceName) {
        byte[] kSecret = ("AWS4" + secretKey).getBytes(Charset.forName("UTF-8"));
        byte[] kDate = sign(dateStamp, kSecret, SigningAlgorithm.HmacSHA256);
        byte[] kRegion = sign(regionName, kDate, SigningAlgorithm.HmacSHA256);
        byte[] kService = sign(serviceName, kRegion,
                SigningAlgorithm.HmacSHA256);
        return sign(AWS4_TERMINATOR, kService, SigningAlgorithm.HmacSHA256);
    }

    public static byte[] sign(String stringData, byte[] key,
                       SigningAlgorithm algorithm) throws SdkClientException {
        try {
            byte[] data = stringData.getBytes(UTF8);
            return sign(data, key, algorithm);
        } catch (Exception e) {
            throw new SdkClientException(
                    "Unable to calculate a request signature: "
                            + e.getMessage(), e);
        }
    }

    //Step 4: append the signature
    public static String appendSignature(String signature) {
        return requestWithoutSignature + "&X-Amz-Signature=" + signature;
    }

    public static byte[] hash(String s) throws Exception {
        try {
            MessageDigest md = MessageDigest.getInstance("SHA-256");
            md.update(s.getBytes(UTF8));
            return md.digest();
        } catch (Exception e) {
            throw new SdkClientException(
                    "Unable to compute hash while signing request: "
                            + e.getMessage(), e);
        }
    }
}
```

## Menghubungkan ke klaster DB
<a name="UsingWithRDS.IAMDBAuth.Connecting.Java.AuthToken.Connect"></a>

Contoh kode berikut menunjukkan cara membuat token autentikasi, lalu menggunakannya untuk menghubungkan ke klaster yang menjalankan Aurora MySQL. 

Untuk menjalankan contoh kode ini, Anda memerlukan [AWS SDK untuk Java](https://aws.amazon.com/sdk-for-java/), ditemukan di AWS situs. Selain itu, Anda memerlukan hal berikut:
+ MySQL Connector/J. Contoh kode ini diuji dengan `mysql-connector-java-5.1.33-bin.jar`.
+ Sertifikat perantara untuk Amazon Aurora yang khusus untuk AWS suatu Wilayah. (Untuk informasi selengkapnya, lihat [Menggunakan SSL/TLS untuk mengenkripsi koneksi ke ](UsingWithRDS.SSL.md).) Saat runtime, pemuat kelas mencari sertifikat di direktori yang sama seperti contoh kode Java ini, sehingga pemuat kelas dapat menemukannya.
+ Ubah nilai variabel berikut sesuai kebutuhan:
  + `RDS_INSTANCE_HOSTNAME` – Nama host klaster DB yang ingin Anda akses.
  + `RDS_INSTANCE_PORT` – Nomor port yang digunakan untuk menghubungkan ke klaster DB PostgreSQL Anda.
  + `REGION_NAME`— AWS Wilayah tempat cluster DB berjalan.
  + `DB_USER` – Akun basis data yang ingin Anda akses.
  + `SSL_CERTIFICATE`— Sertifikat SSL untuk Amazon Aurora yang khusus untuk suatu Wilayah. AWS 

    Untuk mengunduh sertifikat untuk Wilayah AWS Anda, lihat [Menggunakan SSL/TLS untuk mengenkripsi koneksi ke ](UsingWithRDS.SSL.md). Tempatkan sertifikat SSL di direktori yang sama dengan file program Java ini, sehingga pemuat kelas dapat menemukan sertifikat saat runtime.

Contoh kode ini memperoleh AWS kredensil dari rantai penyedia [kredensi default](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/credentials.html#credentials-default).

**catatan**  
Tentukan kata sandi untuk `DEFAULT_KEY_STORE_PASSWORD` selain prompt yang ditampilkan di sini sebagai praktik terbaik keamanan.

```
package com.amazonaws.samples;

import com.amazonaws.services.rds.auth.RdsIamAuthTokenGenerator;
import com.amazonaws.services.rds.auth.GetIamAuthTokenRequest;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.auth.DefaultAWSCredentialsProviderChain;
import com.amazonaws.auth.AWSStaticCredentialsProvider;

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.security.KeyStore;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Properties;

import java.net.URL;

public class IAMDatabaseAuthenticationTester {
    //&AWS; Credentials of the IAM user with policy enabling IAM Database Authenticated access to the db by the db user.
    private static final DefaultAWSCredentialsProviderChain creds = new DefaultAWSCredentialsProviderChain();
    private static final String AWS_ACCESS_KEY = creds.getCredentials().getAWSAccessKeyId();
    private static final String AWS_SECRET_KEY = creds.getCredentials().getAWSSecretKey();

    //Configuration parameters for the generation of the IAM Database Authentication token
    private static final String RDS_INSTANCE_HOSTNAME = "rdsmysql.123456789012.us-west-2.rds.amazonaws.com";
    private static final int RDS_INSTANCE_PORT = 3306;
    private static final String REGION_NAME = "us-west-2";
    private static final String DB_USER = "jane_doe";
    private static final String JDBC_URL = "jdbc:mysql://" + RDS_INSTANCE_HOSTNAME + ":" + RDS_INSTANCE_PORT;

    private static final String SSL_CERTIFICATE = "rds-ca-2019-us-west-2.pem";

    private static final String KEY_STORE_TYPE = "JKS";
    private static final String KEY_STORE_PROVIDER = "SUN";
    private static final String KEY_STORE_FILE_PREFIX = "sys-connect-via-ssl-test-cacerts";
    private static final String KEY_STORE_FILE_SUFFIX = ".jks";
    private static final String DEFAULT_KEY_STORE_PASSWORD = "changeit";

    public static void main(String[] args) throws Exception {
        //get the connection
        Connection connection = getDBConnectionUsingIam();

        //verify the connection is successful
        Statement stmt= connection.createStatement();
        ResultSet rs=stmt.executeQuery("SELECT 'Success!' FROM DUAL;");
        while (rs.next()) {
        	    String id = rs.getString(1);
            System.out.println(id); //Should print "Success!"
        }

        //close the connection
        stmt.close();
        connection.close();
        
        clearSslProperties();
        
    }

    /**
     * This method returns a connection to the db instance authenticated using IAM Database Authentication
     * @return
     * @throws Exception
     */
    private static Connection getDBConnectionUsingIam() throws Exception {
        setSslProperties();
        return DriverManager.getConnection(JDBC_URL, setMySqlConnectionProperties());
    }

    /**
     * This method sets the mysql connection properties which includes the IAM Database Authentication token
     * as the password. It also specifies that SSL verification is required.
     * @return
     */
    private static Properties setMySqlConnectionProperties() {
        Properties mysqlConnectionProperties = new Properties();
        mysqlConnectionProperties.setProperty("verifyServerCertificate","true");
        mysqlConnectionProperties.setProperty("useSSL", "true");
        mysqlConnectionProperties.setProperty("user",DB_USER);
        mysqlConnectionProperties.setProperty("password",generateAuthToken());
        return mysqlConnectionProperties;
    }

    /**
     * This method generates the IAM Auth Token.
     * An example IAM Auth Token would look like follows:
     * btusi123---cmz7kenwo2ye---rds---cn-north-1.amazonaws.com.rproxy.goskope.com.cn:3306/?Action=connect&DBUser=iamtestuser&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20171003T010726Z&X-Amz-SignedHeaders=host&X-Amz-Expires=899&X-Amz-Credential=AKIAPFXHGVDI5RNFO4AQ%2F20171003%2Fcn-north-1%2Frds-db%2Faws4_request&X-Amz-Signature=f9f45ef96c1f770cdad11a53e33ffa4c3730bc03fdee820cfdf1322eed15483b
     * @return
     */
    private static String generateAuthToken() {
        BasicAWSCredentials awsCredentials = new BasicAWSCredentials(AWS_ACCESS_KEY, AWS_SECRET_KEY);

        RdsIamAuthTokenGenerator generator = RdsIamAuthTokenGenerator.builder()
                .credentials(new AWSStaticCredentialsProvider(awsCredentials)).region(REGION_NAME).build();
        return generator.getAuthToken(GetIamAuthTokenRequest.builder()
                .hostname(RDS_INSTANCE_HOSTNAME).port(RDS_INSTANCE_PORT).userName(DB_USER).build());
    }

    /**
     * This method sets the SSL properties which specify the key store file, its type and password:
     * @throws Exception
     */
    private static void setSslProperties() throws Exception {
        System.setProperty("javax.net.ssl.trustStore", createKeyStoreFile());
        System.setProperty("javax.net.ssl.trustStoreType", KEY_STORE_TYPE);
        System.setProperty("javax.net.ssl.trustStorePassword", DEFAULT_KEY_STORE_PASSWORD);
    }

    /**
     * This method returns the path of the Key Store File needed for the SSL verification during the IAM Database Authentication to
     * the db instance.
     * @return
     * @throws Exception
     */
    private static String createKeyStoreFile() throws Exception {
        return createKeyStoreFile(createCertificate()).getPath();
    }

    /**
     *  This method generates the SSL certificate
     * @return
     * @throws Exception
     */
    private static X509Certificate createCertificate() throws Exception {
        CertificateFactory certFactory = CertificateFactory.getInstance("X.509");
        URL url = new File(SSL_CERTIFICATE).toURI().toURL();
        if (url == null) {
            throw new Exception();
        }
        try (InputStream certInputStream = url.openStream()) {
            return (X509Certificate) certFactory.generateCertificate(certInputStream);
        }
    }

    /**
     * This method creates the Key Store File
     * @param rootX509Certificate - the SSL certificate to be stored in the KeyStore
     * @return
     * @throws Exception
     */
    private static File createKeyStoreFile(X509Certificate rootX509Certificate) throws Exception {
        File keyStoreFile = File.createTempFile(KEY_STORE_FILE_PREFIX, KEY_STORE_FILE_SUFFIX);
        try (FileOutputStream fos = new FileOutputStream(keyStoreFile.getPath())) {
            KeyStore ks = KeyStore.getInstance(KEY_STORE_TYPE, KEY_STORE_PROVIDER);
            ks.load(null);
            ks.setCertificateEntry("rootCaCertificate", rootX509Certificate);
            ks.store(fos, DEFAULT_KEY_STORE_PASSWORD.toCharArray());
        }
        return keyStoreFile;
    }
    
    /**
     * This method clears the SSL properties.
     * @throws Exception
     */
    private static void clearSslProperties() throws Exception {
           System.clearProperty("javax.net.ssl.trustStore");
           System.clearProperty("javax.net.ssl.trustStoreType");
           System.clearProperty("javax.net.ssl.trustStorePassword"); 
    }
    
}
```

Jika Anda ingin terhubung ke klaster DB melalui proksi, lihat [Menghubungkan ke database menggunakan otentikasi IAM](rds-proxy-connecting.md#rds-proxy-connecting-iam).

# Menghubungkan ke cluster DB Anda menggunakan otentikasi IAM dan AWS SDK untuk Python (Boto3)
<a name="UsingWithRDS.IAMDBAuth.Connecting.Python"></a>

Anda dapat terhubung ke dengan seperti yang dijelaskan berikut. AWS SDK untuk Python (Boto3) 

**Prasyarat**  
Berikut adalah prasyarat untuk menghubungkan ke klaster DB menggunakan autentikasi IAM:
+ [Mengaktifkan dan menonaktifkan autentikasi basis data IAM](UsingWithRDS.IAMDBAuth.Enabling.md)
+ [Membuat dan menggunakan kebijakan IAM untuk akses basis data IAM](UsingWithRDS.IAMDBAuth.IAMPolicy.md)
+ [Membuat akun basis data menggunakan autentikasi IAM](UsingWithRDS.IAMDBAuth.DBAccounts.md)

Selain itu, pastikan pustaka yang diimpor dalam kode sampel ada di sistem Anda.

**Contoh**  
Contoh kode ini menggunakan profil untuk kredensial bersama. Untuk informasi tentang kredensi yang menentukan, lihat [Kredensial](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html) dalam dokumentasi. AWS SDK untuk Python (Boto3) 

Contoh kode berikut ini menunjukkan cara membuat token autentikasi, lalu menggunakannya untuk menghubungkan ke klaster DB. 

Untuk menjalankan contoh kode ini, Anda memerlukan [AWS SDK untuk Python (Boto3)](https://aws.amazon.com/sdk-for-python/), ditemukan di AWS situs.

Ubah nilai variabel berikut sesuai kebutuhan:
+ `ENDPOINT` – Titik akhir klaster DB yang ingin Anda akses
+ `PORT` – Nomor port yang digunakan untuk menghubungkan ke klaster DB Anda
+ `USER` – Akun basis data yang ingin Anda akses
+ `REGION`— AWS Wilayah tempat cluster DB berjalan
+ `DBNAME` – Basis data yang ingin Anda akses
+ `SSLCERTIFICATE` – Jalur lengkap ke sertifikat SSL untuk Amazon Aurora

  Untuk `ssl_ca`, tentukan sertifikat SSL. Untuk mengunduh sertifikat SSL, lihat [Menggunakan SSL/TLS untuk mengenkripsi koneksi ke ](UsingWithRDS.SSL.md).

**catatan**  
Anda tidak dapat menggunakan data DNS Route 53 kustom sebagai pengganti titik akhir klaster DB untuk menghasilkan token autentikasi.

Kode ini terhubung ke klaster DB Aurora MySQL.

Sebelum menjalankan kode ini, instal driver PyMy SQL dengan mengikuti instruksi dalam Indeks [Paket Python](https://pypi.org/project/PyMySQL/).

```
import pymysql
import sys
import boto3
import os

ENDPOINT="mysqlcluster.cluster-123456789012.us-east-1.rds.amazonaws.com"
PORT="3306"
USER="jane_doe"
REGION="us-east-1"
DBNAME="mydb"
os.environ['LIBMYSQL_ENABLE_CLEARTEXT_PLUGIN'] = '1'

#gets the credentials from .aws/credentials
session = boto3.Session(profile_name='default')
client = session.client('rds')

token = client.generate_db_auth_token(DBHostname=ENDPOINT, Port=PORT, DBUsername=USER, Region=REGION)

try:
    conn =  pymysql.connect(auth_plugin_map={'mysql_clear_password':None},host=ENDPOINT, user=USER, password=token, port=PORT, database=DBNAME, ssl_ca='SSLCERTIFICATE', ssl_verify_identity=True, ssl_verify_cert=True)
    cur = conn.cursor()
    cur.execute("""SELECT now()""")
    query_results = cur.fetchall()
    print(query_results)
except Exception as e:
    print("Database connection failed due to {}".format(e))
```

Kode ini terhubung ke klaster DB Aurora PostgreSQL.

Sebelum menjalankan kode ini, instal `psycopg2` dengan mengikuti petunjuk dalam [dokumentasi Psycopg](https://pypi.org/project/psycopg2/).

```
import psycopg2
import sys
import boto3
import os

ENDPOINT="postgresmycluster.cluster-123456789012.us-east-1.rds.amazonaws.com"
PORT="5432"
USER="jane_doe"
REGION="us-east-1"
DBNAME="mydb"

#gets the credentials from .aws/credentials
session = boto3.Session(profile_name='RDSCreds')
client = session.client('rds')

token = client.generate_db_auth_token(DBHostname=ENDPOINT, Port=PORT, DBUsername=USER, Region=REGION)

try:
    conn = psycopg2.connect(host=ENDPOINT, port=PORT, database=DBNAME, user=USER, password=token, sslrootcert="SSLCERTIFICATE")
    cur = conn.cursor()
    cur.execute("""SELECT now()""")
    query_results = cur.fetchall()
    print(query_results)
except Exception as e:
    print("Database connection failed due to {}".format(e))
```

Jika Anda ingin terhubung ke klaster DB melalui proksi, lihat [Menghubungkan ke database menggunakan otentikasi IAM](rds-proxy-connecting.md#rds-proxy-connecting-iam).

# Pemecahan masalah untuk otentikasi IAM DB
<a name="UsingWithRDS.IAMDBAuth.Troubleshooting"></a>

Berikut ini, Anda dapat menemukan ide pemecahan masalah untuk beberapa masalah otentikasi IAM DB umum dan informasi tentang CloudWatch log dan metrik untuk otentikasi IAM DB.

## Mengekspor log kesalahan otentikasi IAM DB ke Log CloudWatch
<a name="UsingWithRDS.IAMDBAuth.Troubleshooting.ErrorLogs"></a>

Log kesalahan otentikasi IAM DB disimpan di host database, dan Anda dapat mengekspor log ini ke akun CloudWatch Log Anda. Gunakan log dan metode remediasi di halaman ini untuk memecahkan masalah autentikasi IAM DB.

Anda dapat mengaktifkan ekspor log ke CloudWatch Log dari konsol AWS CLI, dan RDS API. Untuk petunjuk konsol, lihat[Menerbitkan log database ke Amazon CloudWatch Logs](USER_LogAccess.Procedural.UploadtoCloudWatch.md).

Untuk mengekspor log kesalahan autentikasi IAM DB Anda ke CloudWatch Log saat membuat cluster DB dari AWS CLI, gunakan perintah berikut:

```
aws rds create-db-cluster --db-cluster-identifier mydbinstance \
--region us-east-1 \
--engine postgres \
--engine-version 16 \
--master-username master \
--master-user-password password \
--publicly-accessible \
--enable-iam-database-authentication \
--enable-cloudwatch-logs-exports=iam-db-auth-error
```

Untuk mengekspor log kesalahan autentikasi IAM DB Anda ke CloudWatch Log saat memodifikasi cluster DB dari AWS CLI, gunakan perintah berikut:

```
aws rds modify-db-cluster --db-cluster-identifier mydbcluster \
--region us-east-1 \
--cloudwatch-logs-export-configuration '{"EnableLogTypes":["iam-db-auth-error"]}'
```

Untuk memverifikasi apakah cluster DB Anda mengekspor log otentikasi IAM DB ke CloudWatch Log, periksa apakah `EnabledCloudwatchLogsExports` parameter diatur ke `iam-db-auth-error` dalam output untuk perintah tersebut. `describe-db-instances`

```
aws rds describe-db-cluster --region us-east-1 --db-cluster-identifier mydbcluster
            ...
            
             "EnabledCloudwatchLogsExports": [
                "iam-db-auth-error"
            ],
            ...
```

## Metrik otentikasi CloudWatch IAM DB
<a name="UsingWithRDS.IAMDBAuth.Troubleshooting.CWMetrics"></a>

 Amazon Aurora memberikan metrik waktu nyaris nyata tentang autentikasi IAM DB ke akun Amazon Anda. CloudWatch Tabel berikut mencantumkan metrik autentikasi IAM DB yang tersedia menggunakan: CloudWatch


| Metrik | Deskripsi | 
| --- | --- | 
|  `IamDbAuthConnectionRequests`  |  Jumlah total permintaan koneksi yang dibuat dengan otentikasi IAM DB.  | 
|  `IamDbAuthConnectionSuccess`  |  Jumlah total permintaan otentikasi IAM DB yang berhasil.  | 
|  `IamDbAuthConnectionFailure`  |  Jumlah total permintaan otentikasi IAM DB yang gagal.  | 
|  `IamDbAuthConnectionFailureInvalidToken`  | Jumlah total permintaan otentikasi IAM DB yang gagal karena token tidak valid. | 
|  `IamDbAuthConnectionFailureInsufficientPermissions`  |  Jumlah total permintaan otentikasi IAM DB yang gagal karena kebijakan atau izin yang salah.  | 
|  `IamDbAuthConnectionFailureThrottling`  |  Jumlah total permintaan otentikasi IAM DB yang gagal karena pelambatan otentikasi IAM DB.  | 
|  `IamDbAuthConnectionFailureServerError`  |  Jumlah total permintaan otentikasi IAM DB yang gagal karena kesalahan server internal dalam fitur otentikasi IAM DB.  | 

## Masalah dan solusi umum
<a name="UsingWithRDS.IAMDBAuth.Troubleshooting.IssuesSolutions"></a>

 Anda mungkin mengalami masalah berikut saat menggunakan keaslian IAM DB. Gunakan langkah-langkah remediasi dalam tabel untuk menyelesaikan masalah:


| Kesalahan | Metrik | Penyebab | Solusi | 
| --- | --- | --- | --- | 
|  `[ERROR] Failed to authenticate the connection request for user db_user because the provided token is malformed or otherwise invalid. (Status Code: 400, Error Code: InvalidToken)`  |  `IamDbAuthConnectionFailure` `IamDbAuthConnectionFailureInvalidToken`  |  Token autentiasi IAM DB dalam permintaan koneksi bukan token Sigv4a yang valid, atau tidak diformat dengan benar.  |  Periksa strategi pembuatan token Anda di aplikasi Anda. Dalam beberapa kasus, pastikan Anda meneruskan token dengan format yang valid. Memangkas token (atau pemformatan string yang salah) akan membuat token tidak valid.   | 
|  `[ERROR] Failed to authenticate the connection request for user db_user because the token age is longer than 15 minutes. (Status Code: 400, Error Code:ExpiredToken)`  |  `IamDbAuthConnectionFailure` `IamDbAuthConnectionFailureInvalidToken`  |  Token otentikasi IAM DB telah kedaluwarsa. Token hanya berlaku selama 15 menit.  |  Periksa logika penggunaan kembali token caching and/or token Anda di aplikasi Anda. Anda tidak boleh menggunakan kembali token yang lebih tua dari 15 menit.  | 
|  `[ERROR] Failed to authorize the connection request for user db_user because the IAM policy assumed by the caller 'arn:aws:sts::123456789012:assumed-role/ <RoleName>/ <RoleSession>' is not authorized to perform `rds-db:connect` on the DB instance. (Status Code: 403, Error Code:NotAuthorized)`  |  `IamDbAuthConnectionFailure` `IamDbAuthConnectionFailureInsufficientPermissions`  |  Kesalahan ini mungkin terjadi karena alasan berikut: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.IAMDBAuth.Troubleshooting.html)  |  Verifikasi bahwa and/or kebijakan peran IAM yang Anda asumsikan dalam aplikasi Anda. Pastikan Anda mengasumsikan kebijakan yang sama untuk menghasilkan token untuk terhubung ke DB.   | 
|  `[ERROR] Failed to authorize the connection request for user db_user due to IAM DB authentication throttling. (Status Code: 429, Error Code: ThrottlingException)`  |  `IamDbAuthConnectionFailure` `IamDbAuthConnectionFailureThrottling`  | Anda membuat terlalu banyak permintaan koneksi ke DB Anda dalam waktu singkat. Batas pelambatan otentikasi IAM DB adalah 200 koneksi per detik. |  Kurangi tingkat membangun koneksi baru dengan otentikasi IAM. Pertimbangkan untuk menerapkan penyatuan koneksi menggunakan RDS Proxy untuk menggunakan kembali koneksi yang sudah ada di aplikasi Anda.  | 
|  `[ERROR] Failed to authorize the connection request for user db_user due to an internal IAM DB authentication error. (Status Code: 500, Error Code: InternalError)`  |  `IamDbAuthConnectionFailure` `IamDbAuthConnectionFailureThrottling` |  Ada kesalahan internal saat mengotorisasi koneksi DB dengan otentikasi IAM DB.  |  Jangkau https://aws.amazon.com/premiumsupport/ untuk menyelidiki masalah ini.  | 

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

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

**Topics**
+ [

## Saya tidak diberi otorisasi untuk melakukan tindakan di Aurora
](#security_iam_troubleshoot-no-permissions)
+ [

## Saya tidak berwenang untuk melakukan iam: PassRole
](#security_iam_troubleshoot-passrole)
+ [

## Saya ingin mengizinkan orang di luar AWS akun saya untuk mengakses sumber daya Aurora saya
](#security_iam_troubleshoot-cross-account-access)

## Saya tidak diberi otorisasi untuk melakukan tindakan di Aurora
<a name="security_iam_troubleshoot-no-permissions"></a>

Jika Konsol Manajemen AWS memberitahu Anda bahwa Anda tidak berwenang untuk melakukan tindakan, maka Anda harus menghubungi administrator Anda untuk bantuan. Administrator Anda adalah orang yang memberi Anda kredensial masuk.

Contoh kesalahan berikut terjadi ketika `mateojackson` pengguna mencoba menggunakan konsol untuk melihat detail tentang *widget* tetapi tidak memiliki `rds:GetWidget` izin.

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

Dalam hal ini, Mateo meminta administratornya untuk memperbarui kebijakannya untuk mengizinkan dia mengakses sumber daya `my-example-widget` menggunakan tindakan `rds:GetWidget`.

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

Jika Anda menerima kesalahan bahwa Anda tidak diberi otorisasi untuk melakukan tindakan `iam:PassRole`, Anda harus menghubungi administrator untuk mendapatkan bantuan. Administrator Anda adalah orang yang memberi Anda kredensial masuk. Minta orang tersebut untuk memperbarui kebijakan Anda agar Anda dapat meneruskan peran ke Aurora.

Beberapa AWS layanan 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 saat pengguna bernama `marymajor` mencoba menggunakan konsol untuk melakukan tindakan di Aurora. Namun, tindakan ini mengharuskan layanan memiliki izin yang diberikan oleh peran layanan. Mary tidak memiliki izin untuk meneruskan peran tersebut ke layanan.

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

Dalam kasus ini, Mary meminta administrator untuk memperbarui kebijakannya agar dia dapat melakukan tindakan `iam:PassRole`.

## Saya ingin mengizinkan orang di luar AWS akun saya untuk mengakses sumber daya Aurora 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 hal berikut:
+ Untuk mempelajari apakah Aurora mendukung fitur ini, lihat [Cara kerja Amazon Aurora dengan IAM](security_iam_service-with-iam.md).
+ Untuk mempelajari cara menyediakan akses ke sumber daya Anda di seluruh AWS akun yang Anda miliki, lihat [Menyediakan akses ke pengguna IAM di AWS akun lain 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 ke AWS akun pihak ketiga, lihat [Menyediakan akses ke AWS akun yang dimiliki oleh pihak ketiga](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_third-party.html) di *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 penggunaan kebijakan peran dan kebijakan berbasis sumber daya untuk akses lintas akun, lihat [Bagaimana peran IAM berbeda dari kebijakan berbasis sumber daya](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_compare-resource-policies.html) dalam *Panduan Pengguna IAM*.