Použití ID Microsoft Entra pro ověřování s PostgreSQL

PLATÍ PRO: Azure Database for PostgreSQL – Jednoúčelový server

Důležité

Jednoúčelový server Azure Database for PostgreSQL je na cestě vyřazení. Důrazně doporučujeme upgradovat na flexibilní server Azure Database for PostgreSQL. Další informace o migraci na flexibilní server Azure Database for PostgreSQL najdete v tématu Co se děje s jednoúčelovým serverem Azure Database for PostgreSQL?

Tento článek vás provede postupem konfigurace přístupu k ID Microsoft Entra pomocí služby Azure Database for PostgreSQL a postupu připojení pomocí tokenu Microsoft Entra.

Nastavení uživatele Microsoft Entra Správa

Pouze uživatelé Microsoft Entra mohou vytvářet nebo povolovat uživatele pro ověřování založené na ID Microsoftu. Pro běžné databázové operace nedoporučujeme používat správce Microsoft Entra, protože má zvýšená uživatelská oprávnění (např. CREATEDB).

Pokud chcete nastavit správce Microsoft Entra (můžete použít uživatele nebo skupinu), postupujte podle následujících kroků.

  1. Na webu Azure Portal vyberte instanci Azure Database for PostgreSQL, kterou chcete povolit pro ID Microsoft Entra.
  2. V části Nastavení vyberte Správa služby Active Directory:

nastavit správce Microsoft Entra

  1. Vyberte platného uživatele Microsoft Entra v tenantovi zákazníka, aby byl správcem Microsoft Entra.

Důležité

Při nastavování správce se na server Azure Database for PostgreSQL přidá nový uživatel s úplnými oprávněními správce. Uživatel Microsoft Entra Správa ve službě Azure Database for PostgreSQL bude mít roli azure_ad_admin. Na server PostgreSQL je možné vytvořit pouze jednoho správce Microsoft Entra a výběrem jiného správce přepíše stávající správce Microsoft Entra nakonfigurovaný pro tento server. Místo jednotlivých uživatelů můžete zadat skupinu Microsoft Entra, která bude mít více správců.

Na server PostgreSQL je možné vytvořit pouze jednoho správce Microsoft Entra a výběrem jiného správce přepíše stávající správce Microsoft Entra nakonfigurovaný pro tento server. Místo jednotlivých uživatelů můžete zadat skupinu Microsoft Entra, která bude mít více správců. Všimněte si, že se pak přihlásíte pomocí názvu skupiny pro účely správy.

Připojení do služby Azure Database for PostgreSQL pomocí ID Microsoft Entra

Následující diagram vysoké úrovně shrnuje pracovní postup použití ověřování Microsoft Entra se službou Azure Database for PostgreSQL:

tok ověřování

Integraci Microsoft Entra jsme navrhli tak, aby fungovala s běžnými nástroji PostgreSQL, jako je psql, což není Microsoft Entra, a při připojování k PostgreSQL podporuje jenom zadávání uživatelského jména a hesla. Jako heslo předáme token Microsoft Entra, jak je znázorněno na obrázku výše.

V současné době jsme otestovali následující klienty:

  • příkazový řádek psql (použití proměnné PGPASSWORD k předání tokenu, další informace najdete v kroku 3).
  • Azure Data Studio (pomocí rozšíření PostgreSQL)
  • Další klienti založené na knihovně libpq (např. běžná aplikační rozhraní a ORM)
  • Pg Správa (zrušte zaškrtnutí políčka připojit při vytváření serveru. Další informace najdete v kroku 4.

Toto jsou kroky, které bude uživatel nebo aplikace muset provést ověření pomocí ID Microsoft Entra popsané níže:

Požadavky

Postup můžete sledovat v Azure Cloud Shellu, virtuálním počítači Azure nebo na místním počítači. Ujistěte se, že máte nainstalované Rozhraní příkazového řádku Azure.

Ověřování pomocí MICROSOFT Entra ID jako jednoho uživatele

Krok 1: Přihlášení k předplatnému Azure uživatele

Začněte ověřováním pomocí Microsoft Entra ID pomocí nástroje Azure CLI. Tento krok není v Azure Cloud Shellu povinný.

az login

Příkaz spustí okno prohlížeče na stránku ověřování Microsoft Entra. Vyžaduje, abyste zadali své ID uživatele Microsoft Entra a heslo.

Krok 2: Načtení přístupového tokenu Microsoft Entra

Vyvolejte nástroj Azure CLI pro získání přístupového tokenu pro ověřeného uživatele Microsoft Entra z kroku 1 pro přístup ke službě Azure Database for PostgreSQL.

Příklad (pro veřejný cloud):

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

Výše uvedená hodnota prostředku musí být zadána přesně tak, jak je znázorněna. V případě jiných cloudů je možné hodnotu prostředku vyhledat pomocí:

az cloud show

Pro Azure CLI verze 2.0.71 a novější je možné příkaz zadat v následující pohodlnější verzi pro všechny cloudy:

az account get-access-token --resource-type oss-rdbms

Po úspěšném ověření vrátí ID Microsoft Entra přístupový token:

{
  "accessToken": "TOKEN",
  "expiresOn": "...",
  "subscription": "...",
  "tenant": "...",
  "tokenType": "Bearer"
}

Token je řetězec Base 64, který kóduje všechny informace o ověřeném uživateli a který je cílem služby Azure Database for PostgreSQL.

Krok 3: Použití tokenu jako hesla pro přihlášení pomocí klienta psql

Při připojování potřebujete použít přístupový token jako heslo uživatele PostgreSQL.

Při použití klienta příkazového psql řádku musí být přístupový token předán prostřednictvím PGPASSWORD proměnné prostředí, protože přístupový token překračuje délku hesla, která psql může přijmout přímo:

Příklad windows:

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

Příklad Linuxu nebo macOS:

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

Teď můžete zahájit připojení ke službě Azure Database for PostgreSQL, jako byste normálně:

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

Krok 4: Použití tokenu jako hesla pro přihlášení pomocí pg Správa

Pokud se chcete připojit pomocí tokenu Microsoft Entra s pg Správa musíte postupovat podle následujících kroků:

  1. Při vytváření serveru zrušte zaškrtnutí políčka Připojit.
  2. Na kartě připojení zadejte podrobnosti o serveru a uložte ho.
  3. V nabídce prohlížeče vyberte připojit se k serveru Azure Database for PostgreSQL.
  4. Po zobrazení výzvy zadejte heslo tokenu AD.

Důležité aspekty při připojování:

  • user@tenant.onmicrosoft.com je jméno uživatele Microsoft Entra.
  • Nezapomeňte použít přesný způsob, jakým je uživatel Azure napsaný – protože názvy uživatelů a skupin Microsoft Entra rozlišují malá a velká písmena.
  • Pokud název obsahuje mezery, použijte \ před každým mezerou řídicí znak.
  • Platnost přístupového tokenu je 5 minut až 60 minut. Doporučujeme získat přístupový token těsně před zahájením přihlášení ke službě Azure Database for PostgreSQL.

Teď jste ověřeni na serveru Azure Database for PostgreSQL pomocí ověřování Microsoft Entra.

Ověřování pomocí ID Microsoft Entra jako člena skupiny

Krok 1: Vytvoření skupin Microsoft Entra ve službě Azure Database for PostgreSQL

Pokud chcete povolit přístup k databázi ve skupině Microsoft Entra, použijte stejný mechanismus jako pro uživatele, ale místo toho zadejte název skupiny:

Příklad:

CREATE USER <new_user> IN ROLE azure_ad_user;

Při přihlašování budou členové skupiny používat své osobní přístupové tokeny, ale podepisují se s názvem skupiny zadaným jako uživatelské jméno.

Krok 2: Přihlášení k předplatnému Azure uživatele

Ověřte se pomocí ID Microsoft Entra pomocí nástroje Azure CLI. Tento krok není v Azure Cloud Shellu povinný. Uživatel musí být členem skupiny Microsoft Entra.

az login

Krok 3: Načtení přístupového tokenu Microsoft Entra

Vyvolejte nástroj Azure CLI pro získání přístupového tokenu pro ověřeného uživatele Microsoft Entra z kroku 2 pro přístup ke službě Azure Database for PostgreSQL.

Příklad (pro veřejný cloud):

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

Výše uvedená hodnota prostředku musí být zadána přesně tak, jak je znázorněna. V případě jiných cloudů je možné hodnotu prostředku vyhledat pomocí:

az cloud show

Pro Azure CLI verze 2.0.71 a novější je možné příkaz zadat v následující pohodlnější verzi pro všechny cloudy:

az account get-access-token --resource-type oss-rdbms

Po úspěšném ověření vrátí ID Microsoft Entra přístupový token:

{
  "accessToken": "TOKEN",
  "expiresOn": "...",
  "subscription": "...",
  "tenant": "...",
  "tokenType": "Bearer"
}

Krok 4: Použití tokenu jako hesla pro přihlášení pomocí psql nebo Pg Správa (viz výše uvedený postup pro připojení uživatele)

Důležité aspekty při připojování jako člena skupiny:

  • groupname@mydb je název skupiny Microsoft Entra, kterou se pokoušíte připojit jako
  • Název serveru vždy připojte za název uživatele nebo skupiny Microsoft Entra (např. @mydb)
  • Nezapomeňte použít přesný způsob, jakým je název skupiny Microsoft Entra napsaný.
  • V názvech uživatelů a skupin Microsoft Entra se rozlišují malá a velká písmena.
  • Při připojování jako skupiny použijte pouze název skupiny (např. GroupName@mydb) a ne alias člena skupiny.
  • Pokud název obsahuje mezery, použijte před každou mezerou znak \, abyste ji uzavřeli.
  • Platnost přístupového tokenu je 5 minut až 60 minut. Doporučujeme získat přístupový token těsně před zahájením přihlášení ke službě Azure Database for PostgreSQL.

Nyní jste ověřeni na serveru PostgreSQL pomocí ověřování Microsoft Entra.

Vytváření uživatelů Microsoft Entra ve službě Azure Database for PostgreSQL

Pokud chcete přidat uživatele Microsoft Entra do databáze Azure Database for PostgreSQL, proveďte následující kroky po připojení (další části o připojení):

  1. Nejprve se ujistěte, že uživatel <user>@yourtenant.onmicrosoft.com Microsoft Entra je platným uživatelem v tenantovi Microsoft Entra.
  2. Přihlaste se k instanci Azure Database for PostgreSQL jako uživatel Microsoft Entra Správa.
  3. Vytvořte roli <user>@yourtenant.onmicrosoft.com ve službě Azure Database for PostgreSQL.
  4. Nastavení <user>@yourtenant.onmicrosoft.com role jako člena azure_ad_user Tato možnost musí být udělena pouze uživatelům Microsoft Entra.

Příklad:

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

Poznámka:

Ověřování uživatele prostřednictvím Microsoft Entra ID neuděluje uživateli žádná oprávnění pro přístup k objektům v databázi Azure Database for PostgreSQL. Musíte uživateli udělit ručně požadovaná oprávnění.

Ověření tokenu

Ověřování Microsoft Entra ve službě Azure Database for PostgreSQL zajišťuje, že uživatel existuje na serveru PostgreSQL, a kontroluje platnost tokenu ověřením obsahu tokenu. Provede se následující postup ověření tokenu:

  • Token je podepsaný ID Microsoft Entra a není manipulován s
  • Token vydalo ID Microsoft Entra pro tenanta přidruženého k serveru.
  • Platnost tokenu nevypršela
  • Token je pro prostředek Azure Database for PostgreSQL (a ne pro jiný prostředek Azure).

Migrace stávajících uživatelů PostgreSQL na ověřování založené na ID microsoftu Entra

Pro stávající uživatele můžete povolit ověřování Microsoft Entra. Existují dva případy, které je potřeba vzít v úvahu:

Případ 1: Uživatelské jméno PostgreSQL odpovídá hlavnímu názvu uživatele Microsoft Entra

V nepravděpodobném případě, že stávající uživatelé již odpovídají uživatelským jménům Microsoft Entra, můžete jim tuto roli udělit azure_ad_user , abyste jim umožnili ověřování Microsoft Entra:

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

Teď se budou moct přihlásit pomocí přihlašovacích údajů Microsoft Entra místo použití dříve nakonfigurovaného hesla uživatele PostgreSQL.

Případ 2: Uživatelské jméno PostgreSQL se liší od hlavního názvu uživatele Microsoft Entra.

Pokud uživatel PostgreSQL v Microsoft Entra ID neexistuje nebo má jiné uživatelské jméno, můžete použít skupiny Microsoft Entra k ověření jako tohoto uživatele PostgreSQL. Existující uživatele Azure Database for PostgreSQL můžete migrovat do Microsoft Entra ID vytvořením skupiny Microsoft Entra s názvem, který odpovídá uživateli PostgreSQL, a udělením role azure_ad_user stávajícímu uživateli PostgreSQL:

GRANT azure_ad_user TO <new_user>;

Předpokládá se, že jste ve svém ID Microsoft Entra vytvořili skupinu DBReadUser. Uživatelé patřící do této skupiny se teď budou moct přihlásit k databázi jako tento uživatel.

Další kroky