跳至內容

如何處理 Amazon DocumentDB 的 IAM 型身分驗證問題?

2 分的閱讀內容
0

我想要疑難排解使用 Amazon DocumentDB (with MongoDB compatibility) 時遇到的身分驗證問題。

解決方法

**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本

如果您使用 AWS Identity and Access Management (IAM) 向 Amazon DocumentDB 進行身分驗證,則可能會收到「MongoServerError: Authentication failed」錯誤。如果您對 IAM 實體的權限設定錯誤,則在您使用 IAM 角色時,也可能會收到身分驗證錯誤。

**注意:**Amazon DocumentDB 僅在 5.0 及更新版本的叢集版本中,支援執行個體型叢集的 IAM 型身分驗證。Amazon DocumentDB 主要使用者不支援 IAM 型身分驗證。

檢閱資料庫使用者和角色組態

請完成以下步驟:

  1. 使用 MongoDB Shell,以根使用者身分登入 Amazon DocumentDB 叢集。

  2. 若要檢查您的 IAM 實體 (IAM 使用者或 IAM 角色 ARN) 是否已在 $external 資料庫中正確設定,請在 MongoDB Shell 中執行以下命令:

    use $external;
    show users;
  3. 確認您已在 $external 資料庫中註冊 IAM 使用者和 IAM 角色的 IAM ARN。也請確認您已為目標資料庫指派所需的角色和權限

驗證連線字串

當您連線到 Amazon DocumentDB 叢集時,請確認您的用戶端在連線字串中正確指定 AuthSource 和 AuthMechanism。IAM 驗證要求您使用 MONGODB-AWS 機制,並搭配 AuthSource=$external

使用 IAM 驗證連線至 MongoDB 叢集

確認您的 IAM 使用者或 IAM 角色具有存取 MongoDB 叢集的適當權限:

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

**注意:**將 access_key 替換為您的 AWS 存取金鑰 ID。將 secret_key 替換為您的 AWS 祕密金鑰。將 cluster_endpoint 替換為您的 Amazon DocumentDB 叢集端點。將 db_port 替換為您的資料庫連接埠號碼。預設資料庫連接埠號碼為 27017。

使用 AWS 環境憑證連線至 MongoDB 叢集

確認您可以使用 AWS 環境憑證連線至 MongoDB 叢集:

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

**注意:**將 cluster_endpoint 替換為您的 Amazon DocumentDB 叢集端點。將 db_port 替換為您的資料庫連接埠號碼。預設資料庫連接埠號碼為 27017。

用戶端會自動從環境擷取暫時憑證。這包含來自以下 AWS 服務角色的憑證:

  • Amazon Elastic Cloud Compute (Amazon EC2) 執行個體設定檔
  • Amazon Elastic Container Service (Amazon ECS) 任務角色
  • AWS Lambda 執行角色
  • Amazon Elastic Kubernetes Service (Amazon EKS) 服務帳戶角色。

確認 IAM 角色或 IAM 使用者在用戶端上處於使用中狀態

如果您未明確為 Amazon EC2 或 AWS Lambda 傳遞 AWS 憑證,請確認您已將 IAM 角色附加至運算資源。

如果您未明確為 Amazon EKS 傳遞 AWS 憑證,請驗證 Pod 或服務帳戶具有適當的 IAM 角色註解和對應。也請確認您已將 IAM 角色附加至運算資源。

若要檢查有效的 IAM 身分,請執行以下 get-caller-identity 命令:

aws sts get-caller-identity

輸出範例:

{
    "UserId": "AIDATOCZW5HO####T22",
    "Account": "236411349###",
    "Arn": "arn:aws:iam::`444455556666`:user/DocDBRole"
}

如果輸出與 IAM 使用者或 IAM 角色相符,則表示 $external 資料庫已正確設定您的 ARN。

**注意:**Amazon DocumentDB 不支援 6.13.1 和更早版本的 Node.js 驅動程式。若要將 Node.js 驅動程式搭配 IAM 用於 Amazon DocumentDB,您必須將 Node.js 驅動程式和工具升級到高於 6.13.1 的版本。

相關資訊

使用 IAM 身分進行驗證

AWS 官方已更新 6 個月前