Delen via


Microsoft Entra-id gebruiken voor verificatie met Azure Database for PostgreSQL

In dit artikel configureert u microsoft Entra ID-toegang voor verificatie met Azure Database for PostgreSQL. U leert ook hoe u een Microsoft Entra-token gebruikt met een flexibele serverinstantie van Azure Database for PostgreSQL.

U kunt Microsoft Entra-verificatie configureren voor een flexibele serverinstantie van Azure Database for PostgreSQL, hetzij tijdens het inrichten van de server of later. Alleen Microsoft Entra-beheerders kunnen gebruikers maken of inschakelen voor verificatie op basis van Microsoft Entra-id's. Gebruik de Microsoft Entra-beheerder niet voor normale databasebewerkingen omdat deze rol verhoogde gebruikersmachtigingen heeft (bijvoorbeeld CREATEDB).

U kunt meerdere Microsoft Entra-beheerdersgebruikers hebben met Azure Database for PostgreSQL. Microsoft Entra-beheerders kunnen een gebruiker, een groep of service-principal zijn.

Vereiste voorwaarden

Netwerkvereisten configureren

Microsoft Entra ID is een multitenant-toepassing. Er is uitgaande connectiviteit nodig voor bewerkingen zoals het toevoegen van Microsoft Entra-beheergroepen.

Netwerkvereisten variëren per topologie:

  • Openbare toegang (toegestane IP-adressen): er zijn geen extra uitgaande regels vereist.
  • Privétoegang (integratie van virtueel netwerk):
    • Voeg alleen een uitgaande NSG-regel toe die verkeer naar de AzureActiveDirectory servicetag toestaat.
    • Als u een routetabel gebruikt, voegt u een route toe met bestemming AzureActiveDirectory en volgende hop Internet.
    • Als u een proxy gebruikt, staat u alleen HTTPS-verkeer naar de AzureActiveDirectory servicetag toe.
  • Aangepaste DNS:
    • Zorg ervoor dat deze hostnamen publiek toegankelijk zijn: login.microsoftonline.com (verificatie) en graph.microsoft.com (Microsoft Graph API).
    • Als de oplossing mislukt, mislukken beheertoewijzings- en tokenverwervingsbewerkingen.

Voer de volgende stappen uit om de Microsoft Entra-beheerder in te stellen tijdens het inrichten van de server:

  1. Selecteer in Azure Portal, tijdens het inrichten van de server, postgreSQL- en Microsoft Entra-verificatie of Microsoft Entra-verificatie alleen als verificatiemethode.
  2. Selecteer op het tabblad Beheerder instellen een geldige Microsoft Entra-gebruiker, groep, service-principal of beheerde identiteit in de tenant van de klant als Microsoft Entra-beheerder.

U kunt desgewenst een lokaal PostgreSQL-beheerdersaccount toevoegen als u liever de PostgreSQL- en Microsoft Entra-verificatiemethode gebruikt.

Opmerking

U kunt slechts één Microsoft Entra-beheerder toevoegen tijdens het inrichten van de server. U kunt meerdere Microsoft Entra-beheerdersgebruikers toevoegen nadat de server is gemaakt.

Voer de volgende stappen uit om de Microsoft Entra-beheerder in te stellen nadat de server is gemaakt:

  1. Selecteer in Azure Portal het exemplaar van de flexibele Azure Database for PostgreSQL-server die u wilt inschakelen voor Microsoft Entra-id.
  2. Selecteer Verificatie onder Beveiliging. Kies vervolgens PostgreSQL- en Microsoft Entra-verificatie of Microsoft Entra-verificatie alleen als verificatiemethode op basis van uw vereisten.
  3. Selecteer Microsoft Entra-beheerders toevoegen. Selecteer vervolgens een geldige Microsoft Entra-gebruiker, groep, service-principal of beheerde identiteit in de tenant van de klant als Microsoft Entra-beheerder.
  4. Selecteer Opslaan.

Belangrijk

Wanneer u de beheerder instelt, wordt er een nieuwe gebruiker toegevoegd aan uw flexibele Server-exemplaar van Azure Database for PostgreSQL met volledige beheerdersmachtigingen.

Verbinding maken met Azure Database for PostgreSQL met behulp van Microsoft Entra-id

Microsoft Entra-integratie werkt met standaard PostgreSQL-hulpprogramma's zoals psql, die niet op de hoogte zijn van Microsoft Entra en ondersteuning bieden om alleen de gebruikersnaam en het wachtwoord op te geven wanneer u verbinding maakt met PostgreSQL.

We hebben de volgende clients getest:

  • psql-opdrachtregel: gebruik de PGPASSWORD variabele om het token door te geven.
  • Azure Data Studio: gebruik de PostgreSQL-extensie.
  • Andere clients op basis van libpq: voorbeelden zijn algemene toepassingsframeworks en object-relationele mappers (ORM's).
  • PgAdmin: Wis nu Verbinding maken bij het maken van de server.

Verifiëren met Microsoft Entra-id

Gebruik de volgende procedures om te authenticeren bij Microsoft Entra ID als een gebruiker van een flexibel serverexemplaar van Azure Database voor PostgreSQL.

U kunt dit volgen met behulp van:

  • Azure Cloud Shell
  • Virtuele Azure-machine
  • Uw lokale computer

Aanmelden bij Azure

Begin met verificatie met Microsoft Entra ID met behulp van de Azure CLI. 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 -wachtwoord opgeven.

Een Microsoft Entra-toegangstoken ophalen

Gebruik de Azure CLI om een toegangstoken op te halen voor de geverifieerde Microsoft Entra-gebruiker voor toegang tot Azure Database for PostgreSQL. Hier volgt een voorbeeld van de openbare cloud:

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

De voorgaande resourcewaarde moet worden opgegeven zoals wordt weergegeven. Voor andere clouds kunt u de resourcewaarde opzoeken met behulp van de volgende opdracht:

az cloud show

Voor Azure CLI versie 2.0.71 en hoger kunt u de opdracht opgeven in de volgende handige versie voor alle clouds:

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

Nadat de verificatie is geslaagd, retourneert De Microsoft Entra-id een toegangstoken:

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

Het token is een Base64-tekenreeks. Het codeert alle informatie over de geverifieerde gebruiker en is gericht op de Azure Database for PostgreSQL-service.

Een token gebruiken als wachtwoord voor aanmelding met client psql

Wanneer u verbinding maakt, gebruikt u het toegangstoken als het PostgreSQL-gebruikerswachtwoord.

Wanneer u de psql-opdrachtregelclient gebruikt, moet u het toegangstoken doorgeven via de PGPASSWORD omgevingsvariabele. Het toegangstoken is langer dan de wachtwoordlengte die psql rechtstreeks kan accepteren.

Hier volgt een Windows-voorbeeld:

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

Hier volgt een Voorbeeld van Linux of macOS:

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

U kunt stap 2 en stap 3 ook combineren met behulp van opdrachtvervanging. U kunt het token ophalen in een variabele plaatsen en deze rechtstreeks doorgeven als de waarde voor de PGPASSWORD omgevingsvariabele:

export PGPASSWORD=$(az account get-access-token --resource-type oss-rdbms --query "[accessToken]" -o tsv)

Maak nu verbinding met Azure Database for PostgreSQL:

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

Een token gebruiken als wachtwoord voor aanmelding met PgAdmin

Volg deze stappen om verbinding te maken met behulp van een Microsoft Entra-token met PgAdmin:

  1. Open PgAdmin en selecteer Registreren>Server.
  2. Voer op het tabblad Algemeen een verbindingsnaam in en haal het vinkje weg bij nu Verbinding maken.
  3. Voer op het tabblad Verbinding hostgegevens in. Stel de gebruikersnaam in op uw Microsoft Entra UPN (bijvoorbeeld user@tenant.onmicrosoft.com). Opslaan.
  4. Selecteer in de structuur de server en kies Verbinding maken met server.
  5. Wanneer u hierom wordt gevraagd, plakt u het toegangstoken als het wachtwoord.

Hier volgen enkele belangrijke overwegingen wanneer u verbinding maakt:

  • user@tenant.onmicrosoft.com is de userPrincipalName van de Microsoft Entra-gebruiker.

  • Zorg ervoor dat u de exacte manier gebruikt waarop de Azure-gebruiker is gespeld. Microsoft Entra-gebruikers- en groepsnamen zijn hoofdlettergevoelig.

  • Als de naam spaties bevat, gebruikt u een backslash (\) voor elke spatie om deze te escapen. U kunt de Azure CLI gebruiken om de aangemelde gebruiker op te halen en de waarde voor PGUSER omgevingsvariabele in te stellen:

    export PGUSER=$(az ad signed-in-user show --query "[userPrincipalName]" -o tsv | sed 's/ /\\ /g')
    
  • De geldigheid van het toegangstoken is 5 minuten tot 60 minuten. U moet het toegangstoken ophalen voordat u de aanmelding bij Azure Database for PostgreSQL start.

U bent nu geverifieerd bij uw Azure Database for PostgreSQL-server via Microsoft Entra-verificatie.

Verifiëren met Microsoft Entra-id als groepslid

In deze sectie wordt beschreven hoe u verbinding maakt met behulp van een Microsoft Entra-groep. U moet lid zijn van de groep en de groep moet worden aangemaakt (gekoppeld) in de database.

Een groepsprincipaal maken

Maak de groepsprincipaal (rol) in de database (vervang indien nodig de weergavenaam):

select * from  pgaadauth_create_principal('Prod DB Readonly', false, false).

Als groepssynchronisatie is uitgeschakeld, kunnen leden zich aanmelden met hun toegangstokens en de groepsnaam opgeven als gebruikersnaam.

Als groepssynchronisatie is ingeschakeld (via pgaadauth.enable_group_sync serverparameter ingesteld op ON), moeten leden zich aanmelden met hun afzonderlijke Entra-id-referenties, maar kunnen ze zich nog steeds aanmelden met de groepsnaam als gebruikersnaam.

  • Groepsaanmeldingen blijven beschikbaar om compatibiliteitsredenen, maar kunnen worden uitgeschakeld met: ALTER ROLE "ROLE_NAME" NOLOGIN;

  • De groepsrol mag niet worden verwijderd om de synchronisatie te behouden.

  • Groepen worden elke 30 minuten automatisch gesynchroniseerd.

  • Handmatige synchronisatie kan worden geactiveerd met: SELECT * FROM pgaadauth_sync_roles_for_group_members(); (pgaadauth.enable_group_sync param moet 'AAN' zijn).

  • Wijzigingen in groepsmetagegevens, zoals groepsnaam, worden niet gesynchroniseerd

  • Wijzigingen in groepslidmaatschap worden gesynchroniseerd

    Opmerking

    Beheerde identiteiten en service-principals worden ondersteund als groepsleden.

Aanmelden bij Azure

Verifieer met Microsoft Entra ID met behulp van de Azure CLI. Deze stap is niet vereist in Azure Cloud Shell. De gebruiker moet lid zijn van de Microsoft Entra-groep.

az login

Een Microsoft Entra-toegangstoken ophalen

Gebruik de Azure CLI om een toegangstoken op te halen voor de geverifieerde Microsoft Entra-gebruiker voor toegang tot Azure Database for PostgreSQL. Hier volgt een voorbeeld van de openbare cloud:

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

U moet de oorspronkelijke resourcewaarde exact opgeven zoals wordt weergegeven. Voor andere clouds kunt u de resourcewaarde opzoeken met behulp van de volgende opdracht:

az cloud show

Voor Azure CLI versie 2.0.71 en hoger kunt u de opdracht opgeven in de volgende handige versie voor alle clouds:

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

Nadat de verificatie is geslaagd, retourneert De Microsoft Entra-id een toegangstoken:

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

Een token als een wachtwoord gebruiken om u aan te melden met psql of PgAdmin

Deze overwegingen zijn essentieel wanneer u verbinding maakt als groepslid:

  • De groepsnaam moet exact overeenkomen met de weergavenaam van de Microsoft Entra-groep (hoofdlettergevoelig).
  • Gebruik alleen de groepsnaam, niet een alias van een lid.
  • Waar nodig escape-spaties (bijvoorbeeld Prod\ DB\ Readonly).
  • De geldigheid van het token is 5 tot 60 minuten. Verkrijg het net voordat je verbinding maakt; sla geen tokens op in scripts.

Aanbeveling

Als de verificatie mislukt, controleert u of de databaserol bestaat (bijvoorbeeld met \du) en bevestigt u de pgaadauth.enable_group_sync instelling.

U bent nu geverifieerd bij uw PostgreSQL-server via Microsoft Entra-verificatie.