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
- Du behöver ett Azure-konto med en aktiv prenumeration. Skapa ett konto utan kostnad.
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 hoppInternet
. - 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.
- 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
- 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:
- Under serveretablering går du till Azure-portalen och väljer antingen PostgreSQL- och Microsoft Entra-autentisering eller Endast Microsoft Entra-autentisering som autentiseringsmetod.
- 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.
Följ dessa steg för att ange Microsoft Entra-administratören när servern har skapats:
- I Azure Portal väljer du den instans av flexibel Azure Database for PostgreSQL-server som du vill aktivera för Microsoft Entra-ID.
- 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.
- 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.
- Välj Spara.
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:
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:
- Öppna Pgadmin och välj Registrera på den vänstra menyn och välj Server
- På fliken Allmänt anger du ett anslutningsnamn och avmarkerar alternativet Anslut nu .
- Välj 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
- På webbläsarmenyn väljer du din flexibla Serveranslutning för Azure Database for PostgreSQL och väljer Anslut server
- Ange ditt Active Directory-tokenlösenord när du uppmanas att göra det.
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örPGUGSER
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.