Share via


Usare l'ID Entra di Microsoft per l'autenticazione con PostgreSQL

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

Importante

Database di Azure per PostgreSQL - Server singolo si trova nel percorso di ritiro. È consigliabile eseguire l'aggiornamento a Database di Azure per PostgreSQL - Server flessibile. Per altre informazioni sulla migrazione a Database di Azure per PostgreSQL - Server flessibile, vedere What's happening to Database di Azure per PostgreSQL Single Server?.

Questo articolo illustra la procedura per configurare l'accesso a Microsoft Entra ID con Database di Azure per PostgreSQL e come connettersi usando un token Microsoft Entra.

Impostazione dell'utente di Microsoft Entra Amministrazione

Solo gli utenti amministratori di Microsoft Entra possono creare/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é dispone di autorizzazioni utente elevate (ad esempio CREATEDB).

Per impostare l'amministratore di Microsoft Entra (è possibile usare un utente o un gruppo), seguire questa procedura

  1. Nella portale di Azure selezionare l'istanza di Database di Azure per PostgreSQL da abilitare per Microsoft Entra ID.
  2. In Impostazioni selezionare Amministratore di Active Directory:

impostare l'amministratore di Microsoft Entra

  1. Selezionare un utente Microsoft Entra valido nel tenant del cliente come amministratore di Microsoft Entra.

Importante

Quando si imposta l'amministratore, nel server di Database di Azure PostgreSQL viene aggiunto un nuovo utente con autorizzazioni di amministratore complete. L'utente di Microsoft Entra Amministrazione in Database di Azure per PostgreSQL avrà il ruolo azure_ad_admin. È possibile creare un solo amministratore di Microsoft Entra per ogni server PostgreSQL e selezionare un altro utente sovrascriverà l'amministratore esistente di Microsoft Entra configurato per il server. È possibile specificare un gruppo Microsoft Entra anziché un singolo utente per avere più amministratori.

È possibile creare un solo amministratore di Microsoft Entra per ogni server PostgreSQL e selezionare un altro utente sovrascriverà l'amministratore esistente di Microsoft Entra configurato per il server. È possibile specificare un gruppo Microsoft Entra anziché un singolo utente per avere più amministratori. Tenere presente che in questo caso sarà necessario accedere con il nome del gruppo per finalità amministrative.

Connessione per Database di Azure per PostgreSQL con 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:

flusso di autenticazione

L'integrazione di Microsoft Entra è stata progettata per lavorare con strumenti PostgreSQL comuni come psql, che non sono consapevoli di Microsoft Entra e supportano solo la specifica di nome utente e password durante la connessione a PostgreSQL. Passiamo il token Microsoft Entra come password, come illustrato nell'immagine precedente.

Attualmente sono stati testati i client seguenti:

  • psql commandline (usare la variabile PGPASSWORD per passare il token, vedere il passaggio 3 per altre informazioni)
  • Azure Data Studio (tramite l'estensione PostgreSQL)
  • Altri client basati su libpq (ad esempio framework applicazioni e ORM comuni)
  • Pg Amministrazione (deselezionare Connetti ora alla creazione del server. Per altre informazioni, vedere il passaggio 4.

Questi sono i passaggi che un utente/applicazione dovrà eseguire l'autenticazione con l'ID Microsoft Entra descritto di seguito:

Prerequisiti

È possibile seguire la procedura in Azure Cloud Shell, in una macchina virtuale di Azure o nel computer locale. Assicurarsi di aver installato l'interfaccia della riga di comando di Azure.

Eseguire l'autenticazione con Microsoft Entra ID come singolo utente

Passaggio 1: Accedere alla sottoscrizione di Azure dell'utente

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

az login

Il comando avvierà una finestra del browser nella pagina di autenticazione di Microsoft Entra. Richiede di assegnare all'utente Microsoft Entra l'ID utente e la password.

Passaggio 2: Recuperare il token di accesso di Microsoft Entra

Richiamare lo strumento dell'interfaccia della riga di comando di Azure per acquisire un token di accesso per l'utente autenticato di Microsoft Entra dal passaggio 1 per accedere alle Database di Azure per PostgreSQL.

Esempio (per il cloud pubblico):

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

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

az cloud show

Per l'interfaccia della riga di comando di Azure versione 2.0.71 e successive, è possibile specificare il comando in questa versione più agevole per tutti i cloud:

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

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

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

Il token è una stringa Base 64 che codifica tutte le informazioni sull'utente autenticato e che è indirizzata al servizio Database di Azure per PostgreSQL.

Passaggio 3: Usare il token come password per l'accesso con psql client

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

Se si usa il client della riga di comando psql, il token di accesso deve essere passato tramite la variabile di ambiente PGPASSWORD, poiché quest'ultimo supera la lunghezza della password che psql è in grado di accettare direttamente:

Esempio Windows:

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

Esempio Linux/macOS:

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

A questo punto è possibile avviare una connessione con Database di Azure per PostgreSQL come di consueto:

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

Passaggio 4: Usare il token come password per l'accesso con Pg Amministrazione

Per connettersi usando il token Microsoft Entra con pg Amministrazione è necessario seguire i passaggi successivi:

  1. Deselezionare l'opzione Connetti ora al momento della creazione del server.
  2. Immettere i dettagli del server nella scheda connessione e salvare.
  3. Dal menu del browser selezionare Connetti al server Database di Azure per PostgreSQL
  4. Immettere la password del token ad quando richiesto.

Considerazioni importanti per la connessione:

  • user@tenant.onmicrosoft.com è il nome dell'utente di Microsoft Entra
  • Assicurarsi di usare il modo esatto in cui viene digitato l'utente di Azure, perché i nomi utente e gruppo di Microsoft Entra fanno distinzione tra maiuscole e minuscole.
  • Se il nome contiene spazi, usare \ prima di ogni spazio per eseguire l'escape.
  • La validità del token di accesso può essere compresa tra 5 e 60 minuti. È consigliabile ottenere il token di accesso appena prima di accedere a Database di Azure per PostgreSQL.

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

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

Passaggio 1: Creare gruppi di Microsoft Entra in Database di Azure per PostgreSQL

Per abilitare un gruppo Microsoft Entra per l'accesso al database, usare lo stesso meccanismo degli utenti, ma specificare invece il nome del gruppo:

Esempio:

CREATE USER <new_user> IN ROLE azure_ad_user;

Quando si esegue l'accesso, i membri del gruppo useranno i propri token di accesso personali, ma firmeranno usando il nome del gruppo specificato come nome utente.

Passaggio 2: Accedere alla sottoscrizione di Azure dell'utente

Eseguire l'autenticazione con Microsoft Entra ID usando lo strumento dell'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

Passaggio 3: Recuperare il token di accesso di Microsoft Entra

Richiamare lo strumento dell'interfaccia della riga di comando di Azure per acquisire un token di accesso per l'utente autenticato di Microsoft Entra dal passaggio 2 per accedere alle Database di Azure per PostgreSQL.

Esempio (per il cloud pubblico):

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

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

az cloud show

Per l'interfaccia della riga di comando di Azure versione 2.0.71 e successive, è possibile specificare il comando in questa versione più agevole per tutti i cloud:

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

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

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

Passaggio 4: Usare il token come password per l'accesso con psql o Pg Amministrazione (vedere i passaggi precedenti per la connessione utente)

Considerazioni importanti per la connessione come membro del gruppo:

  • groupname@mydb è il nome del gruppo Microsoft Entra che si sta tentando di connettersi come
  • Aggiungere sempre il nome del server dopo il nome utente/gruppo di Microsoft Entra ,ad esempio @mydb)
  • 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 (ad esempio GroupName@mydb) e non l'alias di un membro del gruppo.
  • Se il nome contiene spazi, usare \ prima di ogni spazio per eseguire l'escape.
  • La validità del token di accesso può essere compresa tra 5 e 60 minuti. È consigliabile ottenere il token di accesso appena prima di accedere a Database di Azure per PostgreSQL.

Ora si è autenticati nel server PostgreSQL usando l'autenticazione Microsoft Entra.

Creazione di utenti di Microsoft Entra in Database di Azure per PostgreSQL

Per aggiungere un utente di Microsoft Entra al database di Database di Azure per PostgreSQL, seguire questa procedura dopo la connessione (vedere la sezione successiva su come connettersi):

  1. Assicurarsi innanzitutto che l'utente <user>@yourtenant.onmicrosoft.com di Microsoft Entra sia un utente valido nel tenant di Microsoft Entra.
  2. Accedere all'istanza di Database di Azure per PostgreSQL come utente di Microsoft Entra Amministrazione.
  3. Creare il ruolo <user>@yourtenant.onmicrosoft.com in Database di Azure per PostgreSQL.
  4. Rendere <user>@yourtenant.onmicrosoft.com un membro del ruolo azure_ad_user. Questo deve essere assegnato solo agli utenti di Microsoft Entra.

Esempio:

CREATE USER "user1@yourtenant.onmicrosoft.com" IN ROLE azure_ad_user;

Nota

L'autenticazione di un utente tramite Microsoft Entra ID non concede all'utente alcuna autorizzazione per accedere agli oggetti all'interno del database Database di Azure per PostgreSQL. È necessario concedere manualmente le autorizzazioni necessarie all'utente.

Convalida dei token

L'autenticazione di Microsoft Entra in Database di Azure per PostgreSQL garantisce che l'utente esista nel server PostgreSQL e controlli la validità del token convalidando il contenuto del token. Vengono eseguiti i passaggi di convalida del token seguenti:

  • Il token è firmato dall'ID Microsoft Entra e non è stato manomesso
  • Il token è stato rilasciato dall'ID Microsoft Entra per il tenant associato al server
  • Il token non è scaduto
  • Il token è relativo alla risorsa Database di Azure per PostgreSQL (e non a un'altra risorsa di Azure)

Migrazione di utenti PostgreSQL esistenti all'autenticazione basata su ID di Microsoft Entra

È possibile abilitare l'autenticazione di Microsoft Entra per gli utenti esistenti. Considerare i due casi seguenti:

Caso 1: il nome utente PostgreSQL corrisponde al nome dell'entità utente Di Microsoft Entra

Nel caso improbabile che gli utenti esistenti corrispondano già ai nomi utente di Microsoft Entra, è possibile concedere loro il azure_ad_user ruolo per abilitarli per l'autenticazione di Microsoft Entra:

GRANT azure_ad_user TO "existinguser@yourtenant.onmicrosoft.com";

Ora potranno accedere con le credenziali di Microsoft Entra anziché usare la password utente PostgreSQL configurata in precedenza.

Caso 2: il nome utente di PostgreSQL è diverso dal nome dell'entità utente di Microsoft Entra

Se un utente PostgreSQL non esiste in Microsoft Entra ID o ha un nome utente diverso, è possibile usare i gruppi di Microsoft Entra per eseguire l'autenticazione come utente PostgreSQL. È possibile eseguire la migrazione degli utenti Database di Azure per PostgreSQL esistenti all'ID Microsoft Entra creando un gruppo Microsoft Entra con un nome corrispondente all'utente PostgreSQL e concedendo quindi il ruolo azure_ad_user all'utente PostgreSQL esistente:

GRANT azure_ad_user TO <new_user>;

Si presuppone che sia stato creato un gruppo "DBReadUser" nell'ID Microsoft Entra. Gli utenti che appartengono a tale gruppo ora possono accedere al database con le credenziali di questo utente.

Passaggi successivi