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
- I Azure-portalen väljer du den instans av Azure Database for PostgreSQL som du vill aktivera för Microsoft Entra-ID.
- Under Inställningar väljer du Active Directory-administratör:
- 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:
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:
- Avmarkera alternativet Anslut nu när servern skapas.
- Ange serverinformationen på anslutningsfliken och spara.
- I webbläsarmenyn väljer du Anslut till Azure Database for PostgreSQL-servern
- 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):
- Kontrollera först att Microsoft Entra-användaren
<user>@yourtenant.onmicrosoft.com
är en giltig användare i Microsoft Entra-klientorganisationen. - Logga in på din Azure Database for PostgreSQL-instans som Microsoft Entra-administratörsanvändare.
- Skapa roll
<user>@yourtenant.onmicrosoft.com
i Azure Database for PostgreSQL. - 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
- Granska de övergripande begreppen för Microsoft Entra-autentisering med Azure Database for PostgreSQL – enskild server