Share via


Usare Microsoft Entra ID per l'autenticazione con Database di Azure per PostgreSQL - Server flessibile

SI APPLICA A: Database di Azure per PostgreSQL - Server flessibile

In questo articolo viene configurato l'accesso a MICROSOFT Entra ID per l'autenticazione con Database di Azure per PostgreSQL server flessibile. Si apprenderà anche come usare un token Microsoft Entra con Database di Azure per PostgreSQL server flessibile.

È possibile configurare l'autenticazione di Microsoft Entra per Database di Azure per PostgreSQL server flessibile durante il provisioning del server o versione successiva. Solo gli utenti amministratori di Microsoft Entra possono creare o abilitare gli utenti per l'autenticazione basata su ID Di Microsoft Entra. È consigliabile non usare l'amministratore di Microsoft Entra per le normali operazioni di database perché tale ruolo dispone di autorizzazioni utente elevate, ad esempio CREATEDB.

È possibile avere più utenti amministratore di Microsoft Entra con Database di Azure per PostgreSQL server flessibile. Gli utenti amministratori di Microsoft Entra possono essere un utente, un gruppo o un'entità servizio.

Prerequisiti

Configurare i requisiti di rete

Microsoft Entra ID è un'applicazione multi-tenant. Richiede la connettività in uscita per eseguire determinate operazioni, ad esempio l'aggiunta di gruppi di amministrazione di Microsoft Entra. Inoltre, sono necessarie regole di rete per il funzionamento della connettività di Microsoft Entra, a seconda della topologia di rete:

  • Accesso pubblico (indirizzi IP consentiti): non sono necessarie regole di rete aggiuntive.

  • Accesso privato (integrazione della rete virtuale):

    • È necessaria una regola del gruppo di sicurezza di rete (NSG) in uscita per consentire al traffico di rete virtuale di raggiungere solo il tag del AzureActiveDirectory servizio.
    • Se si usa una tabella di route, è necessario creare una regola con il tag AzureActiveDirectory del servizio di destinazione e l'hop Internetsuccessivo .
    • Facoltativamente, se si usa un proxy, è possibile aggiungere una nuova regola del firewall per consentire al traffico HTTP/S di raggiungere solo il tag del AzureActiveDirectory servizio.
  • DNS personalizzato: è necessario tenere presenti considerazioni aggiuntive se si usa dns personalizzato nella Rete virtuale (VNET). In questi casi, è fondamentale assicurarsi che gli endpoint seguenti vengano risolti negli indirizzi IP corrispondenti: login.microsoftonline.com: questo endpoint viene usato a scopo di autenticazione. Verificare che la configurazione DNS personalizzata consenta di risolvere login.microsoftonline.com agli indirizzi IP corretti graph.microsoft.com: questo endpoint viene usato per accedere all'API Microsoft Graph. Assicurarsi che la configurazione DNS personalizzata consenta la risoluzione dei graph.microsoft.com agli indirizzi IP corretti.

Per impostare l'amministratore di Microsoft Entra durante il provisioning del server, seguire questa procedura:

  1. Nel portale di Azure, durante il provisioning del server, selezionare l'autenticazione di PostgreSQL e Microsoft Entra o solo l'autenticazione di Microsoft Entra come metodo di autenticazione.
  2. Nella scheda Imposta amministratore selezionare un utente, un gruppo, un'entità servizio o un'identità gestita validi nel tenant del cliente come amministratore di Microsoft Entra.

Facoltativamente, è possibile aggiungere un account amministratore PostgreSQL locale se si preferisce usare il metodo di autenticazione PostgreSQL e Microsoft Entra.

Nota

È possibile aggiungere un solo utente amministratore di Azure durante il provisioning del server. È possibile aggiungere più utenti amministratore di Microsoft Entra dopo la creazione del server.

Screenshot that shows selections for setting a Microsoft Entra admin during server provisioning.]

Per impostare l'amministratore di Microsoft Entra dopo la creazione del server, seguire questa procedura:

  1. Nella portale di Azure selezionare l'istanza di Database di Azure per PostgreSQL server flessibile da abilitare per Microsoft Entra ID.
  2. In Sicurezza selezionare Autenticazione. Scegliere quindi l'autenticazione PostgreSQL e Microsoft Entra o l'autenticazione di Microsoft Entra solo come metodo di autenticazione, in base alle esigenze.
  3. Selezionare Aggiungi Amministrazione Microsoft Entra. Selezionare quindi un utente, un gruppo, un'entità servizio o un'identità gestita validi nel tenant del cliente per essere un amministratore di Microsoft Entra.
  4. Seleziona Salva.

Screenshot that shows selections for setting a Microsoft Entra admin after server creation.

Importante

Quando si imposta l'amministratore, viene aggiunto un nuovo utente a Database di Azure per PostgreSQL server flessibile con autorizzazioni di amministratore completo.

Connessione a Database di Azure per PostgreSQL tramite Microsoft Entra ID

Il diagramma generale seguente riepiloga il flusso di lavoro dell'uso dell'autenticazione di Microsoft Entra con Database di Azure per PostgreSQL:

Diagram of authentication flow between Microsoft Entra ID, the user's computer, and the server.

L'integrazione di Microsoft Entra funziona con gli strumenti PostgreSQL standard, ad esempio psql, che non supportano Microsoft Entra e supportano solo la specifica del nome utente e della password quando ci si connette a PostgreSQL. Come illustrato nel diagramma precedente, il token Microsoft Entra viene passato come password.

Sono stati testati i client seguenti:

  • riga di comando psql: usare la PGPASSWORD variabile per passare il token.
  • Azure Data Studio: usare l'estensione PostgreSQL.
  • Altri client basati su libpq: esempi includono framework applicativi comuni e orm relazionali a oggetti.
  • Pg Amministrazione: deselezionare Connessione ora alla creazione del server.

Eseguire l'autenticazione con ID Microsoft Entra

Utilizzare le procedure seguenti per eseguire l'autenticazione con Microsoft Entra ID come utente server flessibile Database di Azure per PostgreSQL. È possibile seguire la procedura in Azure Cloud Shell, in una macchina virtuale di Azure o nel computer locale.

Accedere alla sottoscrizione di Azure dell'utente

Per iniziare, eseguire l'autenticazione con Microsoft Entra ID usando l'interfaccia della riga di comando di Azure. Questo passaggio non è obbligatorio in Azure Cloud Shell.

az login

Il comando apre una finestra del browser nella pagina di autenticazione di Microsoft Entra. Richiede l'assegnazione dell'ID utente e della password di Microsoft Entra.

Recuperare il token di accesso di Microsoft Entra

Usare l'interfaccia della riga di comando di Azure per acquisire un token di accesso per l'utente autenticato di Microsoft Entra per accedere alle Database di Azure per PostgreSQL. Ecco un esempio del cloud pubblico:

az account get-access-token --resource https://ossrdbms-aad.database.windows.net

Il valore della risorsa precedente deve essere specificato come illustrato. Per altri cloud, è possibile cercare il valore della risorsa usando il comando seguente:

az cloud show

Per l'interfaccia della riga di comando di Azure versione 2.0.71 e successive, è possibile specificare il comando nella versione pratica seguente per tutti i cloud:

az account get-access-token --resource-type oss-rdbms

Al termine dell'autenticazione, l'ID Microsoft Entra restituisce un token di accesso:

{
  "accessToken": "TOKEN",
  "expiresOn": "...",
  "subscription": "...",
  "tenant": "...",
  "tokenType": "Bearer"
}

Il token è una stringa Base64. Codifica tutte le informazioni sull'utente autenticato ed è destinato al servizio Database di Azure per PostgreSQL.

Usare un token come password per l'accesso con psql client

Quando ci si connette, è consigliabile usare il token di accesso come password utente postgreSQL.

Quando si usa il client da riga di comando psql, il token di accesso deve essere passato tramite la PGPASSWORD variabile di ambiente. Il motivo è che il token di accesso supera la lunghezza della password che psql può accettare direttamente.

Ecco un esempio di Windows:

set PGPASSWORD=<copy/pasted TOKEN value from step 2>
$env:PGPASSWORD='<copy/pasted TOKEN value from step 2>'

Ecco un esempio linux/macOS:

export PGPASSWORD=<copy/pasted TOKEN value from step 2>

È anche possibile combinare il passaggio 2 e il passaggio 3 usando la sostituzione dei comandi. Il recupero del token può essere incapsulato in una variabile e passato direttamente come valore per PGPASSWORD la variabile di ambiente:

export PGPASSWORD=$(az account get-access-token --resource-type oss-rdbms --query "[accessToken]" -o tsv)

È ora possibile avviare una connessione con Database di Azure per PostgreSQL come in genere si farebbe:

psql "host=mydb.postgres... user=user@tenant.onmicrosoft.com dbname=postgres sslmode=require"

Usare un token come password per l'accesso con Pg Amministrazione

Per connettersi usando un token Microsoft Entra con Pg Amministrazione, seguire questa procedura:

  1. Aprire Pgadmin e fare clic su Registra dal menu a sinistra e selezionare Server
  2. Nella scheda Generale specificare un nome di connessione e deselezionare l'opzione Connessione ora.
  3. Fare clic sulla scheda Connessione ion e specificare i dettagli dell'istanza del server flessibile Database di Azure per PostgreSQL per Nome host/indirizzo e nome utente e salvare. username è l'ID o l'indirizzo di posta elettronica di Microsoft Entra
  4. Dal menu del browser selezionare la connessione server flessibile Database di Azure per PostgreSQL e fare clic su Connessione Server
  5. Immettere la password del token di Active Directory quando richiesto.

Screenshot that shows login process using PG admin.

Di seguito sono riportate alcune considerazioni essenziali per la connessione:

  • user@tenant.onmicrosoft.com è il nome visualizzato dell'utente di Microsoft Entra.
  • Assicurarsi di usare il modo esatto in cui viene digitato l'utente di Azure. I nomi di utenti e gruppi di Microsoft Entra fanno distinzione tra maiuscole e minuscole.
  • Se il nome contiene spazi, usare una barra rovesciata (\) prima di ogni spazio per eseguirne l'escape. È possibile usare l'interfaccia della riga di comando di Azure per ottenere l'utente connesso e impostare il valore per PGUGSER la variabile di ambiente:
    export PGUSER=$(az ad signed-in-user show --query "[displayName]" -o tsv | sed 's/ /\\ /g')
    
  • La validità del token di accesso è da 5 a 60 minuti. È necessario ottenere il token di accesso prima di avviare l'accesso a Database di Azure per PostgreSQL.

L'autenticazione viene eseguita nel server Database di Azure per PostgreSQL tramite l'autenticazione di Microsoft Entra.

Eseguire l'autenticazione con Microsoft Entra ID come membro del gruppo

Creare gruppi di Microsoft Entra in Database di Azure per PostgreSQL server flessibile

Per consentire a un gruppo Microsoft Entra di accedere al database, usare lo stesso meccanismo usato per gli utenti, ma specificare invece il nome del gruppo. Ad esempio:

select * from  pgaadauth_create_principal('Prod DB Readonly', false, false).

Quando i membri del gruppo accedono, usano i token di accesso, ma specificano il nome del gruppo come nome utente.

Nota

Database di Azure per PostgreSQL server flessibile supporta le identità gestite e le entità servizio come membri del gruppo.

Accedere alla sottoscrizione di Azure dell'utente

Eseguire l'autenticazione con Microsoft Entra ID usando l'interfaccia della riga di comando di Azure. Questo passaggio non è obbligatorio in Azure Cloud Shell. L'utente deve essere membro del gruppo Microsoft Entra.

az login

Recuperare il token di accesso di Microsoft Entra

Usare l'interfaccia della riga di comando di Azure per acquisire un token di accesso per l'utente autenticato di Microsoft Entra per accedere alle Database di Azure per PostgreSQL. Ecco un esempio del cloud pubblico:

az account get-access-token --resource https://ossrdbms-aad.database.windows.net

È necessario specificare esattamente il valore della risorsa iniziale, come illustrato. Per altri cloud, è possibile cercare il valore della risorsa usando il comando seguente:

az cloud show

Per l'interfaccia della riga di comando di Azure versione 2.0.71 e successive, è possibile specificare il comando nella versione pratica seguente per tutti i cloud:

az account get-access-token --resource-type oss-rdbms

Al termine dell'autenticazione, l'ID Microsoft Entra restituisce un token di accesso:

{
  "accessToken": "TOKEN",
  "expiresOn": "...",
  "subscription": "...",
  "tenant": "...",
  "tokenType": "Bearer"
}

Usare un token come password per l'accesso con psql o Pg Amministrazione

Queste considerazioni sono essenziali quando ci si connette come membro del gruppo:

  • Il nome del gruppo è il nome del gruppo Microsoft Entra che si sta tentando di connettersi.
  • Assicurarsi di usare il modo esatto in cui viene digitato il nome del gruppo Microsoft Entra. I nomi di utenti e gruppi di Microsoft Entra fanno distinzione tra maiuscole e minuscole.
  • Quando ci si connette come gruppo, usare solo il nome del gruppo e non l'alias di un membro del gruppo.
  • Se il nome contiene spazi, usare una barra rovesciata (\) prima di ogni spazio per eseguirne l'escape.
  • La validità del token di accesso è da 5 a 60 minuti. È consigliabile ottenere il token di accesso prima di avviare l'accesso a Database di Azure per PostgreSQL.

A questo momento si è autenticati nel server PostgreSQL tramite l'autenticazione di Microsoft Entra.

Passaggi successivi