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.
In questo articolo viene configurato l'accesso con l'ID Entra di Microsoft per l'autenticazione con Database di Azure per PostgreSQL. Si apprende anche come utilizzare un token Microsoft Entra con un'istanza flessibile di server del Database di Azure per PostgreSQL.
È possibile configurare l'autenticazione di Microsoft Entra per un'istanza di server flessibile di Azure Database per PostgreSQL sia durante il provisioning del server sia in un secondo momento. Solo gli utenti amministratori di Microsoft Entra possono creare o abilitare gli utenti per l'autenticazione basata su Microsoft Entra ID. 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. Gli utenti amministratori di Microsoft Entra possono essere un utente, un gruppo o un'entità servizio.
Prerequisiti
- È necessario un account Azure con una sottoscrizione attiva. Creare un account gratuito.
Configurare i requisiti di rete
Microsoft Entra ID è un'applicazione multi-tenant. Richiede la connettività in uscita per operazioni come l'aggiunta di gruppi di amministrazione di Microsoft Entra.
I requisiti di rete variano in base alla topologia:
- Accesso pubblico (indirizzi IP consentiti): non sono necessarie regole in uscita aggiuntive.
-
Accesso privato (integrazione della rete virtuale):
- Aggiungere una regola del gruppo di sicurezza di rete in uscita che consente il traffico solo al tag del servizio
AzureActiveDirectory. - Se si utilizza una tabella di percorsi, aggiungere un percorso con destinazione
AzureActiveDirectorye hop successivoInternet. - Se si usa un proxy, consentire solo il traffico HTTPS verso il tag del
AzureActiveDirectoryservizio.
- Aggiungere una regola del gruppo di sicurezza di rete in uscita che consente il traffico solo al tag del servizio
-
DNS personalizzato:
- Assicurarsi che questi nomi host vengano risolti pubblicamente:
login.microsoftonline.com(autenticazione) egraph.microsoft.com(API Microsoft Graph). - Se la risoluzione ha esito negativo, le operazioni di assegnazione e acquisizione del token di amministrazione hanno esito negativo.
- Assicurarsi che questi nomi host vengano risolti pubblicamente:
Per impostare l'amministratore di Microsoft Entra durante il provisioning del server, seguire questa procedura:
- 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.
- 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.
Annotazioni
È possibile aggiungere un solo amministratore di Microsoft Entra durante il provisioning del server. È possibile aggiungere più utenti amministratore di Microsoft Entra dopo la creazione del server.
Per impostare l'amministratore di Microsoft Entra dopo la creazione del server, seguire questa procedura:
- Nella portale di Azure selezionare l'istanza di Database di Azure per PostgreSQL - Server flessibile da abilitare per Microsoft Entra ID.
- In Sicurezza selezionare Autenticazione. Scegliere quindi l'autenticazione PostgreSQL e Microsoft Entra o solo l'autenticazione di Microsoft Entra come metodo di autenticazione, in base alle esigenze.
- Selezionare Aggiungi amministratori di Microsoft Entra. Selezionare quindi un utente, un gruppo, un'entità servizio o un'identità gestita validi nel tenant del cliente come amministratore di Microsoft Entra.
- Seleziona Salva.
Importante
Quando si imposta l'amministratore, viene aggiunto un nuovo utente all'istanza del server flessibile di Database di Azure per PostgreSQL con autorizzazioni di amministratore completo.
Connettersi a Database di Azure per PostgreSQL usando Microsoft Entra ID
L'integrazione di Microsoft Entra funziona con gli strumenti PostgreSQL standard, ad esempio PSQL, che non supportano Microsoft Entra e supportano solo la specifica di nome utente e password quando ci si connette a PostgreSQL.
Sono stati testati i client seguenti:
-
riga di comando psql: usare la variabile
PGPASSWORDper 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 Microsoft Entra ID
Usare le procedure seguenti per eseguire l'autenticazione con Microsoft Entra ID come utente di un'istanza flessibile di Azure Database per PostgreSQL.
È possibile seguire questa procedura usando:
- Azure Cloud Shell
- Macchina virtuale di Azure
- Il computer locale
Accedere ad Azure
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 un token di accesso di Microsoft Entra
Usare la CLI di Azure per ottenere un token di autenticazione per l'utente autenticato Microsoft Entra per accedere al Database PostgreSQL di Azure. 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
Quando ci si connette, usare il token di accesso come password utente postgreSQL.
Quando si usa il client da riga di comando psql, è necessario passare il token di accesso tramite la PGPASSWORD variabile di ambiente. Il token di accesso è più lungo della 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 di Linux o 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. È possibile inserire il recupero del token in una variabile e passarlo direttamente come valore per la PGPASSWORD variabile di ambiente:
export PGPASSWORD=$(az account get-access-token --resource-type oss-rdbms --query "[accessToken]" -o tsv)
Connettersi ora a Database di Azure per PostgreSQL:
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:
- Aprire PgAdmin e selezionare Registra>server.
- Nella scheda Generale immettere un nome di connessione e deselezionare Connetti ora.
- Nella scheda Connessione immettere i dettagli dell'host. Impostare Username (Nome utente) su Microsoft Entra UPN (ad esempio,
user@tenant.onmicrosoft.com). Salva. - Nell'albero selezionare il server e scegliere Connetti server.
- Quando richiesto, incollare il token di accesso come password.
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 utente e gruppo 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 laPGUSERvariabile 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
Questa sezione illustra come connettersi tramite un gruppo Microsoft Entra. È necessario essere un membro del gruppo e il gruppo deve essere creato (mappato) nel database.
Creare un principale gruppo
Creare l'entità gruppo (ruolo) nel database (sostituire il nome visualizzato in base alle esigenze):
select * from pgaadauth_create_principal('Prod DB Readonly', false, false).
Se la sincronizzazione dei gruppi è disabilitata, i membri possono accedere usando i token di accesso e specificare il nome del gruppo come nome utente.
Se la sincronizzazione dei gruppi è abilitata (tramite pgaadauth.enable_group_sync parametro del server impostato su "ON"), i membri devono accedere con le proprie credenziali di ENTRA ID, ma possono comunque accedere con il nome del gruppo come nome utente.
Gli account di accesso al gruppo rimangono disponibili per motivi di compatibilità, ma possono essere disabilitati con:
ALTER ROLE "ROLE_NAME" NOLOGIN;Il ruolo del gruppo non deve essere eliminato per mantenere la sincronizzazione.
I gruppi si sincronizzano automaticamente ogni 30 minuti.
La sincronizzazione manuale può essere attivata con:
SELECT * FROM pgaadauth_sync_roles_for_group_members();(pgaadauth.enable_group_syncil parametro deve essere "ON").Le modifiche apportate ai metadati di gruppo, ad esempio il nome del gruppo, non vengono sincronizzate
Le modifiche all'appartenenza al gruppo vengono sincronizzate
Annotazioni
Le identità gestite e le entità servizio sono supportate come membri del gruppo.
Accedere ad Azure
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 un token di accesso di Microsoft Entra
Usare la CLI di Azure per ottenere un token di autenticazione per l'utente autenticato Microsoft Entra per accedere al Database PostgreSQL di Azure. 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 deve corrispondere esattamente al nome visualizzato del gruppo Microsoft Entra (con distinzione tra maiuscole e minuscole).
- Usare solo il nome del gruppo, non un alias membro.
- Spazi di escape dove necessario (ad esempio,
Prod\ DB\ Readonly). - La validità del token è di 5-60 minuti. Acquisiscilo subito prima della connessione; non archiviare i token negli script.
Suggerimento
Se l'autenticazione non riesce, verificare che il ruolo del database esista (ad esempio, con \du) e confermare l'impostazione pgaadauth.enable_group_sync .
L'autenticazione al server PostgreSQL tramite l'autenticazione di Microsoft Entra è stata eseguita.