Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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.
Accedere all'interfaccia della riga di comando di Azure.
az loginAbilitare 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.
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.
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": [] }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.
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>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_RoleRimuovere 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_RoleVisualizzare tutte le definizioni utente.
az cosmosdb mongodb user definition list --account-name <account-name> --resource-group <resource-group-name>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.myNameRimuovere 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