Condividi tramite


Usare l'ID Microsoft Entra per l'autenticazione con il server flessibile di Database di Azure per PostgreSQL

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 sull' identità 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 che mostra le selezioni per l'impostazione di un amministratore di Microsoft Entra durante il provisioning del server.

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 amministratori di 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 che mostra le selezioni per l'impostazione di un amministratore di Microsoft Entra dopo la creazione del server.

Importante

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

Connettersi a Database di Azure per PostgreSQL usando Microsoft Entra ID

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

Diagramma del flusso di autenticazione tra Microsoft Entra ID, il computer dell'utente e il 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 variabile PGPASSWORD per utilizzare il token.
  • Azure Data Studio: usare l'estensione PostgreSQL.
  • Altri client basati su libpq: tra gli esempi, framework applicativi comuni e mapper relazionali a oggetti (ORM).
  • PgAdmin: deselezionare Connetti 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 all’abbonamento Azure dell'utente

Per iniziare, eseguire l'autenticazione con Microsoft Entra ID utilizzando 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 client psql

Durante la connessione è meglio usare il token di accesso come password utente PostgreSQL.

Quando si usa il client dalla riga di comando psql, il token di accesso deve essere fornito tramite la variabile di ambiente PGPASSWORD. Il motivo è che il token di accesso supera la lunghezza della password che psql è in grado di 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 di 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 la variabile di ambiente PGPASSWORD:

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 PgAdmin

Per connettersi usando un token Microsoft Entra con PgAdmin, 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 Connetti ora .
  3. Fare clic sulla scheda Connessione 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 Connetti server
  5. Immettere la password del token di Active Directory quando richiesto.

Screenshot che mostra il processo di accesso usando l'amministratore PG.

Di seguito sono riportate alcune considerazioni essenziali per la connessione:

  • user@tenant.onmicrosoft.com è userPrincipalName dell'utente di Microsoft Entra.
  • Assicurarsi di usare il modo esatto in cui viene digitato l'utente 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 "[userPrincipalName]" -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 all’abbonamento 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 PgAdmin

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