Usare l'ID Entra Microsoft e i ruoli postgreSQL nativi per l'autenticazione con Azure Cosmos DB for PostgreSQL
SI APPLICA A: Azure Cosmos DB for PostgreSQL (con tecnologia basata sull'estensione di database Citus per PostgreSQL)
In questo articolo vengono configurati i metodi di autenticazione per Azure Cosmos DB for PostgreSQL. Si gestiscono gli utenti amministratori di Microsoft Entra ID e i ruoli nativi di PostgreSQL per l'autenticazione con Azure Cosmos DB for PostgreSQL. Si apprenderà anche come usare un token ID Microsoft Entra con Azure Cosmos DB for PostgreSQL.
Viene creato un cluster Azure Cosmos DB for PostgreSQL con un ruolo PostgreSQL nativo predefinito denominato "citus". È possibile aggiungere altri ruoli PostgreSQL nativi dopo il completamento del provisioning del cluster.
Inoltre, è possibile configurare l'autenticazione di Microsoft Entra ID (in precedenza Azure Active Directory) per Azure Cosmos DB for PostgreSQL. È possibile abilitare l'autenticazione di Microsoft Entra ID in aggiunta o al posto dell'autenticazione PostgreSQL nativa nel cluster. È possibile modificare i metodi di autenticazione abilitati nel cluster in qualsiasi momento dopo il provisioning del cluster. Quando l'autenticazione di Microsoft Entra ID è abilitata, è possibile aggiungere più utenti di Microsoft Entra ID a un cluster Azure Cosmos DB for PostgreSQL e renderli amministratori. L'utente di Microsoft Entra ID può essere un utente o un'entità servizio.
Scegliere il metodo di autenticazione
È necessario utilizzare il portale di Azure per configurare i metodi di autenticazione in un cluster Azure Cosmos DB for PostgreSQL.
Completare gli elementi seguenti nel cluster Azure Cosmos DB for PostgreSQL per abilitare o disabilitare l'autenticazione di Microsoft Entra ID e l'autenticazione PostgreSQL nativa.
- Nella pagina cluster, alla voce Gestione cluster, scegliere Autenticazione per aprire le opzioni di gestione dell'autenticazione.
- Nella sezione Metodi di autenticazione, scegliere Solo autenticazione PostgreSQL, Autenticazione con Microsoft Entra ID o Autenticazione PostgreSQL e Microsoft Entra ID come metodo di autenticazione a seconda dei propri requisiti.
Al termine, procedere con Configurare l'autenticazione Microsoft Entra ID o Aggiungere ruoli PostgreSQL nativi nella pagina Autenticazione.
Configurare l'autenticazione con Microsoft Entra ID
Prerequisiti
Gli utenti devono poter accedere ad Azure Cosmos DB for PostgreSQL nel tenant Microsoft Entra ID. Questi passaggi devono essere eseguiti una sola volta per il tenant Microsoft Entra ID che verrà usato per l'autenticazione nei cluster Azure Cosmos DB for PostgreSQL.
Importante
Per apportare la modifica sono necessari i privilegi di amministratore tenant di Microsoft Entra ID. Vedere le indicazioni per la risoluzione dei problemi relativi alle autorizzazioni.
- Cercare "Microsoft Entra ID" nel portale di Azure.
- Aprire il servizio "Microsoft Entra ID".
- Nella pagina Panoramica del servizio Microsoft Entra ID, alla sezione Panoramica, cercare l'ID applicazione 'b4fa09d8-5da5-4352-83d9-05c2a44cf431'.
- Scegliere l'applicazione aziendale "Autenticazione AAD per Azure Cosmos DB for PostgreSQL" nei risultati della ricerca.
- Nell'applicazione aziendale Autenticazione AAD per Azure Cosmos DB for PostgreSQL scegliere la pagina Proprietà.
- Impostare Abilitato per l'accesso degli utenti? su Sì e salvare la modifica.
Nota
La modifica delle proprietà dell'applicazione aziendale, ad esempio "Abilitato per l'accesso degli utenti" richiede autorizzazioni concesse a un ruolo con privilegi per aggiornare le proprietà dell'applicazione aziendale. I ruoli, ad esempio il proprietario dell'applicazione enterprise, devono avere la permisssione "aggiornare le proprietà dell'applicazione aziendale". Per altre informazioni, vedere Ruoli con privilegi minimi di Microsoft Entra per attività - Applicazioni aziendali.
Aggiungere amministratori di Microsoft Entra ID al cluster Azure Cosmos DB for PostgreSQL
Per aggiungere o rimuovere ruoli Microsoft Entra ID nel cluster, seguire questa procedura nella pagina Autenticazione:
- Nella sezione Autenticazione con Microsoft Entra ID selezionare Aggiungi amministratori Microsoft Entra ID.
- Nel pannello Seleziona amministratori Microsoft Entra ID selezionare una o più applicazioni aziendali o utenti Microsoft Entra ID validi nel tenant AD corrente come amministratori di Microsoft Entra ID nel cluster Azure Cosmos DB for PostgreSQL.
- Utilizzare Seleziona per confermare la scelta.
- Nella pagina Autenticazione selezionare Salva sulla barra degli strumenti per salvare le modifiche o procedere con l'aggiunta di ruoli PostgreSQL nativi.
Configurare l'autenticazione PostgreSQL nativa
Per aggiungere ruoli Postgres nel cluster, seguire questa procedura nella pagina Autenticazione:
- Nella sezione Autenticazione PostgreSQL selezionare Aggiungi ruolo PostgreSQL.
- Immettere il nome del ruolo e la password. Seleziona Salva.
- Nella pagina Autenticazione selezionare Salva sulla barra degli strumenti per salvare le modifiche o procedere con l'aggiunta di utenti amministratori di Microsoft Entra ID.
L'utente PostgreSQL nativo viene creato nel nodo coordinatore del cluster e propagato a tutti i nodi di lavoro. I ruoli creati tramite il portale di Azure hanno l'attributo LOGIN, il che significa che sono veri utenti che possono accedere al database.
Connettersi ad Azure Cosmos for PostgreSQL usando l'autenticazione Microsoft Entra ID
L'integrazione di Microsoft Entra ID funziona con gli strumenti client PostgreSQL standard, come psql, che non supportano Microsoft Entra ID e supportano solo la specifica di nome utente e password quando ci si connette a PostgreSQL. In questi casi, il token Microsoft Entra ID viene utilizzato come password.
Sono stati testati i client seguenti:
- riga di comando psql: usare la variabile
PGPASSWORD
per utilizzare il token. - 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.
Usare le procedure seguenti per eseguire l'autenticazione con Microsoft Entra ID come utente Azure Cosmos DB for 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 ID. Richiede l'assegnazione del nome utente e della password Microsoft Entra ID.
Il nome dell'account utente usato per l'autenticazione, ad esempio user@tenant.onmicrosoft.com, è quello per cui verrà generato il token di accesso nel passaggio successivo.
Recuperare il token di accesso di Microsoft Entra ID
Usare l'interfaccia della riga di comando di Azure per acquisire un token di accesso per l'utente autenticato di Microsoft Entra ID per accedere ad Azure Cosmos for PostgreSQL. Ecco un esempio:
az account get-access-token --resource https://token.postgres.cosmos.azure.com
Al termine dell'autenticazione, Microsoft Entra ID restituisce un token di accesso per la sottoscrizione di Azure corrente:
{
"accessToken": "[TOKEN]",
"expiresOn": "[expiration_date_and_time]",
"subscription": "[subscription_id]",
"tenant": "[tenant_id]",
"tokenType": "Bearer"
}
il TOKEN è una stringa Base64. Esso codifica tutte le informazioni sull'utente autenticato ed è associato al servizio Azure Cosmos DB for PostgreSQL. Il token è valido per almeno 5 minuti, con un massimo di 90 minuti. ExpiresOn definisce l'ora di scadenza effettiva del token.
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=<TOKEN value from the previous step>
$env:PGPASSWORD='<TOKEN value from the previous step>'
Ecco un esempio di linux/macOS:
export PGPASSWORD=<TOKEN value from the previous step>
È inoltre possibile combinare i due passaggi precedenti utilizzando 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 https://token.postgres.cosmos.azure.com --query "[accessToken]" -o tsv)
Nota
Assicurarsi che la variabile PGPASSWORD sia impostata sul token di accesso Microsoft Entra ID nella propria sottoscrizione per l'autenticazione Microsoft Entra ID. Se è necessario eseguire l'autenticazione del ruolo Postgres dalla stessa sessione, è possibile impostare PGPASSWORD sulla password del ruolo Postgres o deselezionare il valore della variabile PGPASSWORD per immettere la password in modo interattivo. L'autenticazione non riesce con il valore errato in PGPASSWORD.
È ora possibile avviare una connessione con Azure Cosmos DB for PostgreSQL usando l'account utente Microsoft Entra ID per il quale è stato generato il token di accesso. Eseguire questa operazione come in genere si farebbe con l'account utente come utente e senza il parametro 'password' nella riga di comando:
psql "host=mycluster.[uniqueID].postgres.cosmos.azure.com user=user@tenant.onmicrosoft.com dbname=[db_name] sslmode=require"
Usare un token come password per l'accesso con PgAdmin
Per connettersi usando un token Microsoft Entra ID con PgAdmin, seguire questa procedura:
- Deselezionare l'opzione Connetti ora alla creazione del server.
- Immettere i dettagli del server nella scheda Connessione e salvare.
- Assicurarsi che un utente Microsoft Entra ID valido sia specificato in Nome utente.
- Dal menu pgAdmin Oggetto selezionare Connetti server.
- Immettere la password del token Microsoft Entra ID quando richiesto.
Di seguito sono riportate alcune considerazioni essenziali per la connessione:
user@tenant.onmicrosoft.com
è il nome dell'utente Microsoft Entra ID.- Assicurarsi di usare il modo esatto in cui viene digitato l'utente Azure. I nomi utente e gruppo Microsoft Entra ID fanno distinzione tra maiuscole e minuscole.
- 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 90 minuti. È necessario ottenere il token di accesso prima di avviare l'accesso ad Azure Cosmos for PostgreSQL.
Ora si è autenticati nel server Azure Cosmos for PostgreSQL tramite l'autenticazione Microsoft Entra ID.
Gestire i ruoli PostgreSQL nativi
Quando l'autenticazione PostgreSQL nativa è abilitata nel cluster, è possibile aggiungere ed eliminare ruoli Postgres oltre al ruolo "citus" predefinito. È inoltre possibile reimpostare la password e modificare i privilegi Postgres per i ruoli nativi.
Come eliminare un ruolo utente PostgreSQL nativo o modificare la password
Per aggiornare un utente, visitare la pagina Autenticazione per il cluster e selezionare i puntini di sospensione ... accanto all'utente. I puntini di sospensione aprono un menu per eliminare l'utente o reimpostare la password.
Il ruolo citus
è dotato di privilegi e non può essere eliminato. Tuttavia, il ruolo citus
verrebbe disabilitato se per il cluster viene selezionato il metodo di autenticazione “Solo autenticazione Microsoft Entra ID”.
Come modificare i privilegi per i ruoli utente
I nuovi ruoli utente vengono comunemente usati per fornire l'accesso al database con privilegi limitati. Per modificare i privilegi utente, usare i comandi PostgreSQL standard utilizzando uno strumento come PgAdmin o psql. Per altre informazioni, vedere Connettersi a un cluster.
Ad esempio, per consentire a PostgreSQL db_user
di leggere mytable
, concedere l'autorizzazione:
GRANT SELECT ON mytable TO db_user;
Per concedere le stesse autorizzazioni al ruolo Microsoft Entra ID user@tenant.onmicrosoft.com
, usare il comando seguente:
GRANT SELECT ON mytable TO "user@tenant.onmicrosoft.com";
Azure Cosmos DB for PostgreSQL propaga istruzioni GRANT a tabella singola nell'intero cluster, applicandole a tutti i nodi di lavoro. Propaga inoltre GRANT a livello di sistema, ad esempio a tutte le tabelle presenti in uno schema:
-- applies to the coordinator node and propagates to worker nodes for Postgres role db_user
GRANT SELECT ON ALL TABLES IN SCHEMA public TO db_user;
Oppure al ruolo Microsoft Entra ID
-- applies to the coordinator node and propagates to worker nodes for Azure AD role user@tenant.onmicrosoft.com
GRANT SELECT ON ALL TABLES IN SCHEMA public TO "user@tenant.onmicrosoft.com";