Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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
- Du behöver ett Azure-konto med en aktiv prenumeration. Skapa ett konto kostnadsfritt.
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 AzureActiveDirectorytjänsttaggen.
- Om du använder en routningstabell lägger du till en väg med målet AzureActiveDirectoryoch nästa hoppInternet.
- Om du använder en proxy kan du endast tillåta HTTPS-trafik till tjänsttaggen AzureActiveDirectory.
 
- Lägg till en utgående NSG-regel som endast tillåter trafik till 
- 
              Anpassad DNS: - Se till att dessa värdnamn kan lösas upp offentligt: login.microsoftonline.com(autentisering) ochgraph.microsoft.com(Microsoft Graph API).
- Om lösningen misslyckas misslyckas administrationstilldelningen och tokenanskaffningsåtgärderna.
 
- Se till att dessa värdnamn kan lösas upp offentligt: 
Följ dessa steg för att ange Microsoft Entra-administratören under serveretablering:
- Under serveretablering i Azure-portalen väljer du antingen PostgreSQL- och Microsoft Entra-autentisering eller 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 .
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:
- I Azure-portalen 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 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 PGPASSWORDfö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:
- Öppna PgAdmin och välj Registrera>server.
- På fliken Allmänt anger du ett anslutningsnamn och avmarkerar Anslut nu.
- På fliken Anslutning anger du värdinformation. Ange Användarnamn till ditt Microsoft Entra UPN (till exempel user@tenant.onmicrosoft.com). Spara.
- I trädet väljer du servern och väljer Anslut server.
- 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- PGUSERmiljö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_syncparam 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.