Dela via


Använda Microsoft Entra-ID och interna PostgreSQL-roller för autentisering med Azure Cosmos DB för PostgreSQL

GÄLLER FÖR: Azure Cosmos DB for PostgreSQL (drivs av Citus-databastillägget till PostgreSQL)

I den här artikeln konfigurerar du autentiseringsmetoder för Azure Cosmos DB för PostgreSQL. Du hanterar Microsoft Entra ID-administratörsanvändare och interna PostgreSQL-roller för autentisering med Azure Cosmos DB för PostgreSQL. Du lär dig också hur du använder en Microsoft Entra-ID-token med Azure Cosmos DB for PostgreSQL.

Ett Azure Cosmos DB for PostgreSQL-kluster skapas med en inbyggd PostgreSQL-roll med namnet "citus". Du kan lägga till fler interna PostgreSQL-roller när klusteretablering har slutförts.

Du kan också konfigurera Microsoft Entra ID-autentisering (tidigare Azure Active Directory) för Azure Cosmos DB för PostgreSQL. Du kan aktivera Microsoft Entra-ID-autentisering utöver eller i stället för den interna PostgreSQL-autentiseringen i klustret. Du kan ändra autentiseringsmetoder som är aktiverade i klustret när som helst när klustret har etablerats. När Microsoft Entra ID-autentisering är aktiverat kan du lägga till flera Microsoft Entra-ID-användare i ett Azure Cosmos DB for PostgreSQL-kluster och göra någon av dem till administratörer. Microsoft Entra-ID-användare kan vara en användare eller ett huvudnamn för tjänsten.

Välj autentiseringsmetod

Du måste använda Azure-portalen för att konfigurera autentiseringsmetoder i ett Azure Cosmos DB for PostgreSQL-kluster.

Slutför följande objekt i ditt Azure Cosmos DB for PostgreSQL-kluster för att aktivera eller inaktivera Microsoft Entra ID-autentisering och inbyggd PostgreSQL-autentisering.

  1. På klustersidan går du till rubriken Klusterhantering och väljer Autentisering för att öppna autentiseringshanteringsalternativ.
  2. I avsnittet Autentiseringsmetoder väljer du endast PostgreSQL-autentisering, Microsoft Entra-ID-autentisering eller PostgreSQL- och Microsoft Entra-ID-autentisering som autentiseringsmetod baserat på dina krav.

När du är klar fortsätter du med att konfigurera Microsoft Entra ID-autentisering eller lägga till interna PostgreSQL-roller på samma autentiseringssida .

Konfigurera Microsoft Entra ID-autentisering

Förutsättningar

Användare måste kunna logga in på Azure Cosmos DB for PostgreSQL i Microsoft Entra ID-klientorganisationen. De här stegen bör utföras en gång för Microsoft Entra ID-klientorganisationen som ska användas för autentisering i Azure Cosmos DB för PostgreSQL-kluster.

Viktigt!

Administratörsbehörigheter för Microsoft Entra-ID-klientorganisation krävs för att göra ändringen. Se vägledning för felsökningsbehörigheter.

  1. Sök efter "Microsoft Entra ID" i Azure-portalen.
  2. Öppna tjänsten Microsoft Entra ID.
  3. På sidan Översikt för Microsoft Entra ID-tjänsten i avsnittet Översikt söker du efter program-ID:t "b4fa09d8-5da5-4352-83d9-05c2a4cf431".
  4. Välj "Azure Cosmos DB for PostgreSQL AAD Authentication" i sökresultatet.
  5. I företagsprogrammet Azure Cosmos DB for PostgreSQL AAD Authentication väljer du sidan Egenskaper.
  6. Ange Aktiverad för användare att logga in? till Ja och spara ändringen.

Kommentar

För att redigera företagsapplikationens egenskaper som "Aktiverad för användare att logga in" krävs behörigheter som beviljats till rollerna Global administratör, Molnprogramadministratör eller Programadministratör. Se listan över inbyggda Microsoft Entra-roller.

Lägga till Microsoft Entra ID-administratörer i Azure Cosmos DB för PostgreSQL-kluster

Följ dessa steg på sidan Autentisering om du vill lägga till eller ta bort Microsoft Entra-ID-roller i klustret:

  1. I avsnittet Microsoft Entra ID-autentisering väljer du Lägg till Microsoft Entra-ID-administratörer.
  2. I panelen Välj Microsoft Entra-ID-administratörer väljer du en eller flera giltiga Microsoft Entra-ID-användare eller företagsprogram i den aktuella AD-klientorganisationen för att vara Microsoft Entra-ID-administratör i ditt Azure Cosmos DB for PostgreSQL-kluster.
  3. Använd Välj för att bekräfta ditt val.
  4. På sidan Autentisering väljer du Spara i verktygsfältet för att spara ändringar eller fortsätta med att lägga till inbyggda PostgreSQL-roller.

Konfigurera intern PostgreSQL-autentisering

Följ dessa steg på sidan Autentisering för att lägga till Postgres-roller i klustret:

  1. I avsnittet PostgreSQL-autentisering väljer du Lägg till PostgreSQL-roll.
  2. Ange rollnamn och lösenord. Välj Spara.
  3. På sidan Autentisering väljer du Spara i verktygsfältet för att spara ändringar eller fortsätta med att lägga till Microsoft Entra ID-administratörsanvändare.

Den interna PostgreSQL-användaren skapas på koordinatornoden i klustret och sprids till alla arbetsnoder. Roller som skapats via Azure-portalen har attributet LOGIN, vilket innebär att de är sanna användare som kan logga in på databasen.

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

Microsoft Entra ID-integrering fungerar med Standard PostgreSQL-klientverktyg som psql, som inte är Microsoft Entra-ID:t medvetna om och har endast stöd för att ange användarnamn och lösenord när du ansluter till PostgreSQL. I sådana fall skickas Microsoft Entra-ID-token som lösenord.

Vi har testat följande klienter:

  • psql-kommandorad: Använd variabeln PGPASSWORD för att skicka token.
  • Andra libpq-baserade klienter: Exempel är vanliga programramverk och objektrelationsmappare (ORM).
  • pgAdmin: Rensa Anslut nu när servern skapas.

Använd följande procedurer för att autentisera med Microsoft Entra-ID som Azure Cosmos DB för PostgreSQL-anvä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 till autentiseringssidan för Microsoft Entra-ID. Det kräver att du ger ditt Microsoft Entra-ID användarnamn och lösenord.

Det användarnamn som du använder för att autentisera (till exempel user@tenant.onmicrosoft.com) är det som åtkomsttoken genereras för i nästa steg.

Hämta Microsoft Entra ID-åtkomsttoken

Använd Azure CLI för att hämta en åtkomsttoken för den autentiserade Microsoft Entra-ID:t för åtkomst till Azure Cosmos for PostgreSQL. Här är ett exempel:

az account get-access-token --resource https://token.postgres.cosmos.azure.com

När autentiseringen har slutförts returnerar Microsoft Entra-ID en åtkomsttoken för den aktuella Azure-prenumerationen:

{
  "accessToken": "[TOKEN]",
  "expiresOn": "[expiration_date_and_time]",
  "subscription": "[subscription_id]",
  "tenant": "[tenant_id]",
  "tokenType": "Bearer"
}

TOKEN är en Base64-sträng. Den kodar all information om den autentiserade användaren och är associerad med Tjänsten Azure Cosmos DB for PostgreSQL. Token är giltig i minst 5 minuter med högst 90 minuter. ExpiresOn definierar den faktiska förfallotiden för token.

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=<TOKEN value from the previous step>
$env:PGPASSWORD='<TOKEN value from the previous step>'

Här är ett Linux/macOS-exempel:

export PGPASSWORD=<TOKEN value from the previous step>

Du kan också kombinera de föregående två stegen med hjälp av 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 https://token.postgres.cosmos.azure.com --query "[accessToken]" -o tsv)

Kommentar

Kontrollera att PGPASSWORD-variabeln är inställd på Microsoft Entra ID-åtkomsttoken för din prenumeration för Microsoft Entra-ID-autentisering. Om du behöver utföra Postgres-rollautentisering från samma session kan du ange PGPASSWORD som Postgres-rolllösenord eller rensa variabelvärdet PGPASSWORD för att ange lösenordet interaktivt. Autentiseringen misslyckas med fel värde i PGPASSWORD.

Nu kan du initiera en anslutning med Azure Cosmos DB for PostgreSQL med hjälp av det Microsoft Entra-ID-användarkonto som åtkomsttoken genererades för. Du skulle göra det som vanligt med användarkontot som användare och utan "lösenord"-parametern på kommandoraden:

psql "host=mycluster.[uniqueID].postgres.cosmos.azure.com user=user@tenant.onmicrosoft.com dbname=[db_name] 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 ID-token med PgAdmin:

  1. Avmarkera alternativet Anslut nu när servern skapas.
  2. Ange serverinformationen på fliken Anslutning och spara.
    1. Kontrollera att en giltig Microsoft Entra-ID-användare har angetts i Användarnamn.
  3. På menyn pgAdmin-objekt väljer du Anslut server.
  4. Ange lösenordet för Microsoft Entra-ID-token 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 namnet på Microsoft Entra-ID-användaren.
  • Se till att använda exakt hur Azure-användaren stavas. Användar- och gruppnamn för Microsoft Entra-ID ä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.
  • Åtkomsttokens giltighet är 5 minuter till 90 minuter. Du bör hämta åtkomsttoken innan du initierar inloggningen till Azure Cosmos for PostgreSQL.

Nu autentiseras du till din Azure Cosmos for PostgreSQL-server via Microsoft Entra-ID-autentisering.

Hantera interna PostgreSQL-roller

När inbyggd PostgreSQL-autentisering är aktiverad i klustret kan du lägga till och ta bort Postgres-roller utöver den inbyggda citus-rollen. Du kan också återställa lösenord och ändra Postgres-behörigheter för inbyggda roller.

Ta bort en intern PostgreSQL-användarroll eller ändra deras lösenord

Om du vill uppdatera en användare går du till sidan Autentisering för klustret och väljer ellipserna ... bredvid användaren. Ellipserna öppnar en meny för att ta bort användaren eller återställa lösenordet.

Rollen citus är privilegierad och kan inte tas bort. Rollen skulle dock citus inaktiveras om autentiseringsmetoden "Endast Microsoft Entra-ID-autentisering" har valts för klustret.

Ändra behörigheter för användarroller

Nya användarroller används ofta för att ge databasåtkomst med begränsad behörighet. Om du vill ändra användarbehörigheter använder du PostgreSQL-standardkommandon med hjälp av ett verktyg som PgAdmin eller psql. Mer information finns i Ansluta till ett kluster.

Om du till exempel vill tillåta att PostgreSQL db_user läser mytablebeviljar du behörigheten:

GRANT SELECT ON mytable TO db_user;

Om du vill bevilja samma behörigheter till Microsoft Entra ID-rollen user@tenant.onmicrosoft.com använder du följande kommando:

GRANT SELECT ON mytable TO "user@tenant.onmicrosoft.com";

Azure Cosmos DB for PostgreSQL sprider GRANT-instruktioner med en tabell genom hela klustret och tillämpar dem på alla arbetsnoder. Den sprider också GRANT som är systemomfattande (till exempel för alla tabeller i ett schema):

-- applies to the coordinator node and propagates to worker nodes for Postgres role db_user
GRANT SELECT ON ALL TABLES IN SCHEMA public TO db_user;

Eller för Microsoft Entra ID-roll

-- applies to the coordinator node and propagates to worker nodes for Azure AD role user@tenant.onmicrosoft.com
GRANT SELECT ON ALL TABLES IN SCHEMA public TO "user@tenant.onmicrosoft.com";

Nästa steg