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 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 peran/pengguna IAM. Sebaliknya, koneksi klien diautentikasi dengan AWS STS menggunakan token keamanan sementara. Pengguna dan aplikasi non-administratif 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 identitas IAM tidak ARNs 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 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, melekat pada lingkungan tempat Anda berada (misalnya, AWS Lambda fungsi, EC2 contoh Amazon). 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 kredenal peran IAM dari instance komputasi (misalnya, Amazon, fungsi Lambda, dan lainnya). EC2 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 kredensi 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 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 mengautentikasi penggunaan MONGODB-AWS tanpa secara eksplisit meneruskan kredensi 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'

Mengkonfigurasi tipe AWS komputasi untuk mengautentikasi ke Amazon DocumentDB menggunakan IAM AWS

Menggunakan Amazon EC2/AWS Lambda/AWS Fargate

Amazon EC2 menggunakan variabel lingkungan berikut. Jika Anda memiliki peran IAM yang dilampirkan ke EC2 instance 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 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 untukAssumeRoleWithWebIdentity:

  • 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 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 AWS Security Token Service AWS STS regionalized (). Silakan merujuk ke spesifikasi MONGODB-AWS otentikasi tentang mengapa instance database perlu melakukan panggilan STSGetCallerIdentity.

Menggunakan otentikasi IAM

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 IAM.

Driver yang mendukung IAM

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 driver Node.js yang saat ini tidak didukung oleh otentikasi identitas IAM untuk Amazon DocumentDB. Batasan termasuk shell MongoDB terbaru, mongosh. Untuk mendukung otentikasi identitas IAM dengan Amazon DocumentDB, sebaiknya gunakan shell MongoDB 5.0. Dukungan driver Node.js akan diperbarui setelah batasan diselesaikan.

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 ketika kredensi 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 kredenal IAM berputar/kedaluwarsa, koneksi tidak akan jatuh atau basi.