View a markdown version of this page

Otentikasi menggunakan identitas IAM - Amazon DocumentDB

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

Otentikasi menggunakan identitas IAM

Pengguna dan aplikasi Amazon DocumentDB dapat menggunakan pengguna dan peran IAM untuk mengotentikasi ke dalam cluster Amazon DocumentDB. Otentikasi Amazon DocumentDB IAM adalah metode otentikasi tanpa kata sandi. Selain itu, aplikasi klien tidak mengirim rahasia kata sandi ke cluster Amazon DocumentDB saat menggunakan I roles/users AM. 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 otentikasi berbasis kata sandi dan IAM untuk mengotentikasi pengguna dan aplikasi ke cluster Amazon DocumentDB. Otentikasi IAM hanya tersedia di cluster berbasis instans Amazon DocumentDB versi 5.0. Otentikasi 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.

Memulai otentikasi menggunakan pengguna dan peran IAM

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

Membuat pengguna

Hubungkan 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

Ubah pengguna IAM yang ada:

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

Ubah 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" } ] );

Menghapus pengguna atau peran IAM

Untuk menghapus pengguna IAM yang sudah 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");

Mengkonfigurasi URI koneksi untuk diautentikasi menggunakan IAM AWS

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

Contoh berikut menggunakan kode Python untuk mengotentikasi menggunakan MONGODB-AWS tanpa secara eksplisit meneruskan kredentif apa pun (menggunakan Peran IAM yang dilampirkan ke lingkungan) untuk mendemonstrasikan 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 mengotentikasi menggunakan MONGODB-AWS mekanisme dengan meneruskan Kunci Akses dan Kunci Rahasia (dari pengguna IAM) secara manual untuk mendemonstrasikan 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 mengotentikasi menggunakan MONGODB-AWS tanpa secara eksplisit meneruskan kredentif apa pun (menggunakan Peran IAM yang dilampirkan ke lingkungan) untuk mendemonstrasikan otentikasi terhadap Amazon DocumentDB.

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

Melakukan konfigurasi AWS tipe komputasi untuk diautentikasi ke Amazon DocumentDB menggunakan AWS IAM

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, variabel ini secara otomatis diisi 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 di Panduan Peng AWS Lambda embang.

Menggunakan Amazon EKS

Menetapkan peran ke pod Amazon Elastic Kubernetes Service (Amazon EKS) Anda akan secara otomatis mengatur 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 dari kode Anda secara manual menggunakan panggilan AWS SDK untukAssumeRoleWithWebIdentity:

  • Menghilangkan ProviderID parameter.

  • Temukan nilai WebIdentityToken parameter dalam file yang dijelaskan dalam variabel AWS_WEB_IDENTITY_TOKEN_FILE lingkungan.

Untuk info lebih lanjut tentang Amazon EKS, lihat Apa itu Amazon EKS di Panduan Pengguna Amazon EKS.

Memantau permintaan otentikasi IAM

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, lihatMengaudit acara Amazon DocumentDB.

Menggunakan CloudWatch metrik Amazon

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

Menggunakan otentikasi IAM

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

Otentikasi IAM memiliki ketergantungan pada AWS Security Token Service (AWS STS). Jika Anda mendapatkan pengecualian AWS STS pelambatan saat menggunakan otentikasi IAM, turunkan kecepatan koneksi Anda.

Untuk kuota IAM, lihat IAM dan ku AWS STS ota di Panduan Pengguna IAM.

Driver yang mendukung IAM

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

penting

Ada batasan yang diketahui dengan Node.js driver yang lebih tua 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

Apakah ada sampel yang bisa saya rujuk?

Lihat halaman ini untuk contoh kasus penggunaan dan konfigurasi:

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 saat kredenSIAL sementara peran IAM saya kedaluwarsa?

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