Sdílet prostřednictvím


Konfigurace řízení přístupu na základě role ve službě Azure Cosmos DB pro MongoDB

Azure Cosmos DB pro MongoDB poskytuje integrovaný systém řízení přístupu na základě role pro operace roviny dat. Pomocí řízení přístupu na základě role můžete autorizovat žádosti o data s jemně odstupňovanými oprávněními založenými na rolích. V této příručce se dozvíte, jak povolit řízení přístupu na základě role, vytvářet role a uživatele a ověřovat se pomocí podporovaných ovladačů.

Požadavky

  • Předplatné Azure
  • Účet služby Azure Cosmos DB pro MongoDB (verze 3.6 nebo vyšší)
  • Nejnovější verze Azure CLI

Povolení řízení přístupu na základě role

Povolte řízení přístupu na základě role ve vašem účtu Služby Azure Cosmos DB pro MongoDB.

  1. Přihlaste se k Azure CLI.

    az login
    
  2. Povolte ve svém databázovém účtu funkci řízení přístupu na základě role.

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

    Návod

    Řízení přístupu na základě role můžete také povolit na kartě Funkce na webu Azure Portal.

  3. Vytvořte databázi, ke které se uživatelé budou připojovat na webu Azure Portal.

Vytváření rolí a uživatelů

Definujte vlastní role a uživatele pro řízení přístupu k vašemu databázovému účtu.

  1. Vytvořte definici role.

    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\":[]}
    

    Návod

    Případně použijte soubor 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. Vytvořte definici uživatele s přiřazením role.

    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\"}]}
    

    Návod

    Případně použijte soubor 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"
      }]
    }
    

Ověřování pomocí ovladačů

Připojte se k databázi pomocí podporovaných ovladačů a přihlašovacích údajů řízení přístupu na základě role.

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>"
)

Provádění běžných operací

Teď proveďte některé běžné operace pro funkce řízení přístupu na základě role ve službě Azure Cosmos DB pro MongoDB.

  1. K zobrazení všech definic rolí použijte následující příkaz.

    az cosmosdb mongodb role definition list --account-name <account-name> --resource-group <resource-group-name>
    
  2. Ověřte existenci role podle jeho ID.

    az cosmosdb mongodb role definition exists --account-name <account-name> --resource-group <resource-group-name> --id test.My_Read_Only_Role
    
  3. Odeberte definici role pomocí jejího ID.

    az cosmosdb mongodb role definition delete --account-name <account-name> --resource-group <resource-group-name> --id test.My_Read_Only_Role
    
  4. Zobrazí všechny definice uživatelů.

    az cosmosdb mongodb user definition list --account-name <account-name> --resource-group <resource-group-name>
    
  5. Ověřte existenci uživatele podle jeho ID.

    az cosmosdb mongodb user definition exists --account-name <account-name> --resource-group <resource-group-name> --id test.myName
    
  6. Odeberte definici uživatele pomocí jejího ID.

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