Dela via


Använda Microsoft Entra-ID för autentisering med Azure Database for PostgreSQL

I den här artikeln konfigurerar du Microsoft Entra ID-åtkomst för autentisering med Azure Database for PostgreSQL. Du lär dig också hur du använder en Microsoft Entra-token med en flexibel serverinstans i Azure Database for PostgreSQL.

Du kan konfigurera Microsoft Entra-autentisering för en flexibel Azure Database for PostgreSQL-serverinstans under serveretablering eller senare. Endast Microsoft Entra-administratörsanvändare kan skapa eller aktivera användare för Microsoft Entra-ID-baserad autentisering. Använd inte Microsoft Entra-administratören för vanliga databasåtgärder eftersom rollen har utökade användarbehörigheter (till exempel CREATEB).

Du kan ha flera Microsoft Entra-administratörsanvändare med Azure Database for PostgreSQL. Microsoft Entra-administratörsanvändare kan vara en användare, en grupp eller tjänstens huvudnamn.

Förutsättningar

Konfigurera nätverkskrav

Microsoft Entra ID är ett program med flera klientorganisationer. Den behöver utgående anslutning för åtgärder som att lägga till Microsoft Entra-administratörsgrupper.

Nätverkskraven varierar beroende på topologi:

  • Offentlig åtkomst (tillåtna IP-adresser): Inga extra utgående regler krävs.
  • Privat åtkomst (integrering av virtuellt nätverk):
    • Lägg till en utgående NSG-regel som endast tillåter trafik till AzureActiveDirectory tjänsttaggen.
    • Om du använder en routningstabell lägger du till en väg med målet AzureActiveDirectory och nästa hopp Internet.
    • Om du använder en proxy kan du endast tillåta HTTPS-trafik till tjänsttaggen AzureActiveDirectory .
  • Anpassad DNS:
    • Se till att dessa värdnamn kan lösas upp offentligt: login.microsoftonline.com (autentisering) och graph.microsoft.com (Microsoft Graph API).
    • Om lösningen misslyckas misslyckas administrationstilldelningen och tokenanskaffningsåtgärderna.

Följ dessa steg för att ange Microsoft Entra-administratören under serveretablering:

  1. Under serveretablering i Azure-portalen väljer du antingen PostgreSQL- och Microsoft Entra-autentisering eller Microsoft Entra-autentisering som autentiseringsmetod.
  2. På fliken Ange administratör väljer du en giltig Microsoft Entra-användare, grupp, tjänstens huvudnamn eller hanterade identitet i kundklientorganisationen för att vara Microsoft Entra-administratör.

Du kan också lägga till ett lokalt PostgreSQL-administratörskonto om du föredrar att använda autentiseringsmetoden PostgreSQL och Microsoft Entra .

Anmärkning

Du kan bara lägga till en Microsoft Entra-administratör under serveretablering. Du kan lägga till flera Microsoft Entra-administratörsanvändare när servern har skapats.

Följ dessa steg för att ange Microsoft Entra-administratören när servern har skapats:

  1. I Azure-portalen väljer du den instans av flexibel Azure Database for PostgreSQL-server som du vill aktivera för Microsoft Entra-ID.
  2. Under Säkerhet väljer du Autentisering. Välj sedan antingen PostgreSQL- och Microsoft Entra-autentisering eller Endast Microsoft Entra-autentisering som autentiseringsmetod baserat på dina krav.
  3. Välj Lägg till Microsoft Entra-administratörer. Välj sedan en giltig Microsoft Entra-användare, grupp, tjänstens huvudnamn eller hanterad identitet i kundklientorganisationen för att vara Microsoft Entra-administratör.
  4. Välj Spara.

Viktigt!

När du ställer in administratören läggs en ny användare till i din flexibla Azure Database for PostgreSQL-serverinstans med fullständig administratörsbehörighet.

Ansluta till Azure Database for PostgreSQL med hjälp av Microsoft Entra-ID

Microsoft Entra-integrering fungerar med PostgreSQL-standardverktyg som psql, som inte är Microsoft Entra-medvetna och stöder endast att ange användarnamn och lösenord när du ansluter till PostgreSQL.

Vi har testat följande klienter:

  • psql-kommandorad: Använd variabeln PGPASSWORD för att skicka token.
  • Azure Data Studio: Använd PostgreSQL-tillägget.
  • Andra libpq-baserade klienter: Exempel är vanliga programramverk och objektrelationsmappare (ORM).
  • PgAdmin: Rensa Anslut nu när servern skapas.

Autentisera med Microsoft Entra-ID

Använd följande procedurer för att autentisera dig med Microsoft Entra ID som användare av en Azure Database för PostgreSQL flexibel serverinstans.

Du kan följa med genom att använda:

  • Azure Cloud Shell
  • Virtuell Azure-dator
  • Din lokala dator

Logga in på Azure

Börja med att autentisera med Microsoft Entra-ID med hjälp av Azure CLI. Det här steget krävs inte i Azure Cloud Shell.

az login

Kommandot öppnar ett webbläsarfönster på autentiseringssidan för Microsoft Entra. Det kräver att du ger ditt Användar-ID och lösenord för Microsoft Entra.

Hämta en Microsoft Entra-åtkomsttoken

Använd Azure CLI för att hämta en åtkomsttoken för den Microsoft Entra-autentiserade användaren för att få åtkomst till Azure Database for PostgreSQL. Här är ett exempel på det offentliga molnet:

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

Föregående resursvärde måste anges som det visas. För andra moln kan du söka efter resursvärdet med hjälp av följande kommando:

az cloud show

För Azure CLI version 2.0.71 och senare kan du ange kommandot i följande praktiska version för alla moln:

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

När autentiseringen har slutförts returnerar Microsoft Entra-ID en åtkomsttoken:

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

Token är en Base64-sträng. Den kodar all information om den autentiserade användaren och är riktad till Azure Database for PostgreSQL-tjänsten.

Använda en token som lösenord för att logga in med klientens psql

När du ansluter använder du åtkomsttoken som PostgreSQL-användarlösenord.

När du använder psql-kommandoradsklienten måste du skicka åtkomsttoken via PGPASSWORD miljövariabeln. Åtkomsttoken är längre än den lösenordslängd som psql kan acceptera direkt.

Här är ett Windows-exempel:

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

Här är ett Linux- eller macOS-exempel:

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

Du kan också kombinera steg 2 och steg 3 med hjälp av kommandoersättning. Du kan placera tokenhämtningen i en variabel och skicka den direkt som värde för PGPASSWORD miljövariabeln:

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

Anslut nu till Azure Database for PostgreSQL:

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

Använda en token som lösenord för att logga in med PgAdmin

Följ dessa steg för att ansluta med hjälp av en Microsoft Entra-token med PgAdmin:

  1. Öppna PgAdmin och välj Registrera>server.
  2. På fliken Allmänt anger du ett anslutningsnamn och avmarkerar Anslut nu.
  3. På fliken Anslutning anger du värdinformation. Ange Användarnamn till ditt Microsoft Entra UPN (till exempel user@tenant.onmicrosoft.com). Spara.
  4. I trädet väljer du servern och väljer Anslut server.
  5. När du uppmanas att göra det klistrar du in åtkomsttoken som lösenord.

Här följer några viktiga överväganden när du ansluter:

  • user@tenant.onmicrosoft.com är userPrincipalName för Microsoft Entra-användaren.

  • Se till att använda exakt hur Azure-användaren stavas. Microsoft Entra-användar- och gruppnamn är skiftlägeskänsliga.

  • Om namnet innehåller blanksteg använder du ett omvänt snedstreck (\) före varje blanksteg för att undkomma det. Du kan använda Azure CLI för att hämta den inloggade användaren och ange värdet för PGUSER miljövariabeln:

    export PGUSER=$(az ad signed-in-user show --query "[userPrincipalName]" -o tsv | sed 's/ /\\ /g')
    
  • Åtkomsttokens giltighet är 5 minuter till 60 minuter. Du bör hämta åtkomsttoken innan du initierar inloggningen till Azure Database for PostgreSQL.

Nu autentiseras du till din Azure Database for PostgreSQL-server via Microsoft Entra-autentisering.

Autentisera med Microsoft Entra-ID som gruppmedlem

Det här avsnittet visar hur du ansluter med hjälp av en Microsoft Entra-grupp. Du måste vara medlem i gruppen och gruppen måste skapas (mappas) i databasen.

Skapa ett grupphuvudnamn

Skapa gruppens huvudnamn (roll) i databasen (ersätt visningsnamnet efter behov):

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

Om gruppsynkronisering är inaktiverat kan medlemmar logga in med hjälp av sina åtkomsttoken och ange gruppnamnet som användarnamn.

Om gruppsynkronisering är aktiverat (via pgaadauth.enable_group_sync serverparameter inställd på "ON") bör medlemmarna logga in med sina individuella Entra-ID-autentiseringsuppgifter, men kan fortfarande logga in med gruppnamnet som användarnamn.

  • Gruppinloggningar är fortfarande tillgängliga av kompatibilitetsskäl men kan inaktiveras med: ALTER ROLE "ROLE_NAME" NOLOGIN;

  • Grupprollen ska inte tas bort för att bibehålla synkroniseringen.

  • Grupper synkroniseras automatiskt var 30:e minut.

  • Manuell synkronisering kan utlösas med: SELECT * FROM pgaadauth_sync_roles_for_group_members(); (pgaadauth.enable_group_sync param måste vara "ON").

  • Ändringar i gruppmetadata som gruppnamn synkroniseras inte

  • Ändringar i gruppmedlemskap synkroniseras

    Anmärkning

    Hanterade identiteter och tjänstens huvudnamn stöds som gruppmedlemmar.

Logga in på Azure

Autentisera med Microsoft Entra-ID med hjälp av Azure CLI. Det här steget krävs inte i Azure Cloud Shell. Användaren måste vara medlem i Microsoft Entra-gruppen.

az login

Hämta en Microsoft Entra-åtkomsttoken

Använd Azure CLI för att hämta en åtkomsttoken för den Microsoft Entra-autentiserade användaren för att få åtkomst till Azure Database for PostgreSQL. Här är ett exempel på det offentliga molnet:

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

Du måste ange det ursprungliga resursvärdet exakt som det visas. För andra moln kan du söka efter resursvärdet med hjälp av följande kommando:

az cloud show

För Azure CLI version 2.0.71 och senare kan du ange kommandot i följande praktiska version för alla moln:

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

När autentiseringen har slutförts returnerar Microsoft Entra-ID en åtkomsttoken:

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

Använda en token som lösenord för att logga in med psql eller PgAdmin

Dessa överväganden är viktiga när du ansluter som gruppmedlem:

  • Gruppnamnet måste exakt matcha visningsnamnet för Microsoft Entra-gruppen (skiftlägeskänsligt).
  • Använd endast gruppnamnet, inte ett medlemsalias.
  • Escape-blanksteg där det behövs (till exempel Prod\ DB\ Readonly).
  • Tokens giltighet är 5–60 minuter. Hämta den precis innan du ansluter; lagra inte token i skript.

Tips/Råd

Om autentiseringen misslyckas kontrollerar du att databasrollen finns (till exempel med \du) och bekräftar inställningen pgaadauth.enable_group_sync .

Nu autentiseras du till din PostgreSQL-server via Microsoft Entra-autentisering.