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

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

Viktigt!

Azure Database for PostgreSQL – enskild server är på väg att dras tillbaka. Vi rekommenderar starkt att du uppgraderar till Azure Database for PostgreSQL – flexibel server. Mer information om hur du migrerar till Azure Database for PostgreSQL – flexibel server finns i Vad händer med Azure Database for PostgreSQL – enskild server?.

Den här artikeln beskriver hur du konfigurerar Microsoft Entra ID-åtkomst med Azure Database for PostgreSQL och hur du ansluter med en Microsoft Entra-token.

Ange Microsoft Entra-administratörsanvändaren

Endast Microsoft Entra-administratörsanvändare kan skapa/aktivera användare för Microsoft Entra ID-baserad autentisering. Vi rekommenderar att du inte använder Microsoft Entra-administratören för vanliga databasåtgärder eftersom den har utökade användarbehörigheter (t.ex. CREATEB).

Om du vill ange Microsoft Entra-administratören (du kan använda en användare eller en grupp) följer du följande steg

  1. I Azure-portalen väljer du den instans av Azure Database for PostgreSQL som du vill aktivera för Microsoft Entra-ID.
  2. Under Inställningar väljer du Active Directory-administratör:

ange Microsoft Entra-administratör

  1. Välj en giltig Microsoft Entra-användare i kundklientorganisationen för att vara Microsoft Entra-administratör.

Viktigt!

När du anger administratör läggs en ny användare till i Azure Database for PostgreSQL-servern med fullständig administratörsbehörighet. Microsoft Entra-administratörsanvändaren i Azure Database for PostgreSQL har rollen azure_ad_admin. Endast en Microsoft Entra-administratör kan skapas per PostgreSQL-server och val av en annan skriver över den befintliga Microsoft Entra-administratören som konfigurerats för servern. Du kan ange en Microsoft Entra-grupp i stället för en enskild användare för att ha flera administratörer.

Endast en Microsoft Entra-administratör kan skapas per PostgreSQL-server och val av en annan skriver över den befintliga Microsoft Entra-administratören som konfigurerats för servern. Du kan ange en Microsoft Entra-grupp i stället för en enskild användare för att ha flera administratörer. Observera att du sedan loggar in med gruppnamnet i administrationssyfte.

Anslut till Azure Database for PostgreSQL med 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:

autentiseringsflöde

Vi har utformat Microsoft Entra-integreringen så att den fungerar med vanliga PostgreSQL-verktyg som psql, som inte är Microsoft Entra-medvetna och endast stöder att ange användarnamn och lösenord vid anslutning till PostgreSQL. Vi skickar Microsoft Entra-token som lösenord enligt bilden ovan.

För närvarande har vi testat följande klienter:

  • psql-kommandoraden (använd PGPASSWORD-variabeln för att skicka token, se steg 3 för mer information)
  • Azure Data Studio (med PostgreSQL-tillägget)
  • Andra libpq-baserade klienter (t.ex. vanliga programramverk och ORM:er)
  • PgAdmin (avmarkera anslut nu när servern skapas. Mer information finns i steg 4)

Det här är de steg som en användare/ett program måste utföra för att autentisera med Microsoft Entra-ID som beskrivs nedan:

Förutsättningar

Du kan följa med i Azure Cloud Shell, en virtuell Azure-dator eller på din lokala dator. Kontrollera att Azure CLI är installerat.

Autentisera med Microsoft Entra-ID som en enskild användare

Steg 1: Logga in på användarens Azure-prenumeration

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

az login

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

Steg 2: Hämta Microsoft Entra-åtkomsttoken

Anropa Azure CLI-verktyget för att hämta en åtkomsttoken för den Microsoft Entra-autentiserade användaren från steg 1 för att få åtkomst till Azure Database for PostgreSQL.

Exempel (för offentligt moln):

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

Ovanstående resursvärde måste anges exakt som det visas. För andra moln kan resursvärdet sökas upp med hjälp av:

az cloud show

För Azure CLI version 2.0.71 och senare kan kommandot anges i följande mer 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 Base 64-sträng som kodar all information om den autentiserade användaren och som är riktad till Tjänsten Azure Database for PostgreSQL.

Steg 3: Använd token som lösenord för att logga in med klientens psql

När du ansluter måste du använda åtkomsttoken som PostgreSQL-användarlösenord.

När du använder kommandoradsklienten psql måste åtkomsttoken skickas via PGPASSWORD miljövariabeln, eftersom åtkomsttoken överskrider lösenordslängden som psql kan accepteras direkt:

Windows-exempel:

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

Linux/macOS-exempel:

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

Nu kan du initiera en anslutning med Azure Database for PostgreSQL på samma sätt som normalt:

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

Steg 4: Använd token som lösenord för att logga in med PgAdmin

Om du vill ansluta med Microsoft Entra-token med pgAdmin måste du följa nästa steg:

  1. Avmarkera alternativet Anslut nu när servern skapas.
  2. Ange serverinformationen på anslutningsfliken och spara.
  3. I webbläsarmenyn väljer du Anslut till Azure Database for PostgreSQL-servern
  4. Ange AD-tokenlösenordet när du uppmanas att göra det.

Viktiga överväganden vid anslutning:

  • user@tenant.onmicrosoft.com är namnet på Microsoft Entra-användaren
  • Se till att använda exakt hur Azure-användaren stavas – eftersom Microsoft Entra-användar- och gruppnamnen är skiftlägeskänsliga.
  • Om namnet innehåller blanksteg använder \ du före varje blanksteg för att undkomma det.
  • Giltigheten för åtkomsttoken är mellan 5 minuter och 60 minuter. Vi rekommenderar att du hämtar åtkomsttoken precis innan du påbörjar inloggningen till Azure Database for PostgreSQL.

Nu autentiseras du till din Azure Database for PostgreSQL-server med Hjälp av Microsoft Entra-autentisering.

Autentisera med Microsoft Entra-ID som gruppmedlem

Steg 1: Skapa Microsoft Entra-grupper i Azure Database for PostgreSQL

Om du vill aktivera en Microsoft Entra-grupp för åtkomst till databasen använder du samma mekanism som för användare, men anger i stället gruppnamnet:

Exempel:

CREATE USER <new_user> IN ROLE azure_ad_user;

När du loggar in använder medlemmar i gruppen sina personliga åtkomsttoken, men loggar med gruppnamnet som anges som användarnamn.

Steg 2: Logga in på användarens Azure-prenumeration

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

az login

Steg 3: Hämta Microsoft Entra-åtkomsttoken

Anropa Azure CLI-verktyget för att hämta en åtkomsttoken för den Microsoft Entra-autentiserade användaren från steg 2 för att få åtkomst till Azure Database for PostgreSQL.

Exempel (för offentligt moln):

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

Ovanstående resursvärde måste anges exakt som det visas. För andra moln kan resursvärdet sökas upp med hjälp av:

az cloud show

För Azure CLI version 2.0.71 och senare kan kommandot anges i följande mer 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"
}

Steg 4: Använd token som lösenord för att logga in med psql eller PgAdmin (se ovanstående steg för användaranslutning)

Viktiga saker att tänka på när du ansluter som gruppmedlem:

  • groupname@mydb är namnet på den Microsoft Entra-grupp som du försöker ansluta som
  • Lägg alltid till servernamnet efter Microsoft Entra-användar-/gruppnamnet (t.ex. @mydb)
  • 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 (t.ex. GroupName@mydb) och inte aliaset för en gruppmedlem.
  • Om namnet innehåller blanksteg använder du \ före varje blanksteg för att undvika det.
  • Giltigheten för åtkomsttoken är mellan 5 minuter och 60 minuter. Vi rekommenderar att du hämtar åtkomsttoken precis innan du påbörjar inloggningen till Azure Database for PostgreSQL.

Nu autentiseras du till din PostgreSQL-server med Hjälp av Microsoft Entra-autentisering.

Skapa Microsoft Entra-användare i Azure Database for PostgreSQL

Om du vill lägga till en Microsoft Entra-användare i din Azure Database for PostgreSQL-databas utför du följande steg efter anslutningen (se senare avsnitt om hur du ansluter):

  1. Kontrollera först att Microsoft Entra-användaren <user>@yourtenant.onmicrosoft.com är en giltig användare i Microsoft Entra-klientorganisationen.
  2. Logga in på din Azure Database for PostgreSQL-instans som Microsoft Entra-administratörsanvändare.
  3. Skapa roll <user>@yourtenant.onmicrosoft.com i Azure Database for PostgreSQL.
  4. Gör <user>@yourtenant.onmicrosoft.com en medlem i rollen azure_ad_user. Detta får endast ges till Microsoft Entra-användare.

Exempel:

CREATE USER "user1@yourtenant.onmicrosoft.com" IN ROLE azure_ad_user;

Kommentar

Att autentisera en användare via Microsoft Entra-ID ger inte användaren behörighet att komma åt objekt i Azure Database for PostgreSQL-databasen. Du måste ge användaren de behörigheter som krävs manuellt.

Tokenverifiering

Microsoft Entra-autentisering i Azure Database for PostgreSQL säkerställer att användaren finns på PostgreSQL-servern och kontrollerar tokens giltighet genom att verifiera innehållet i token. Följande verifieringssteg för token utförs:

  • Token är signerad av Microsoft Entra-ID och har inte manipulerats
  • Token utfärdades av Microsoft Entra-ID för den klientorganisation som är associerad med servern
  • Token har inte upphört att gälla
  • Token är för Azure Database for PostgreSQL-resursen (och inte en annan Azure-resurs)

Migrera befintliga PostgreSQL-användare till Microsoft Entra ID-baserad autentisering

Du kan aktivera Microsoft Entra-autentisering för befintliga användare. Det finns två fall att tänka på:

Fall 1: PostgreSQL-användarnamnet matchar Microsoft Entra-användarens huvudnamn

I det osannolika fallet att dina befintliga användare redan matchar Microsoft Entra-användarnamnen azure_ad_user kan du bevilja rollen till dem för att aktivera dem för Microsoft Entra-autentisering:

GRANT azure_ad_user TO "existinguser@yourtenant.onmicrosoft.com";

De kommer nu att kunna logga in med Microsoft Entra-autentiseringsuppgifter i stället för att använda sitt tidigare konfigurerade PostgreSQL-användarlösenord.

Fall 2: PostgreSQL-användarnamnet skiljer sig från Microsoft Entra-användarens huvudnamn

Om en PostgreSQL-användare antingen inte finns i Microsoft Entra-ID eller har ett annat användarnamn kan du använda Microsoft Entra-grupper för att autentisera som den här PostgreSQL-användaren. Du kan migrera befintliga Azure Database for PostgreSQL-användare till Microsoft Entra-ID genom att skapa en Microsoft Entra-grupp med ett namn som matchar PostgreSQL-användaren och sedan bevilja roll azure_ad_user till den befintliga PostgreSQL-användaren:

GRANT azure_ad_user TO <new_user>;

Detta förutsätter att du har skapat en grupp "DBReadUser" i ditt Microsoft Entra-ID. Användare som tillhör den gruppen kommer nu att kunna logga in på databasen som den här användaren.

Nästa steg