共用方式為


在適用於 MongoDB 的 Azure Cosmos DB 中設定角色型存取控制

適用於 MongoDB 的 Azure Cosmos DB 提供內建的角色型存取控制系統,用於資料平面作業。 使用角色型存取控制,結合精細的角色型權限,授權資料請求。 本指南說明如何啟用角色型存取控制、建立角色和使用者,以及使用支援的驅動程式進行驗證。

先決條件

  • Azure 訂用帳戶
  • Azure Cosmos DB for MongoDB 帳戶 (3.6 版或更新版本)
  • 最新版本的 Azure CLI

啟用角色型存取控制

在適用於 MongoDB 的 Azure Cosmos DB 帳戶上啟用角色型存取控制。

  1. 登入 Azure CLI。

    az login
    
  2. 在您的資料庫帳戶上啟用角色型存取控制功能。

    az cosmosdb create \
        --resource-group "<resource-group-name>" \
        --name "<account-name>" \
        --kind "MongoDB" \
        --capabilities "EnableMongoRoleBasedAccessControl"
    

    小提示

    您也可以從 Azure 入口網站 的 [功能] 索引標籤啟用角色型存取控制。

  3. 建立資料庫供使用者在 Azure 入口網站中連線。

建立角色和使用者

定義自訂角色和使用者,以控制資料庫帳戶的存取。

  1. 建立角色定義。

    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": []
    }
    
  2. 建立具有角色指派的使用者定義。

    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 中的角色型存取控制功能執行一些常見作業。

  1. 使用下列命令來顯示所有角色定義。

    az cosmosdb mongodb role definition list --account-name <account-name> --resource-group <resource-group-name>
    
  2. 透過角色的 ID 驗證角色的存在。

    az cosmosdb mongodb role definition exists --account-name <account-name> --resource-group <resource-group-name> --id test.My_Read_Only_Role
    
  3. 使用其ID移除角色定義。

    az cosmosdb mongodb role definition delete --account-name <account-name> --resource-group <resource-group-name> --id test.My_Read_Only_Role
    
  4. 顯示所有使用者定義。

    az cosmosdb mongodb user definition list --account-name <account-name> --resource-group <resource-group-name>
    
  5. 透過使用者的 ID 驗證使用者的存在。

    az cosmosdb mongodb user definition exists --account-name <account-name> --resource-group <resource-group-name> --id test.myName
    
  6. 使用其識別碼移除使用者定義。

    az cosmosdb mongodb user definition delete --account-name <account-name> --resource-group <resource-group-name> --id test.myName