Freigeben über


Konfigurieren der rollenbasierten Zugriffssteuerung in Azure Cosmos DB für MongoDB

Azure Cosmos DB für MongoDB bietet ein integriertes rollenbasiertes Zugriffssteuerungssystem für Datenebenenvorgänge. Verwenden Sie die rollenbasierte Zugriffssteuerung, um Datenanforderungen mit differenzierten, rollenbasierten Berechtigungen zu autorisieren. In diesem Handbuch erfahren Sie, wie Sie rollenbasierte Zugriffssteuerung aktivieren, Rollen und Benutzer erstellen und sich bei unterstützten Treibern authentifizieren.

Voraussetzungen

  • Ein Azure-Abonnement
  • Ein Azure Cosmos DB für MongoDB-Konto (Version 3.6 oder höher)
  • Neueste Version von Azure CLI

Aktivieren der rollenbasierten Zugriffssteuerung

Aktivieren Sie die rollenbasierte Zugriffssteuerung für Ihr Azure Cosmos DB für MongoDB-Konto.

  1. Melden Sie sich bei Azure CLI an.

    az login
    
  2. Aktivieren Sie die rollenbasierte Zugriffssteuerungsfunktion für Ihr Datenbankkonto.

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

    Tipp

    Sie können die rollenbasierte Zugriffssteuerung auch über die Registerkarte "Features" im Azure-Portal aktivieren.

  3. Erstellen Sie eine Datenbank, mit der Benutzer im Azure-Portal eine Verbindung herstellen können.

Erstellen von Rollen und Benutzern

Definieren Sie benutzerdefinierte Rollen und Benutzer, um den Zugriff auf Ihr Datenbankkonto zu steuern.

  1. Erstellen Sie eine Rollendefinition.

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

    Tipp

    Alternativ können Sie eine JSON-Datei verwenden:

    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. Erstellen Sie eine Benutzerdefinition mit einer Rollenzuweisung.

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

    Tipp

    Alternativ können Sie eine JSON-Datei verwenden:

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

Authentifizieren mit Treibern

Stellen Sie mithilfe unterstützter Treiber und rollenbasierter Zugriffssteuerungsanmeldeinformationen eine Verbindung mit Ihrer Datenbank her.

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

Ausführen allgemeiner Vorgänge

Führen Sie nun einige allgemeine Vorgänge für rollenbasierte Zugriffssteuerungsfeatures in Azure Cosmos DB für MongoDB aus.

  1. Verwenden Sie den folgenden Befehl, um alle Rollendefinitionen anzuzeigen.

    az cosmosdb mongodb role definition list --account-name <account-name> --resource-group <resource-group-name>
    
  2. Überprüfen Sie das Vorhandensein einer Rolle anhand ihrer ID.

    az cosmosdb mongodb role definition exists --account-name <account-name> --resource-group <resource-group-name> --id test.My_Read_Only_Role
    
  3. Entfernen Sie eine Rollendefinition mithilfe ihrer ID.

    az cosmosdb mongodb role definition delete --account-name <account-name> --resource-group <resource-group-name> --id test.My_Read_Only_Role
    
  4. Alle Benutzerdefinitionen anzeigen.

    az cosmosdb mongodb user definition list --account-name <account-name> --resource-group <resource-group-name>
    
  5. Überprüfen Sie das Vorhandensein eines Benutzers anhand seiner ID.

    az cosmosdb mongodb user definition exists --account-name <account-name> --resource-group <resource-group-name> --id test.myName
    
  6. Entfernen Sie eine Benutzerdefinition mithilfe ihrer ID.

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