Udostępnij za pomocą


Konfigurowanie kontroli dostępu opartej na rolach w usłudze Azure Cosmos DB dla bazy danych MongoDB

Usługa Azure Cosmos DB dla bazy danych MongoDB udostępnia wbudowany system kontroli dostępu opartej na rolach na potrzeby operacji płaszczyzny danych. Użyj kontroli dostępu opartej na rolach, aby autoryzować żądania danych z precyzyjnymi uprawnieniami opartymi na rolach. W tym przewodniku przedstawiono sposób włączania kontroli dostępu opartej na rolach, tworzenia ról i użytkowników oraz uwierzytelniania przy użyciu obsługiwanych sterowników.

Wymagania wstępne

  • Subskrypcja platformy Azure
  • Konto usługi Azure Cosmos DB dla bazy danych MongoDB (wersja 3.6 lub nowsza)
  • Najnowsza wersja interfejsu wiersza polecenia platformy Azure

Włączanie kontroli dostępu opartej na rolach

Włącz kontrolę dostępu opartą na rolach na koncie usługi Azure Cosmos DB dla bazy danych MongoDB.

  1. Zaloguj się do interfejsu wiersza polecenia platformy Azure.

    az login
    
  2. Włącz możliwość kontroli dostępu opartej na rolach na koncie bazy danych.

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

    Wskazówka

    Możesz również włączyć kontrolę dostępu opartą na rolach na karcie Funkcje w witrynie Azure Portal.

  3. Utwórz bazę danych dla użytkowników, z którymi będą się łączyć w witrynie Azure Portal.

Tworzenie ról i użytkowników

Zdefiniuj role niestandardowe i użytkowników, aby kontrolować dostęp do konta bazy danych.

  1. Utwórz definicję roli.

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

    Wskazówka

    Alternatywnie użyj pliku 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. Utwórz definicję użytkownika z przypisaniem roli.

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

    Wskazówka

    Alternatywnie użyj pliku 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"
      }]
    }
    

Uwierzytelnianie za pomocą sterowników

Połącz się z bazą danych przy użyciu obsługiwanych sterowników i poświadczeń kontroli dostępu opartej na rolach.

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

Wykonywanie typowych operacji

Teraz wykonaj kilka typowych operacji na potrzeby funkcji kontroli dostępu opartej na rolach w usłudze Azure Cosmos DB dla bazy danych MongoDB.

  1. Użyj następującego polecenia, aby wyświetlić wszystkie definicje ról.

    az cosmosdb mongodb role definition list --account-name <account-name> --resource-group <resource-group-name>
    
  2. Sprawdź istnienie roli według jej identyfikatora.

    az cosmosdb mongodb role definition exists --account-name <account-name> --resource-group <resource-group-name> --id test.My_Read_Only_Role
    
  3. Usuń definicję roli przy użyciu jej identyfikatora.

    az cosmosdb mongodb role definition delete --account-name <account-name> --resource-group <resource-group-name> --id test.My_Read_Only_Role
    
  4. Wyświetl wszystkie definicje użytkownika.

    az cosmosdb mongodb user definition list --account-name <account-name> --resource-group <resource-group-name>
    
  5. Sprawdź istnienie użytkownika według jego identyfikatora.

    az cosmosdb mongodb user definition exists --account-name <account-name> --resource-group <resource-group-name> --id test.myName
    
  6. Usuń definicję użytkownika przy użyciu jego identyfikatora.

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