

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

# Otentikasi menggunakan identitas IAM
<a name="iam-identity-auth"></a>

Pengguna dan aplikasi Amazon DocumentDB dapat menggunakan pengguna dan peran IAM untuk mengautentikasi ke dalam cluster Amazon DocumentDB. Autentikasi Amazon DocumentDB IAM adalah metode otentikasi tanpa kata sandi. Selain itu, aplikasi klien tidak mengirim rahasia kata sandi ke cluster Amazon DocumentDB saat menggunakan IAM. roles/users Sebaliknya, koneksi klien diautentikasi dengan AWS STS menggunakan token keamanan sementara. Non-administrative pengguna dan aplikasi sekarang dapat menggunakan ARN identitas IAM yang sama saat menghubungkan ke cluster Amazon DocumentDB yang berbeda dan layanan lainnya. AWS 

Anda juga dapat memilih untuk menggunakan autentikasi berbasis kata sandi dan IAM untuk mengautentikasi pengguna dan aplikasi ke cluster Amazon DocumentDB. Autentikasi IAM hanya tersedia di cluster berbasis instans Amazon DocumentDB versi 5.0. Autentikasi IAM menggunakan ARN identitas IAM tidak didukung untuk pengguna utama Amazon DocumentDB.

**catatan**  
Pengguna utama hanya dapat diautentikasi menggunakan otentikasi berbasis kata sandi yang ada.

**Topics**
+ [Memulai otentikasi menggunakan pengguna dan peran IAM](#iam-identity-auth-get-started)
+ [Melakukan konfigurasi AWS menghitung jenis untuk mengautentikasi ke Amazon DocumentDB menggunakan AWS IAM](#iam-identity-auth-compute-types)
+ [Memantau permintaan otentikasi IAM](#iam-identity-auth-monitoring)
+ [Menggunakan otentikasi IAM](#iam-identity-auth-using)
+ [Driver yang mendukung IAM](#iam-identity-drivers)
+ [FAQ otentikasi identitas IAM](#iam-identity-auth-faq)

## Memulai otentikasi menggunakan pengguna dan peran IAM
<a name="iam-identity-auth-get-started"></a>

Pengguna Amazon DocumentDB dan peran dengan identitas IAM dibuat dan dikelola dalam database. `$external` 

**Membuat pengguna**

Connect sebagai pengguna utama, lalu buat pengguna dan peran IAM:

```
use $external;
db.createUser(
    {
        user: "arn:aws:iam::123456789123:user/iamuser",
        mechanisms: ["MONGODB-AWS"],
        roles: [ { role: "readWrite", db: "readWriteDB" } ]
    }
);
```

Atau, tambahkan pengguna Amazon DocumentDB menggunakan peran IAM:

```
use $external;
db.createUser(
    {
        user: "arn:aws:iam::123456789123:role/iamrole",
        mechanisms: ["MONGODB-AWS"],
        roles: [ { role: "readWrite", db: "readWriteDB" } ]
    }
);
```

**Memodifikasi pengguna atau peran IAM**

Memodifikasi pengguna IAM yang ada:

```
use $external;
db.updateUser(
  "arn:aws:iam::123456789123:user/iamuser",
  { 
    roles: [ { role: "read", db: "readDB" } ] 
  }
);
```

Memodifikasi peran IAM yang ada:

```
use $external;
db.updateUser(
  "arn:aws:iam::123456789123:role/iamrole",
  { 
    roles: [ { role: "read", db: "readDB" } ] 
  }
);
```

Untuk memberikan atau mencabut peran dari pengguna IAM:

```
use $external;
db.grantRolesToUser(
  "arn:aws:iam::123456789123:user/iamuser", 
  [ { db: "admin", role: "readWriteAnyDatabase" } ]
);
```

```
use $external;
db.revokeRolesFromUser(
  "arn:aws:iam::123456789123:user/iamuser", 
  [ { db: "admin", role: "readWriteAnyDatabase" } ]
);
```

Untuk memberikan atau mencabut peran dari peran IAM:

```
use $external;
db.grantRolesToUser(
  "arn:aws:iam::123456789123:user/iamrole", 
  [ { db: "admin", role: "readWriteAnyDatabase" } ]
);
```

```
use $external;
db.revokeRolesFromUser(
  "arn:aws:iam::123456789123:user/iamrole", 
  [ { db: "admin", role: "readWriteAnyDatabase" } ]
);
```

**Menjatuhkan pengguna atau peran IAM**

Untuk menjatuhkan pengguna IAM yang ada:

```
use $external;
db.dropUser("arn:aws:iam::123456789123:user/iamuser");
```

Untuk menghapus peran IAM yang ada:

```
use $external;
db.dropUser("arn:aws:iam::123456789123:role/iamrole");
```

**Konfigurasikan URI koneksi untuk mengautentikasi menggunakan AWS IAM**

Untuk mengautentikasi menggunakan AWS IAM, gunakan parameter URI berikut: `authSource` as `$external` dan `authMechanism` as. `MONGODB-AWS` Jika Anda menggunakan pengguna IAM, bidang nama pengguna dan kata sandi masing-masing diganti dengan Kunci Akses dan Kunci Rahasia. Jika Anda mengasumsikan peran IAM, dilampirkan ke lingkungan tempat Anda berada (misalnya, AWS Lambda fungsi, instans Amazon EC2). Anda tidak perlu secara khusus memberikan kredensi apa pun saat mengautentikasi menggunakan mekanisme. `MONGODB-AWS` Jika Anda menggunakan driver MongoDB yang mendukung `MONGODB-AWS` mekanisme otentikasi, driver juga memiliki kemampuan untuk mengambil kredensyal peran IAM dari instance komputasi (misalnya, Amazon EC2, fungsi Lambda, dan lainnya). Contoh berikut menggunakan shell mongo untuk mengautentikasi menggunakan `MONGODB-AWS` dengan meneruskan Kunci Akses dan Kunci Rahasia (dari pengguna IAM) secara manual untuk menunjukkan otentikasi terhadap Amazon DocumentDB.

Contoh berikut menggunakan kode Python untuk mengautentikasi menggunakan `MONGODB-AWS` tanpa secara eksplisit meneruskan kredensyal apa pun (menggunakan Peran IAM yang dilampirkan ke lingkungan) untuk menunjukkan otentikasi terhadap Amazon DocumentDB.

```
##Create a MongoDB client, open a connection to Amazon DocumentDB using an IAM role
    client = pymongo.MongoClient(‘mongodb://<DocDBEndpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false&authSource=%24external&authMechanism=MONGODB-AWS')
```

Contoh berikut menggunakan shell mongo untuk mengautentikasi menggunakan `MONGODB-AWS` mekanisme dengan meneruskan Kunci Akses dan Kunci Rahasia (dari pengguna IAM) secara manual untuk menunjukkan otentikasi terhadap Amazon DocumentDB.

```
$ mongo 'mongodb://<access_key>:<secret_key>@<cluster_endpoint>:<db_port>/test?authSource=%24external&authMechanism=MONGODB-AWS'
```

Contoh berikut menggunakan shell mongo untuk mengautentikasi penggunaan `MONGODB-AWS` tanpa secara eksplisit meneruskan kredensyal apa pun (menggunakan Peran IAM yang dilampirkan ke lingkungan) untuk menunjukkan otentikasi terhadap Amazon DocumentDB.

```
$ mongo 'mongodb://<cluster_endpoint>:<db_port>/test?authSource=%24external&authMechanism=MONGODB-AWS'
```

## Melakukan konfigurasi AWS menghitung jenis untuk mengautentikasi ke Amazon DocumentDB menggunakan AWS IAM
<a name="iam-identity-auth-compute-types"></a>

**Menggunakan Amazon EC2//AWS LambdaAWS Fargate**

Amazon EC2 menggunakan variabel lingkungan berikut. Jika Anda memiliki peran IAM yang dilampirkan ke instans EC2 atau peran IAM eksekusi yang terkait dengan fungsi Lambda atau tugas Amazon ECS, maka variabel-variabel ini akan diisi secara otomatis dan driver dapat mengambil nilai-nilai ini dari lingkungan:

```
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_SESSION_TOKEN
```

Untuk informasi selengkapnya tentang variabel lingkungan, lihat [Menggunakan variabel lingkungan Lambda](https://docs.aws.amazon.com/lambda/latest/dg/configuration-envvars.html) di Panduan *AWS Lambda Pengembang*.

**Menggunakan Amazon EKS**

Menetapkan peran ke pod Amazon Elastic Kubernetes Service (Amazon EKS) Anda akan secara otomatis menyiapkan dua variabel lingkungan berikut:

```
AWS_WEB_IDENTITY_TOKEN_FILE - path of web identity token file
AWS_ROLE_ARN - Name of IAM role to connect with
```

Dengan bantuan variabel-variabel ini, ambil peran secara manual dari kode Anda menggunakan panggilan AWS SDK untuk`AssumeRoleWithWebIdentity`:
+ Hilangkan `ProviderID` parameternya.
+ Temukan nilai `WebIdentityToken` parameter dalam file yang dijelaskan dalam variabel `AWS_WEB_IDENTITY_TOKEN_FILE` lingkungan.

Untuk info selengkapnya tentang Amazon EKS, lihat [Apa itu Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html) di *Panduan Pengguna Amazon EKS*.

## Memantau permintaan otentikasi IAM
<a name="iam-identity-auth-monitoring"></a>

**Menggunakan audit Amazon DocumentDB**

Buka folder log audit di Amazon CloudWatch, dan gunakan pola pencarian yang berbeda untuk mendapatkan log untuk otentikasi IAM. Misalnya, gunakan `{ $.param.mechanism = "MONGODB-AWS" }` sebagai pola pencarian untuk “Cari semua aliran log”.

Untuk info selengkapnya tentang peristiwa yang didukung dalam audit, lihat[Mengaudit acara Amazon DocumentDB](event-auditing.md).

**Menggunakan CloudWatch metrik Amazon**

**`StsGetCallerIdentityCalls`**: Metrik ini menunjukkan berapa banyak `GetCallerIdentity` panggilan yang dilakukan instance Amazon DocumentDB ke endpoint AWS Security Token Service AWS STS regionalized (). Lihat spesifikasi `MONGODB-AWS` otentikasi tentang mengapa instance database perlu melakukan panggilan STS`GetCallerIdentity`.

## Menggunakan otentikasi IAM
<a name="iam-identity-auth-using"></a>

Jika Anda tidak ingin mengelola nama pengguna dan kata sandi di database Anda sendiri, Anda dapat menggunakan otentikasi IAM. Autentikasi IAM hanya tersedia di cluster berbasis instans Amazon DocumentDB versi 5.0.

Autentikasi IAM memiliki ketergantungan pada layanan STS. Kami menyarankan Anda mengevaluasi apakah Anda dapat menurunkan tingkat koneksi Anda ketika Anda menggunakan otentikasi IAM untuk koneksi dan mendapatkan pengecualian pelambatan STS.

*Untuk kuota IAM, lihat [IAM dan AWS STS kuota di Panduan Pengguna](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html) IAM.*

## Driver yang mendukung IAM
<a name="iam-identity-drivers"></a>

Driver yang mendukung Amazon DocumentDB 5.0 dan mekanisme otentikasi harus bekerja dengan `MONGODB-AWS` implementasi autentikasi IAM di Amazon DocumentDB. 

**penting**  
Ada batasan yang diketahui dengan Node.js driver yang lebih lama dari versi 6.13.1, yang saat ini tidak didukung oleh otentikasi identitas IAM untuk Amazon DocumentDB. Node.js driver dan alat yang menggunakan Node.js driver (misalnya, mongosh) harus ditingkatkan untuk menggunakan Node.js driver versi 6.13.1 atau lebih tinggi.

## FAQ otentikasi identitas IAM
<a name="iam-identity-auth-faq"></a>

**Apakah ada sampel yang bisa saya rujuk?**

Lihat halaman ini untuk contoh kasus penggunaan dan konfigurasi:
+ [Bagaimana pengguna manusia dapat mengautentikasi ke Amazon DocumentDB menggunakan Pengguna IAM dan Peran IAM](https://github.com/aws-samples/amazon-documentdb-samples/tree/master/samples/iam_user_sample_code)
+ [Password-less otentikasi ke Amazon DocumentDB menggunakan Peran IAM](https://github.com/aws-samples/amazon-documentdb-samples/tree/master/samples/iam_role_sample_code)

**Saya mendapatkan kesalahan saat menggunakan driver Python saya: “pymongo.errors. ConfigurationError: MONGODB-AWS otentikasi membutuhkan pymongo-auth-aws”. Bagaimana saya bisa menyelesaikan ini?**

Pastikan Anda menggunakan pernyataan berikut saat menginstal driver Python dengan otentikasi IAM:

`pip install 'pymongo[aws]'`

Ini akan menginstal AWS dependensi tambahan yang diperlukan agar otentikasi IAM berfungsi.

**Apakah koneksi saya akan terputus ketika kredensyal sementara peran IAM saya kedaluwarsa?**

 Tidak, kredensi IAM sementara hanya digunakan untuk membuat koneksi dan otentikasi. Kemudian semua otorisasi lebih lanjut terjadi di cluster Amazon DocumentDB. Bahkan jika kredensyal IAM rotate/expire, koneksi tidak akan jatuh atau basi.