使用 IAM 身分驗證 - Amazon DocumentDB

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 IAM 身分驗證

Amazon 文件資料庫使用者和應用程式可以使用 IAM 使用者和角色在 Amazon DocumentDB 叢集中進行驗證。Amazon DocumentDB IAM 身份驗證是一種無密碼的身份驗證方法,其中使用者密碼不會存放在 Amazon DocumentDB 叢集中。此外,用戶端應用程式不會將密碼密碼傳送到 Amazon DocumentDB 叢集。而是 AWS STS 使用臨時安全令牌進行身份驗證客戶端連接。非管理使用者和應用程式現在可以在連線到不同的 Amazon DocumentDB 叢集和其他服務時使用相同的 IAM 身分 ARN。 AWS

您也可以選擇使用以密碼為基礎的身份驗證和 IAM 身份驗證,向 Amazon DocumentDB 叢集驗證使用者和應用程式。IAM 身份驗證僅適用於以 Amazon DocumentDB 執行個體為基礎的叢集 5.0 版。Amazon DocumentDB 主要使用者不支援使用 IAM 身分識別 ARN 的 IAM 身分驗證。

注意

主要使用者只能使用現有以密碼為基礎的驗證進行驗證。

使用 IAM 使用者和角色開始使用身份驗證

具有 IAM 身分識別的 Amazon DocumentDB 使用者和角色是在資料庫中建立和管理的$external

建立使用者

以主要使用者身分 Connect,然後建立 IAM 使用者和角色:

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

或者,使用 IAM 角色新增 Amazon DocumentDB 使用者:

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

修改使用者

修改現有的 IAM 使用者:

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

若要授與或撤銷使用者的角色:

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

刪除用戶

若要刪除現有的 IAM 使用者:

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

設定要使用 AWS IAM 進行驗證的連線 URI

若要使用進行驗證MONGODB-AWS,請使用 authSource as $externalauthMechanism as MONGODB-AWS。使用者名稱和密碼欄位會分別由 IAM 使用者的存取金鑰和秘密金鑰取代。如果您擔任 IAM 角色,請為假設的會話指定安全令牌。如果您使用支援MONGODB-AWS驗證機制的 MongoDB 驅動程式,驅動程式也可以從運算執行個體 (例如 Amazon EC2、Lambda 函數等) 擷取 IAM 角色登入資料。下列範例使用 mongo 殼層進行驗證,方法是手動傳MONGODB-AWS遞 (IAM 使用者的) 存取金鑰和秘密金鑰,以示範針對 Amazon DocumentDB 的身份驗證。

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

設定 AWS 運算類型以使用 IAM 向 Amazon DocumentDB 進行驗證 AWS

使用 Amazon EC2

Amazon EC2 使用以下環境變量:

AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN

使用 AWS Lambda

AWS Lambda 使用下列環境變數:

AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN

如需有關環境變數的詳細資訊,請參閱AWS Lambda 開發人員指南中的使用 Lambda 環境變數

使用 Amazon EKS

Amazon Elastic Kubernetes Service(Amazon EKS)使用以下環境變量:

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

有關 Amazon EKS 的更多信息,請參閱 Amazon EKS 用戶指南中的 Amazon EKS 是什麼

監控 IAM 身份驗證請求

使用 Amazon DocumentDB 審核

轉到 Amazon 中的審核日誌文件夾 CloudWatch,然後使用不同的搜索模式獲取 IAM 身份驗證的日誌。例如,用{ $.param.mechanism = "MONGODB-AWS" }作「搜尋所有記錄資料流」的搜尋模式。

如需稽核中支援事件的詳細資訊,請參閱稽核 Amazon DocumentDB 事件

使用 Amazon CloudWatch 指標

StsGetCallerIdentityCalls:此指標顯示 Amazon DocumentDB 執行個體對區域化 () 端點進行的GetCallerIdentity呼叫次 AWS Security Token Service 數。AWS STS請參閱MONGODB-AWS驗證規格,瞭解資料庫執行個體為何需要進行 STS GetCallerIdentity 呼叫。

使用 IAM 身分驗證

當您不想在自己的資料庫中管理使用者名稱和密碼時,可以使用 IAM 身份驗證。IAM 身份驗證僅適用於以 Amazon DocumentDB 執行個體為基礎的叢集 5.0 版。

IAM 身分驗證具有 STS 服務的相依性。建議您評估在使用 IAM 身份驗證進行連線並取得 STS 節流例外狀況時,是否可以降低連線速率。

如需 IAM 配額的相關資訊,請參閱 IAM 和 AWS STS 配額

支援 IAM 驅動程式

支援 Amazon DocumentDB 5.0 和MONGODB-AWS身份驗證機制的驅動程式應該與 Amazon DocumentDB 中的 IAM 身份驗證實作搭配使用。目前 Amazon DocumentDB 不支援用於 IAM 身份驗證的 NodeJS 驅動程式存在一個已知的限制。解決限制後,NodeJS 驅動程序支持將更新。