Konfigurera rollbaserad åtkomstkontroll i Azure Cosmos DB för MongoDB

Azure Cosmos DB for MongoDB tillhandahåller ett inbyggt rollbaserat åtkomstkontrollsystem för dataplansåtgärder. Använd rollbaserad åtkomstkontroll för att auktorisera databegäranden med detaljerade, rollbaserade behörigheter. Den här guiden visar hur du aktiverar rollbaserad åtkomstkontroll, skapar roller och användare och autentiserar med drivrutiner som stöds.

Förutsättningar

  • En prenumeration på Azure
  • Ett Azure Cosmos DB för MongoDB-konto (version 3.6 eller senare)
  • Senaste versionen av Azure CLI

Aktivera rollbaserad åtkomstkontroll

Aktivera rollbaserad åtkomstkontroll på ditt Azure Cosmos DB för MongoDB-konto.

  1. Logga in på Azure CLI.

    az login
    
  2. Aktivera den rollbaserade åtkomstkontrollfunktionen för ditt databaskonto.

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

    Tips/Råd

    Du kan också aktivera rollbaserad åtkomstkontroll från fliken Funktioner i Azure-portalen.

  3. Skapa en databas som användarna kan ansluta till i Azure-portalen.

Skapa roller och användare

Definiera anpassade roller och användare för att styra åtkomsten till ditt databaskonto.

  1. Skapa en rolldefinition.

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

    Tips/Råd

    Du kan också använda en JSON-fil:

    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. Skapa en användardefinition med en rolltilldelning.

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

    Tips/Råd

    Du kan också använda en JSON-fil:

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

Autentisera med drivrutiner

Anslut till databasen med drivrutiner som stöds och autentiseringsuppgifter för rollbaserad åtkomstkontroll.

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

Utföra vanliga åtgärder

Utför nu några vanliga åtgärder för rollbaserade åtkomstkontrollfunktioner i Azure Cosmos DB för MongoDB.

  1. Använd följande kommando för att visa alla rolldefinitioner.

    az cosmosdb mongodb role definition list --account-name <account-name> --resource-group <resource-group-name>
    
  2. Kontrollera att det finns en roll med dess ID.

    az cosmosdb mongodb role definition exists --account-name <account-name> --resource-group <resource-group-name> --id test.My_Read_Only_Role
    
  3. Ta bort en rolldefinition med dess ID.

    az cosmosdb mongodb role definition delete --account-name <account-name> --resource-group <resource-group-name> --id test.My_Read_Only_Role
    
  4. Visa alla användardefinitioner.

    az cosmosdb mongodb user definition list --account-name <account-name> --resource-group <resource-group-name>
    
  5. Kontrollera att det finns en användare med dess ID.

    az cosmosdb mongodb user definition exists --account-name <account-name> --resource-group <resource-group-name> --id test.myName
    
  6. Ta bort en användardefinition med dess ID.

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