本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
管理 Amazon DocumentDB 用戶
在 Amazon DocumentDB 中,使用者搭配密碼對叢集進行驗證。每個叢集都有在叢集建立期間建立的主要登入認證。
注意
所有在 2020 年 3 月 26 日之前建立的新使用者均獲授予 dbAdminAnyDatabase
、readWriteAnyDatabase
和 clusterAdmin
角色。建議您重新評估所有使用者並視需要修改角色,以對叢集中所有使用者強制執行最低權限。
如需詳細資訊,請參閱使用角色型存取控制進行資料庫存取。
主要和serviceadmin
使用者
新建立的 Amazon DocumentDB 叢集有兩個使用者:主要使用者和使用者。serviceadmin
主要使用者是具有權限的單一使用者,可以執行管理工作,並建立具有角色的其他使用者。當您第一次連線到 Amazon DocumentDB 叢集時,您必須使用主要登入資料進行驗證。建立 Amazon DocumentDB 叢集時,主要使用者會收到該叢集的這些管理許可,並被授與的角色。root
建立叢集時,會隱含地建立 serviceadmin
使用者。每個 Amazon DocumentDB 叢集都有一個提供管理叢集功能 AWS 的serviceadmin
使用者。您無法以 serviceadmin
身分進行登入、捨棄、重新命名、變更密碼或變更許可。任何這麼做的嘗試都會造成錯誤。
注意
無法刪除 Amazon DocumentDB 叢集的主要和使serviceadmin
用者,且無法撤銷主要使用者的root
角色。
如果您忘記主要使用者密碼,可以使用 AWS Management Console 或重設密碼 AWS CLI。
建立其他使用者
當您以主要使用者 (或具有該角色的任何使用者createUser
) 身分連線之後,您可以建立新使用者,如下所示。
db.createUser( { user: "sample-user-1", pwd: "password123", roles: [{"db":"admin", "role":"dbAdminAnyDatabase" }] } )
若要檢視使用者詳細資訊,您可以使用 show users
命令,如下所示。您另外可以使用 dropUser
命令移除使用者。如需詳細資訊,請參閱常見命令。
show users
{
"_id" : "serviceadmin",
"user" : "serviceadmin",
"db" : "admin",
"roles" : [
{
"role" : "root",
"db" : "admin"
}
]
},
{
"_id" : "myPrimaryUser",
"user" : "myPrimaryUser",
"db" : "admin",
"roles" : [
{
"role" : "root",
"db" : "admin"
}
]
},
{
"_id" : "sample-user-1",
"user" : "sample-user-1",
"db" : "admin",
"roles" : [
{
"role" : "dbAdminAnyDatabase",
"db" : "admin"
}
]
}
在此範例中,新使用者 sample-user-1
歸屬於 admin
資料庫。對於新用戶來說,總是如此。Amazon DocumentDB 沒有的概念,因此所有身份驗證都是在數據庫的上下文中執行的admin
。authenticationDatabase
建立使用者時,如果您在指定角色時省略該db
欄位,Amazon DocumentDB 會隱含地將角色歸因於發出連線的資料庫。例如,如果您的連線是針對資料庫 sample-database
發出,並執行以下命令,則使用者 sample-user-2
將建立於 admin
資料庫中,並將具有資料庫 sample-database
的 readWrite
許可。
db.createUser( { user: "sample-user-2", pwd: "password123", roles: ["readWrite"] } )
建立具有所有資料庫範圍的角色的使用者 (例如,readInAnyDatabase
) 時,您必須在建立使用者時位於 admin
資料庫內容中,或是在建立使用者時明確地陳述角色的資料庫。
要切換資料庫的內容,您可以使用下面的命令。
use admin
若要進一步了解以角色為基礎的存取控制,以及在叢集中的使用者之間強制執行最低權限,請參閱使用角色型存取控制進行資料庫存取。
自動輪替 Amazon DocumentDB 的密碼
您可以使用API呼叫 Secrets Manager 來取代程式碼中的硬式編碼認證 (包括密碼) AWS Secrets Manager,以程式設計方式擷取密碼。這有助於確保不讓某人研究您的程式碼而盜用秘密,因為秘密根本不在程式碼中。此外,您可以設定 Secrets Manager,根據您指定的排程自動輪換秘密。這可讓您以短期秘密取代長期秘密,有助於大幅降低洩漏風險。
使用 Secrets Manager,您可以自動旋轉您的 Amazon DocumentDB 密碼 (也就是秘密) 使用 Secrets Manager 提供的 AWS Lambda 功能。
如需 Amazon DocumentDB 以 AWS Secrets Manager 及與 Amazon DocumentDB 進行原生整合的詳細資訊,請參閱下列內容: