適用於 MongoDB 的 Azure Cosmos DB 提供內建的角色型存取控制系統,用於資料平面作業。 使用角色型存取控制,結合精細的角色型權限,授權資料請求。 本指南說明如何啟用角色型存取控制、建立角色和使用者,以及使用支援的驅動程式進行驗證。
先決條件
- Azure 訂用帳戶
- Azure Cosmos DB for MongoDB 帳戶 (3.6 版或更新版本)
- 最新版本的 Azure CLI
啟用角色型存取控制
在適用於 MongoDB 的 Azure Cosmos DB 帳戶上啟用角色型存取控制。
登入 Azure CLI。
az login在您的資料庫帳戶上啟用角色型存取控制功能。
az cosmosdb create \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --kind "MongoDB" \ --capabilities "EnableMongoRoleBasedAccessControl"小提示
您也可以從 Azure 入口網站 的 [功能] 索引標籤啟用角色型存取控制。
建立資料庫供使用者在 Azure 入口網站中連線。
建立角色和使用者
定義自訂角色和使用者,以控制資料庫帳戶的存取。
建立角色定義。
az cosmosdb mongodb role definition create \ --resource-group "<resource-group-name>" \ --account-name "<account-name>" \ --body {\"Id\":\"test.My_Read_Only_Role101\",\"RoleName\":\"My_Read_Only_Role101\",\"Type\":\"CustomRole\",\"DatabaseName\":\"test\",\"Privileges\":[{\"Resource\":{\"Db\":\"test\",\"Collection\":\"test\"},\"Actions\":[\"insert\",\"find\"]}],\"Roles\":[]}小提示
或者,使用 JSON 檔案:
az cosmosdb mongodb role definition create \ --resource-group "<resource-group-name>" \ --account-name "<account-name>" \ --body @role.json{ "Id": "test.My_Read_Only_Role101", "RoleName": "My_Read_Only_Role101", "Type": "CustomRole", "DatabaseName": "test", "Privileges": [{ "Resource": { "Db": "test", "Collection": "test" }, "Actions": ["insert", "find"] }], "Roles": [] }建立具有角色指派的使用者定義。
az cosmosdb mongodb user definition create \ --resource-group "<resource-group-name>" \ --account-name "<account-name>" \ --body {\"Id\":\"test.myName\",\"UserName\":\"myName\",\"Password\":\"pass\",\"DatabaseName\":\"test\",\"CustomData\":\"Some_Random_Info\",\"Mechanisms\":\"SCRAM-SHA-256\",\"Roles\":[{\"Role\":\"My_Read_Only_Role101\",\"Db\":\"test\"}]}小提示
或者,使用 JSON 檔案:
az cosmosdb mongodb role definition create \ --resource-group "<resource-group-name>" \ --account-name "<account-name>" \ --body @role.json{ "Id": "test.myName", "UserName": "myName", "Password": "pass", "DatabaseName": "test", "CustomData": "Some_Random_Info", "Mechanisms": "SCRAM-SHA-256", "Roles": [{ "Role": "My_Read_Only_Role101", "Db": "test" }] }
使用驅動程式進行驗證
使用支援的驅動程式和角色型存取控制認證連線到您的資料庫。
from pymongo import MongoClient
client = MongoClient(
"mongodb://<YOUR_HOSTNAME>:10255/?ssl=true&replicaSet=globaldb&retrywrites=false&maxIdleTimeMS=120000",
username="<YOUR_USER>",
password="<YOUR_PASSWORD>",
authSource='<YOUR_DATABASE>',
authMechanism='SCRAM-SHA-256',
appName="<YOUR appName FROM CONNECTION STRING IN AZURE PORTAL>"
)
執行一般作業
現在,針對適用於 MongoDB 的 Azure Cosmos DB 中的角色型存取控制功能執行一些常見作業。
使用下列命令來顯示所有角色定義。
az cosmosdb mongodb role definition list --account-name <account-name> --resource-group <resource-group-name>透過角色的 ID 驗證角色的存在。
az cosmosdb mongodb role definition exists --account-name <account-name> --resource-group <resource-group-name> --id test.My_Read_Only_Role使用其ID移除角色定義。
az cosmosdb mongodb role definition delete --account-name <account-name> --resource-group <resource-group-name> --id test.My_Read_Only_Role顯示所有使用者定義。
az cosmosdb mongodb user definition list --account-name <account-name> --resource-group <resource-group-name>透過使用者的 ID 驗證使用者的存在。
az cosmosdb mongodb user definition exists --account-name <account-name> --resource-group <resource-group-name> --id test.myName使用其識別碼移除使用者定義。
az cosmosdb mongodb user definition delete --account-name <account-name> --resource-group <resource-group-name> --id test.myName