Microsoft Entra-id gebruiken voor verificatie met PostgreSQL
VAN TOEPASSING OP: Azure Database for PostgreSQL - enkele server
Belangrijk
Azure Database for PostgreSQL - Enkele server bevindt zich op het buitengebruikstellingspad. We raden u ten zeerste aan om een upgrade uit te voeren naar Azure Database for PostgreSQL - Flexible Server. Zie Wat gebeurt er met Azure Database for PostgreSQL Enkele server voor meer informatie over migreren naar Azure Database for PostgreSQL - Flexible Server.
In dit artikel wordt stapsgewijs beschreven hoe u Microsoft Entra ID-toegang configureert met Azure Database for PostgreSQL en hoe u verbinding maakt met behulp van een Microsoft Entra-token.
De Microsoft Entra Admin-gebruiker instellen
Alleen Microsoft Entra-beheerders kunnen gebruikers maken/inschakelen voor verificatie op basis van Microsoft Entra-id's. U wordt aangeraden de Microsoft Entra-beheerder niet te gebruiken voor normale databasebewerkingen, omdat deze verhoogde gebruikersmachtigingen heeft (bijvoorbeeld CREATEDB).
Als u de Microsoft Entra-beheerder wilt instellen (u kunt een gebruiker of een groep gebruiken), volgt u de volgende stappen
- Selecteer in Azure Portal het exemplaar van Azure Database for PostgreSQL dat u wilt inschakelen voor Microsoft Entra-id.
- Selecteer Active Directory-beheerder onder Instellingen:
- Selecteer een geldige Microsoft Entra-gebruiker in de tenant van de klant als Microsoft Entra-beheerder.
Belangrijk
Wanneer u de beheerder instelt, wordt er een nieuwe gebruiker toegevoegd aan de Azure Database for PostgreSQL-server met volledige beheerdersmachtigingen.
De Microsoft Entra Admin-gebruiker in Azure Database for PostgreSQL heeft de rol azure_ad_admin
.
Er kan slechts één Microsoft Entra-beheerder per PostgreSQL-server worden gemaakt en de selectie van een andere server overschrijft de bestaande Microsoft Entra-beheerder die is geconfigureerd voor de server.
U kunt een Microsoft Entra-groep opgeven in plaats van een afzonderlijke gebruiker om meerdere beheerders te hebben.
Er kan slechts één Microsoft Entra-beheerder per PostgreSQL-server worden gemaakt en de selectie van een andere server overschrijft de bestaande Microsoft Entra-beheerder die is geconfigureerd voor de server. U kunt een Microsoft Entra-groep opgeven in plaats van een afzonderlijke gebruiker om meerdere beheerders te hebben. Houd er rekening mee dat u zich vervolgens aanmeldt met de groepsnaam voor beheerdoeleinden.
Verbinding maken met Azure Database for PostgreSQL met behulp van Microsoft Entra-id
In het volgende diagram op hoog niveau ziet u een overzicht van de werkstroom voor het gebruik van Microsoft Entra-verificatie met Azure Database for PostgreSQL:
We hebben de Microsoft Entra-integratie ontworpen om te werken met algemene PostgreSQL-hulpprogramma's zoals psql, die niet op de hoogte zijn van Microsoft Entra en alleen ondersteuning bieden voor het opgeven van gebruikersnaam en wachtwoord bij het maken van verbinding met PostgreSQL. We geven het Microsoft Entra-token door als het wachtwoord, zoals wordt weergegeven in de bovenstaande afbeelding.
We hebben momenteel de volgende clients getest:
- psql-opdrachtregel (gebruik de variabele PGPASSWORD om het token door te geven, zie stap 3 voor meer informatie)
- Azure Data Studio (met behulp van de PostgreSQL-extensie)
- Andere op libpq gebaseerde clients (bijvoorbeeld algemene toepassingsframeworks en ORM's)
- PgAdmin (schakel nu verbinding maken uit bij het maken van de server. Zie stap 4 voor meer informatie)
Dit zijn de stappen die een gebruiker/toepassing moet uitvoeren voor verificatie met Microsoft Entra-id die hieronder wordt beschreven:
Vereisten
U kunt meegaan in Azure Cloud Shell, een Azure-VM of op uw lokale computer. Zorg ervoor dat de Azure CLI is geïnstalleerd.
Verifiëren met Microsoft Entra-id als één gebruiker
Stap 1: Meld u aan bij het Azure-abonnement van de gebruiker
Begin met verificatie met Microsoft Entra ID met behulp van het Azure CLI-hulpprogramma. Deze stap is niet vereist in Azure Cloud Shell.
az login
Met de opdracht wordt een browservenster geopend op de microsoft Entra-verificatiepagina. Hiervoor moet u uw Microsoft Entra-gebruikers-id en het wachtwoord opgeven.
Stap 2: Microsoft Entra-toegangstoken ophalen
Roep het Azure CLI-hulpprogramma aan om een toegangstoken te verkrijgen voor de geverifieerde Microsoft Entra-gebruiker uit stap 1 voor toegang tot Azure Database for PostgreSQL.
Voorbeeld (voor openbare cloud):
az account get-access-token --resource https://ossrdbms-aad.database.windows.net
De bovenstaande resourcewaarde moet exact worden opgegeven zoals wordt weergegeven. Voor andere clouds kan de resourcewaarde worden opgezoekd met behulp van:
az cloud show
Voor Azure CLI versie 2.0.71 en hoger kan de opdracht worden opgegeven in de volgende handigere versie voor alle clouds:
az account get-access-token --resource-type oss-rdbms
Nadat de verificatie is geslaagd, retourneert Microsoft Entra ID een toegangstoken:
{
"accessToken": "TOKEN",
"expiresOn": "...",
"subscription": "...",
"tenant": "...",
"tokenType": "Bearer"
}
Het token is een Base 64-tekenreeks die alle informatie over de geverifieerde gebruiker codeert en die is gericht op de Azure Database for PostgreSQL-service.
Stap 3: Token gebruiken als wachtwoord voor het aanmelden met client-psql
Wanneer u verbinding maakt, moet u het toegangstoken gebruiken als het PostgreSQL-gebruikerswachtwoord.
Wanneer u de psql
opdrachtregelclient gebruikt, moet het toegangstoken worden doorgegeven via de PGPASSWORD
omgevingsvariabele, omdat het toegangstoken de wachtwoordlengte overschrijdt die psql
rechtstreeks kan worden geaccepteerd:
Windows-voorbeeld:
set PGPASSWORD=<copy/pasted TOKEN value from step 2>
$env:PGPASSWORD='<copy/pasted TOKEN value from step 2>'
Linux-/macOS-voorbeeld:
export PGPASSWORD=<copy/pasted TOKEN value from step 2>
U kunt nu een verbinding met Azure Database for PostgreSQL initiëren, zoals u normaal gesproken zou doen:
psql "host=mydb.postgres... user=user@tenant.onmicrosoft.com@mydb dbname=postgres sslmode=require"
Stap 4: Token gebruiken als wachtwoord voor aanmelden met PgAdmin
Als u verbinding wilt maken met behulp van Microsoft Entra-token met pgAdmin, moet u de volgende stappen uitvoeren:
- Schakel de optie Nu verbinding maken uit bij het maken van de server.
- Voer de servergegevens in op het tabblad Verbinding en sla deze op.
- Selecteer in het browsermenu verbinding maken met de Azure Database for PostgreSQL-server
- Voer het WACHTWOORD van het AD-token in wanneer u hierom wordt gevraagd.
Belangrijke overwegingen bij het verbinden:
user@tenant.onmicrosoft.com
is de naam van de Microsoft Entra-gebruiker- Zorg ervoor dat u de exacte manier gebruikt waarop de Azure-gebruiker wordt gespeld, omdat de Microsoft Entra-gebruikers- en groepsnamen hoofdlettergevoelig zijn.
- Als de naam spaties bevat, gebruikt
\
u vóór elke spatie om deze te ontsnappen. - De geldigheid van het toegangstoken ligt tussen 5 minuten en 60 minuten. U wordt aangeraden het toegangstoken te verkrijgen vlak voordat u de aanmelding bij Azure Database for PostgreSQL start.
U bent nu geverifieerd bij uw Azure Database for PostgreSQL-server met behulp van Microsoft Entra-verificatie.
Verifiëren met Microsoft Entra-id als groepslid
Stap 1: Microsoft Entra-groepen maken in Azure Database for PostgreSQL
Als u een Microsoft Entra-groep wilt inschakelen voor toegang tot uw database, gebruikt u hetzelfde mechanisme als voor gebruikers, maar geeft u in plaats daarvan de groepsnaam op:
Voorbeeld:
CREATE USER <new_user> IN ROLE azure_ad_user;
Wanneer u zich aanmeldt, gebruiken leden van de groep hun persoonlijke toegangstokens, maar ondertekenen ze met de groepsnaam die is opgegeven als de gebruikersnaam.
Stap 2: Meld u aan bij het Azure-abonnement van de gebruiker
Verifieer met Microsoft Entra ID met behulp van het Azure CLI-hulpprogramma. Deze stap is niet vereist in Azure Cloud Shell. De gebruiker moet lid zijn van de Microsoft Entra-groep.
az login
Stap 3: Microsoft Entra-toegangstoken ophalen
Roep het Azure CLI-hulpprogramma aan om een toegangstoken te verkrijgen voor de geverifieerde Microsoft Entra-gebruiker van stap 2 voor toegang tot Azure Database for PostgreSQL.
Voorbeeld (voor openbare cloud):
az account get-access-token --resource https://ossrdbms-aad.database.windows.net
De bovenstaande resourcewaarde moet exact worden opgegeven zoals wordt weergegeven. Voor andere clouds kan de resourcewaarde worden opgezoekd met behulp van:
az cloud show
Voor Azure CLI versie 2.0.71 en hoger kan de opdracht worden opgegeven in de volgende handigere versie voor alle clouds:
az account get-access-token --resource-type oss-rdbms
Nadat de verificatie is geslaagd, retourneert Microsoft Entra ID een toegangstoken:
{
"accessToken": "TOKEN",
"expiresOn": "...",
"subscription": "...",
"tenant": "...",
"tokenType": "Bearer"
}
Stap 4: Token gebruiken als wachtwoord voor het aanmelden met psql of PgAdmin (zie de bovenstaande stappen voor gebruikersverbinding)
Belangrijke overwegingen bij het maken van verbinding als groepslid:
- groupname@mydb is de naam van de Microsoft Entra-groep die u probeert te verbinden als
- Voeg altijd de servernaam toe na de Microsoft Entra-naam van de gebruiker/groep (bijvoorbeeld @mydb)
- Zorg ervoor dat u de exacte manier gebruikt waarop de microsoft Entra-groepsnaam is gespeld.
- Microsoft Entra-gebruikers- en groepsnamen zijn hoofdlettergevoelig
- Wanneer u verbinding maakt als groep, gebruikt u alleen de groepsnaam (bijvoorbeeld GroupName@mydb) en niet de alias van een groepslid.
- Als de naam spaties bevat, gebruikt u \ voor elke spatie om deze te escapen.
- De geldigheid van het toegangstoken ligt tussen 5 minuten en 60 minuten. U wordt aangeraden het toegangstoken te verkrijgen vlak voordat u de aanmelding bij Azure Database for PostgreSQL start.
U bent nu geverifieerd bij uw PostgreSQL-server met behulp van Microsoft Entra-verificatie.
Microsoft Entra-gebruikers maken in Azure Database for PostgreSQL
Als u een Microsoft Entra-gebruiker wilt toevoegen aan uw Azure Database for PostgreSQL-database, moet u de volgende stappen uitvoeren nadat u verbinding hebt gemaakt (zie de volgende sectie over het maken van verbinding):
- Zorg er eerst voor dat de Microsoft Entra-gebruiker een geldige gebruiker
<user>@yourtenant.onmicrosoft.com
is in de Microsoft Entra-tenant. - Meld u aan bij uw Azure Database for PostgreSQL-exemplaar als microsoft Entra Admin-gebruiker.
- Een rol
<user>@yourtenant.onmicrosoft.com
maken in Azure Database for PostgreSQL. - Maak
<user>@yourtenant.onmicrosoft.com
een lid van de rol azure_ad_user. Dit mag alleen worden gegeven aan Microsoft Entra-gebruikers.
Voorbeeld:
CREATE USER "user1@yourtenant.onmicrosoft.com" IN ROLE azure_ad_user;
Notitie
Het verifiëren van een gebruiker via Microsoft Entra-id geeft de gebruiker geen machtigingen voor toegang tot objecten in de Azure Database for PostgreSQL-database. U moet de gebruiker handmatig de vereiste machtigingen verlenen.
Tokenvalidatie
Microsoft Entra-verificatie in Azure Database for PostgreSQL zorgt ervoor dat de gebruiker op de PostgreSQL-server bestaat en controleert de geldigheid van het token door de inhoud van het token te valideren. De volgende tokenvalidatiestappen worden uitgevoerd:
- Token is ondertekend door Microsoft Entra-id en is niet gemanipuleerd met
- Token is uitgegeven door Microsoft Entra-id voor de tenant die is gekoppeld aan de server
- Token is niet verlopen
- Token is voor de Azure Database for PostgreSQL-resource (en niet voor een andere Azure-resource)
Bestaande PostgreSQL-gebruikers migreren naar verificatie op basis van Microsoft Entra ID
U kunt Microsoft Entra-verificatie inschakelen voor bestaande gebruikers. Er zijn twee gevallen waar u rekening mee moet houden:
Case 1: PostgreSQL-gebruikersnaam komt overeen met de Principal Name van de Microsoft Entra-gebruiker
In het onwaarschijnlijke geval dat uw bestaande gebruikers al overeenkomen met de Microsoft Entra-gebruikersnamen, kunt u de azure_ad_user
rol aan hen verlenen om ze in te schakelen voor Microsoft Entra-verificatie:
GRANT azure_ad_user TO "existinguser@yourtenant.onmicrosoft.com";
Ze kunnen zich nu aanmelden met Microsoft Entra-referenties in plaats van hun eerder geconfigureerde PostgreSQL-gebruikerswachtwoord te gebruiken.
Case 2: PostgreSQL username is different than the Microsoft Entra user Principal Name
Als een PostgreSQL-gebruiker niet bestaat in Microsoft Entra-id of een andere gebruikersnaam heeft, kunt u Microsoft Entra-groepen gebruiken om te verifiëren als deze PostgreSQL-gebruiker. U kunt bestaande Azure Database for PostgreSQL-gebruikers migreren naar Microsoft Entra ID door een Microsoft Entra-groep te maken met een naam die overeenkomt met de PostgreSQL-gebruiker en vervolgens rol azure_ad_user aan de bestaande PostgreSQL-gebruiker te verlenen:
GRANT azure_ad_user TO <new_user>;
Hierbij wordt ervan uitgegaan dat u een groep DBReadUser hebt gemaakt in uw Microsoft Entra-id. Gebruikers die tot die groep behoren, kunnen zich nu aanmelden bij de database als deze gebruiker.
Volgende stappen
- Bekijk de algemene concepten voor Microsoft Entra-verificatie met Azure Database for PostgreSQL - Enkele server