在MongoDB中,訪問控制列表(Access Control List,ACL)允許您定義哪些用戶或角色可以訪問特定的數據庫、集合或文檔。MongoDB的ACL是基于角色的訪問控制(Role-Based Access Control,RBAC),這意味著您可以為用戶分配一個或多個角色,這些角色決定了用戶可以進行哪些操作。
以下是在MongoDB中配置ACL的步驟:
創建用戶和角色:
db.createUser()
命令創建用戶。db.createRole()
命令創建角色。分配角色給用戶:
db.grantRolesToUser()
命令將角色分配給用戶。配置數據庫級別的訪問控制:
db.createACL()
命令來定義ACL規則。應用ACL規則:
db.setACL()
命令完成。測試訪問權限:
以下是一些示例命令:
// 創建一個名為myUser的用戶,密碼為mypassword
db.createUser({
user: "myUser",
pwd: "mypassword",
roles: [ { role: "readWrite", db: "mydatabase" } ]
});
// 創建一個名為readOnly的角色,只允許讀取操作
db.createRole({
role: "readOnly",
privileges: [
{ resource: { db: "mydatabase", collection: "" }, actions: [ "find" ] }
],
roles: []
});
// 將readOnly角色分配給myUser
db.grantRolesToUser("myUser", [ "readOnly" ]);
// 為mydatabase數據庫創建ACL規則
db.createACL([
{
user: "myUser",
roles: [ "readOnly" ]
},
{
user: "",
roles: [ "readWrite" ]
}
]);
// 將創建的ACL規則應用到mydatabase數據庫
db.setACL("mydatabase", [
{
user: "myUser",
roles: [ "readOnly" ]
},
{
user: "",
roles: [ "readWrite" ]
}
]);
請注意,MongoDB的ACL功能在MongoDB Atlas中默認是禁用的。如果您在Atlas上使用MongoDB,您需要在Atlas控制臺中手動啟用和管理ACL。此外,MongoDB的ACL配置可能會受到MongoDB版本和部署環境的影響,因此請參考您所使用的MongoDB版本的官方文檔以獲取最準確的信息。