Condividi tramite


Configurare l'autenticazione con Microsoft Entra ID per un cluster di Azure Cosmos DB vCore per MongoDB

In questo articolo, imparerai come configurare l'autenticazione di Microsoft Entra ID per un Azure Cosmos DB per MongoDB vCore. Questa guida consente di configurare un cluster vCore di Azure Cosmos DB per MongoDB per l'uso dell'autenticazione tramite Microsoft Entra ID con la tua identità utente (account al momento connesso). L'autenticazione di Microsoft Entra ID consente l'accesso sicuro e facile al database usando le identità esistenti dell'organizzazione. Questa guida illustra i passaggi per configurare l'autenticazione, registrare utenti o entità servizio e convalidare la configurazione.

Prerequisiti

  • Un cluster esistente di Azure Cosmos DB per MongoDB (vCore).

Ottenere i metadati di identità autenticata

Innanzitutto, ottieni l'identificatore univoco per l'identità attualmente connessa.

  1. Ottenere i dettagli per l'account attualmente connesso usando az ad signed-in-user.

    az ad signed-in-user show
    
  2. Il comando restituisce una risposta JSON contenente vari campi.

    {
      "@odata.context": "<https://graph.microsoft.com/v1.0/$metadata#users/$entity>",
      "businessPhones": [],
      "displayName": "Kai Carter",
      "givenName": "Kai",
      "id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
      "jobTitle": "Senior Sales Representative",
      "mail": "<kai@adventure-works.com>",
      "mobilePhone": null,
      "officeLocation": "Redmond",
      "preferredLanguage": null,
      "surname": "Carter",
      "userPrincipalName": "<kai@adventure-works.com>"
    }
    
  3. Registrare il valore della id proprietà . Questa proprietà è l'identificatore univoco per il principale e a volte viene definito ID principale. Questo valore viene usato nella serie successiva di passaggi.

Configurare un cluster esistente per l'autenticazione

Quando si crea un cluster vCore di Azure Cosmos DB per MongoDB, il cluster viene configurato per l'autenticazione nativa per impostazione predefinita. Usare l'interfaccia della riga di comando di Azure per configurare il cluster esistente per supportare l'autenticazione di Microsoft Entra ID. Quindi, configura il cluster per associare un utente alla tua identità di accesso.

  1. Ora, ottieni la proprietà authConfig dal tuo cluster esistente utilizzando az resource show.

    az resource show \
        --resource-group "<resource-group-name>" \
        --name "<cluster-name>" \
        --resource-type "Microsoft.DocumentDB/mongoClusters" \
        --query "properties.authConfig" \
        --latest-include-preview
    
  2. Osservare l'output. Se l'autenticazione dell'ID Entra di Microsoft non è configurata, l'output include solo il NativeAuth valore nella allowedModes matrice.

    {
      "allowedModes": [
        "NativeAuth"
      ]
    }
    
  3. Aggiornare quindi il cluster esistente con un'operazione HTTP PATCH aggiungendo il MicrosoftEntraID valore a allowedModes.

    az resource patch \
        --resource-group "<resource-group-name>" \
        --name "<cluster-name>" \
        --resource-type "Microsoft.DocumentDB/mongoClusters" \
        --properties '{"authConfig":{"allowedModes":["MicrosoftEntraID","NativeAuth"]}}' \
        --latest-include-preview
    

    Suggerimento

    Se si usa Azure Cloud Shell, è possibile caricare/scaricare file direttamente nella shell. Per altre informazioni, vedere File gestiti in Azure Cloud Shell.

    Inoltre, se si preferisce usare direttamente l'API REST di Azure con az rest, usare questo comando alternativo:

    az rest \
        --method "PUT" \
        --url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.DocumentDB/mongoClusters/<cluster-name>?api-version=2025-04-01-preview" \
        --body '{"location":"<cluster-region>","properties":{"authConfig":{"allowedModes":["MicrosoftEntraID","NativeAuth"]}}}'
    
  4. Verificare che la configurazione sia riuscita usando az resource show di nuovo e osservando la configurazione dell'intero cluster che include properties.authConfig.

    az resource show \
        --resource-group "<resource-group-name>" \
        --name "<cluster-name>" \
        --resource-type "Microsoft.DocumentDB/mongoClusters" \
        --latest-include-preview
    
    {
      ...
      "properties": {
        ...
        "authConfig": {
          "allowedModes": [
            "MicrosoftEntraID",
            "NativeAuth"
          ]
        },
        ...
      },
      ...
    }
    
  5. Usare az resource create per creare una nuova risorsa di tipo Microsoft.DocumentDB/mongoClusters/users. Componi il nome della risorsa concatenando il nome del cluster padre e l'ID principale dell'identità.

    az resource create \
        --resource-group "<resource-group-name>" \
        --name "<cluster-name>/users/<principal-id>" \
        --resource-type "Microsoft.DocumentDB/mongoClusters/users" \
        --location "<cluster-region>" \
        --properties '{"identityProvider":{"type":"MicrosoftEntraID","properties":{"principalType":"User"}},"roles":[{"db":"admin","role":"dbOwner"}]}' \
        --latest-include-preview
    

    Suggerimento

    Ad esempio, se la vostra risorsa padre è chiamata example-cluster e il vostro ID principale era aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb, il nome della risorsa sarebbe:

    "example-cluster/users/aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb"
    

    Inoltre, se si registra un principale del servizio, come un'identità gestita, si dovrebbe sostituire il valore della proprietà identityProvider.properties.principalType con ServicePrincipal.

    Infine, se si preferisce usare direttamente l'API REST di Azure con az rest, usare questo comando alternativo:

    az rest \
        --method "PUT" \
        --url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.DocumentDB/mongoClusters/<cluster-name>/users/<principal-id>?api-version=2025-04-01-preview" \
        --body '{"location":"<cluster-region>","properties":{"identityProvider":{"type":"MicrosoftEntraID","properties":{"principalType":"User"}},"roles":[{"db":"admin","role":"dbOwner"}]}}'
    

Annotazioni

Gli utenti di Microsoft Entra ID aggiunti al cluster saranno oltre agli utenti nativi di DocumentDB definiti nello stesso cluster. Viene creato un cluster vCore di Azure Cosmos DB per MongoDB con almeno un utente nativo di DocumentDB predefinito. È possibile aggiungere altri utenti nativi di DocumentDB al termine del provisioning del cluster.

Connettersi al cluster

È possibile connettersi al cluster usando un URI di connessione o un oggetto impostazioni personalizzato dal driver per la lingua preferita. In entrambe le opzioni, lo schema deve essere impostato su mongodb+srv per connettersi al cluster. L'host si trova nel *.global.mongocluster.cosmos.azure.com dominio o *.mongocluster.cosmos.azure.com a seconda che si usi il cluster corrente o l'endpoint di lettura/scrittura globale. Lo +srv schema e l'host assicurano che il *.global.* client sia connesso dinamicamente al cluster scrivibile appropriato in una configurazione multi-cluster anche se si verifica un'operazione di scambio di aree. In una configurazione a cluster singolo è possibile usare entrambi gli host in modo indiscriminato.

L'impostazione tls deve essere abilitata anche. Le impostazioni consigliate rimanenti sono le impostazioni di configurazione consigliate.

Opzione Valore
schema mongodb+srv
server <cluster-name>.global.mongocluster.cosmos.azure.com o <cluster-name>.mongocluster.cosmos.azure.com
tls true
authMechanism MONGODB-OIDC
retrywrites false
maxIdleTimeMS 120000

Nella pagina delle proprietà del cluster nel portale di Azure aprire Stringhe di connessione in Impostazioni. La pagina Stringhe di connessione contiene stringhe di connessione per i metodi di autenticazione abilitati nel cluster. Le stringhe di connessione microsoft Entra ID si trovano nella sezione Microsoft Entra ID .

  • Globale

    mongodb+srv://<cluster-name>.global.mongocluster.cosmos.azure.com/?tls=true&authMechanism=MONGODB-OIDC&retrywrites=false&maxIdleTimeMS=120000
    
  • Cluster

    mongodb+srv://<cluster-name>.mongocluster.cosmos.azure.com/?tls=true&authMechanism=MONGODB-OIDC&retrywrites=false&maxIdleTimeMS=120000