Share via


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 Beheer 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

  1. Selecteer in Azure Portal het exemplaar van Azure Database for PostgreSQL dat u wilt inschakelen voor Microsoft Entra-id.
  2. Selecteer onder Instellingen Active Directory Beheer:

Microsoft Entra-beheerder instellen

  1. 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 Beheer gebruiker in Azure Database for PostgreSQL heeft de rolazure_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 naar 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:

verificatiestroom

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)
  • Pg Beheer (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 een wachtwoord om u aan te melden met Pg Beheer

Als u verbinding wilt maken met behulp van Microsoft Entra-token met pg Beheer moet u de volgende stappen uitvoeren:

  1. Schakel de optie Nu verbinding maken uit bij het maken van de server.
  2. Voer de servergegevens in op het tabblad Verbinding en sla deze op.
  3. Selecteer in het browsermenu verbinding maken met de Azure Database for PostgreSQL-server
  4. 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 Pg Beheer (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):

  1. Zorg er eerst voor dat de Microsoft Entra-gebruiker een geldige gebruiker <user>@yourtenant.onmicrosoft.com is in de Microsoft Entra-tenant.
  2. Meld u als de gebruiker van Microsoft Entra Beheer aan bij uw Azure Database for PostgreSQL-exemplaar.
  3. Een rol <user>@yourtenant.onmicrosoft.com maken in Azure Database for PostgreSQL.
  4. 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