Dela via


Använd Microsoft Entra ID för autentisering med Azure Database for PostgreSQL flexibel server

GÄLLER FÖR: Azure Database for PostgreSQL – flexibel server

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

Du kan konfigurera Microsoft Entra-autentisering för flexibel Azure Database for PostgreSQL-server under serveretablering eller senare. Endast Microsoft Entra-administratörsanvändare kan skapa eller aktivera användare för Microsoft Entra ID-baserad autentisering. Vi rekommenderar att du inte använder Microsoft Entra-administratören för regelbundna databasåtgärder eftersom den rollen har utökade användarbehörigheter (till exempel CREATEB).

Du kan ha flera Microsoft Entra-administratörsanvändare med flexibel Azure Database for PostgreSQL-server. 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. Det kräver utgående anslutning för att utföra vissa åtgärder, till exempel att lägga till Microsoft Entra-administratörsgrupper. Dessutom behöver du nätverksregler för att Microsoft Entra-anslutningen ska fungera, beroende på nätverkstopologin:

  • Offentlig åtkomst (tillåtna IP-adresser): Inga extra nätverksregler krävs.

  • Privat åtkomst (integrering av virtuellt nätverk):

    • Du behöver en regel för utgående nätverkssäkerhetsgrupp (NSG) för att tillåta att virtuell nätverkstrafik endast når AzureActiveDirectory tjänsttaggen.
    • Om du använder en routningstabell måste du skapa en regel med måltjänsttaggen AzureActiveDirectory och nästa hopp Internet.
    • Om du använder en proxy kan du också lägga till en ny brandväggsregel som tillåter att HTTP/S-trafik endast AzureActiveDirectory når tjänsttaggen.
  • Anpassad DNS: Det finns ytterligare överväganden om du använder anpassad DNS i ditt virtuella nätverk (VNET). I sådana fall är det viktigt att se till att följande slutpunkter matchar motsvarande IP-adresser: login.microsoftonline.com: Den här slutpunkten används i autentiseringssyfte. Kontrollera att din anpassade DNS-konfiguration gör det möjligt att matcha login.microsoftonline.com till rätt IP-adresser graph.microsoft.com: Den här slutpunkten används för att komma åt Microsoft Graph-API:et. Se till att din anpassade DNS-konfiguration tillåter matchning av graph.microsoft.com till rätt IP-adresser.

Följ dessa steg om du vill ange Microsoft Entra-administratören under serveretablering:

  1. Under serveretablering går du till Azure-portalen och väljer antingen PostgreSQL- och Microsoft Entra-autentisering eller Endast 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.

Kommentar

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

Skärmbild som visar val för att ange en Microsoft Entra-administratör under serveretablering.]

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.

Skärmbild som visar val för att ange en Microsoft Entra-administratör när servern har skapats.

Viktigt!

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

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

Följande diagram på hög nivå sammanfattar arbetsflödet för att använda Microsoft Entra-autentisering med Azure Database for PostgreSQL:

Diagram över autentiseringsflödet mellan Microsoft Entra-ID, användarens dator och servern.

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. Som du ser i föregående diagram skickas Microsoft Entra-token som lösenord.

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 med Microsoft Entra-ID som en flexibel Azure Database for PostgreSQL-serveranvändare. Du kan följa med i Azure Cloud Shell, på en virtuell Azure-dator eller på din lokala dator.

Logga in på användarens Azure-prenumeration

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 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 är det bäst att använda åtkomsttoken som PostgreSQL-användarlösenord.

När du använder psql-kommandoradsklienten måste åtkomsttoken skickas via PGPASSWORD miljövariabeln. Anledningen är att åtkomsttoken överskrider lösenordslängden 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/macOS-exempel:

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

Du kan också kombinera steg 2 och steg 3 med kommandoersättning. Tokenhämtningen kan kapslas in i en variabel och skickas direkt som ett värde för PGPASSWORD miljövariabeln:

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

Nu kan du initiera en anslutning med Azure Database for PostgreSQL som vanligt:

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 klicka på Registrera på den vänstra menyn och välj Server
  2. fliken Allmänt anger du ett anslutningsnamn och avmarkerar alternativet Anslut nu .
  3. Klicka på fliken Anslutning och ange information om den flexibla serverinstansen i Azure Database for PostgreSQL för värdnamn/adress och användarnamn och spara. användarnamn är ditt Microsoft Entra-ID eller e-postmeddelande
  4. I webbläsarmenyn väljer du din flexibla serveranslutning för Azure Database for PostgreSQL och klickar på Anslut server
  5. Ange ditt Active Directory-tokenlösenord när du uppmanas att göra det.

Skärmbild som visar inloggningsprocessen med hjälp av PG-administratör.

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

Skapa Microsoft Entra-grupper i Azure Database for PostgreSQL – flexibel server

Om du vill göra det möjligt för en Microsoft Entra-grupp att komma åt databasen använder du samma mekanism som du använde för användare, men anger gruppnamnet i stället. Till exempel:

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

När gruppmedlemmar loggar in använder de sina åtkomsttoken men anger gruppnamnet som användarnamn.

Kommentar

Azure Database for PostgreSQL – flexibel server stöder hanterade identiteter och tjänstens huvudnamn som gruppmedlemmar.

Logga in på användarens Azure-prenumeration

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 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 är namnet på den Microsoft Entra-grupp som du försöker ansluta till.
  • Se till att använda exakt hur Microsoft Entra-gruppnamnet stavas. Microsoft Entra-användar- och gruppnamn är skiftlägeskänsliga.
  • När du ansluter som en grupp använder du bara gruppnamnet och inte aliaset för en gruppmedlem.
  • Om namnet innehåller blanksteg använder du ett omvänt snedstreck (\) före varje blanksteg för att undkomma det.
  • Åtkomsttokens giltighet är 5 minuter till 60 minuter. Vi rekommenderar att du hämtar åtkomsttoken innan du påbörjar inloggningen till Azure Database for PostgreSQL.

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

Nästa steg