Condividi tramite


Configurare il controllo degli accessi in base al ruolo in Azure Cosmos DB per MongoDB

Azure Cosmos DB per MongoDB offre un sistema di controllo degli accessi in base al ruolo predefinito per le operazioni del piano dati. Usare il controllo degli accessi in base al ruolo per autorizzare le richieste di dati con autorizzazioni specifiche basate sui ruoli. Questa guida illustra come abilitare il controllo degli accessi in base al ruolo, creare ruoli e utenti ed eseguire l'autenticazione con i driver supportati.

Prerequisiti

  • Una sottoscrizione di Azure
  • Un account Azure Cosmos DB per MongoDB (versione 3.6 o successiva)
  • Versione più recente dell'interfaccia della riga di comando di Azure

Abilitare il controllo degli accessi in base al ruolo

Abilitare il controllo degli accessi in base al ruolo nell'account Azure Cosmos DB per MongoDB.

  1. Accedere all'interfaccia della riga di comando di Azure.

    az login
    
  2. Abilitare la funzionalità di controllo degli accessi in base al ruolo nell'account del database.

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

    Suggerimento

    È anche possibile abilitare il controllo degli accessi in base al ruolo dalla scheda Funzionalità del portale di Azure.

  3. Creare un database a cui gli utenti si connettono nel portale di Azure.

Creare ruoli e utenti

Definire ruoli e utenti personalizzati per controllare l'accesso all'account del database.

  1. Creare una definizione di ruolo.

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

    Suggerimento

    In alternativa, usare un file 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. Creare una definizione utente con un'assegnazione di ruolo.

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

    Suggerimento

    In alternativa, usare un file 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"
      }]
    }
    

Eseguire l'autenticazione con i driver

Connettersi al database usando driver supportati e credenziali di controllo degli accessi in base al ruolo.

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

Eseguire operazioni comuni

Eseguire ora alcune operazioni comuni per le funzionalità di controllo degli accessi in base al ruolo in Azure Cosmos DB per MongoDB.

  1. Usare il comando seguente per visualizzare tutte le definizioni di ruolo.

    az cosmosdb mongodb role definition list --account-name <account-name> --resource-group <resource-group-name>
    
  2. Verificare l'esistenza di un ruolo in base al relativo ID.

    az cosmosdb mongodb role definition exists --account-name <account-name> --resource-group <resource-group-name> --id test.My_Read_Only_Role
    
  3. Rimuovere una definizione di ruolo usando il relativo ID.

    az cosmosdb mongodb role definition delete --account-name <account-name> --resource-group <resource-group-name> --id test.My_Read_Only_Role
    
  4. Visualizzare tutte le definizioni utente.

    az cosmosdb mongodb user definition list --account-name <account-name> --resource-group <resource-group-name>
    
  5. Verificare l'esistenza di un utente in base al relativo ID.

    az cosmosdb mongodb user definition exists --account-name <account-name> --resource-group <resource-group-name> --id test.myName
    
  6. Rimuovere una definizione utente usando il relativo ID.

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