Použití ID Microsoft Entra a nativních rolí PostgreSQL pro ověřování pomocí služby Azure Cosmos DB for PostgreSQL

PLATÍ PRO: Azure Cosmos DB for PostgreSQL (využívající rozšíření databáze Citus do PostgreSQL)

V tomto článku nakonfigurujete metody ověřování pro službu Azure Cosmos DB for PostgreSQL. Spravujete uživatele správce Microsoft Entra ID a nativní role PostgreSQL pro ověřování pomocí služby Azure Cosmos DB for PostgreSQL. Dozvíte se také, jak používat token ID Microsoft Entra se službou Azure Cosmos DB for PostgreSQL.

Cluster Azure Cosmos DB for PostgreSQL se vytvoří s jednou integrovanou nativní rolí PostgreSQL s názvem citus. Po dokončení zřizování clusteru můžete přidat další nativní role PostgreSQL.

Můžete také nakonfigurovat ověřování Microsoft Entra ID (dříve Azure Active Directory) pro službu Azure Cosmos DB for PostgreSQL. Kromě nativního ověřování PostgreSQL ve vašem clusteru můžete povolit ověřování Microsoft Entra ID nebo místo nativního ověřování PostgreSQL. Metody ověřování povolené v clusteru můžete kdykoli po zřízení clusteru změnit. Pokud je povolené ověřování Microsoft Entra ID, můžete do clusteru Azure Cosmos DB for PostgreSQL přidat více uživatelů Microsoft Entra ID a vytvořit některý z nich správce. Uživatel Microsoft Entra ID může být uživatel nebo instanční objekt.

Volba metody ověřování

Ke konfiguraci metod ověřování v clusteru Azure Cosmos DB for PostgreSQL musíte použít Azure Portal.

Pomocí následujících položek v clusteru Azure Cosmos DB for PostgreSQL povolte nebo zakažte ověřování Microsoft Entra ID a nativní ověřování PostgreSQL.

  1. Na stránce clusteru pod nadpisem Správa clusteru zvolte Ověřování a otevřete možnosti správy ověřování.
  2. V části Metody ověřování zvolte pouze ověřování PostgreSQL, ověřování Microsoft Entra ID nebo Ověřování PostgreSQL a Microsoft Entra ID jako metodu ověřování na základě vašich požadavků.

Jakmile budete hotovi, pokračujte konfigurací ověřování Microsoft Entra ID nebo přidáním nativních rolí PostgreSQL na stejné stránce ověřování .

Konfigurace ověřování Microsoft Entra ID

Požadavky

Uživatelé se musí v tenantovi Microsoft Entra ID přihlásit ke službě Azure Cosmos DB for PostgreSQL. Tyto kroky by se měly provést jednou pro tenanta Microsoft Entra ID, který se použije k ověřování v clusterech Azure Cosmos DB for PostgreSQL.

Důležité

K provedení změny jsou potřeba oprávnění správce tenanta Microsoft Entra ID. Přečtěte si pokyny pro řešení potíží s oprávněními.

  1. Na webu Azure Portal vyhledejte "Microsoft Entra ID".
  2. Otevřete službu Microsoft Entra ID.
  3. Na stránce Přehled služby Microsoft Entra ID v části Přehled vyhledejte ID aplikace b4fa09d8-5da5-4352-83d9-05c2a44cf431 aplikace.
  4. Ve výsledcích hledání zvolte podnikovou aplikaci Azure Cosmos DB for PostgreSQL AAD Authentication.
  5. V podnikové aplikaci Azure Cosmos DB for PostgreSQL AAD Authentication zvolte stránku Vlastnosti.
  6. Chcete nastavit, aby se uživatelé mohli přihlásit? Na Anoa změnu uložte.

Poznámka:

Úpravy vlastností podnikové aplikace, jako je Například Povoleno pro uživatele k přihlášení, vyžaduje oprávnění udělená globálnímu Správa istratoru, cloudové aplikaci Správa istratoru nebo rolím aplikačního Správa istratoru. Podívejte se na seznam předdefinovaných rolí Microsoft Entra.

Přidání správců Microsoft Entra ID do clusteru Azure Cosmos DB for PostgreSQL

Chcete-li přidat nebo odebrat role ID Microsoft Entra v clusteru, postupujte podle těchto kroků na stránce Ověřování :

  1. V části Ověřování ID Microsoft Entra vyberte Přidat správce MICROSOFT Entra ID.
  2. Na panelu Vybrat ID Microsoft Entra Správa s vyberte jednoho nebo více platných uživatelů nebo podnikových aplikací Microsoft Entra ID v aktuálním tenantovi AD, aby byl správcem Microsoft Entra ID ve vašem clusteru Azure Cosmos DB for PostgreSQL.
  3. Pomocí příkazu Select potvrďte svoji volbu.
  4. Na stránce Ověřování vyberte Uložit na panelu nástrojů a uložte změny nebo pokračujte přidáním nativních rolí PostgreSQL.

Konfigurace nativního ověřování PostgreSQL

Pokud chcete přidat role Postgres v clusteru, postupujte podle těchto kroků na stránce Ověřování :

  1. V části Ověřování PostgreSQL vyberte Přidat roli PostgreSQL.
  2. Zadejte název a heslo role. Zvolte Uložit.
  3. Na stránce Ověřování vyberte Uložit na panelu nástrojů a uložte změny nebo pokračujte přidáním uživatelů správce Microsoft Entra ID.

Nativní uživatel PostgreSQL se vytvoří v koordinačním uzlu clusteru a rozšíří se do všech pracovních uzlů. Role vytvořené prostřednictvím webu Azure Portal mají atribut LOGIN, což znamená, že jsou skutečnými uživateli, kteří se mohou přihlásit k databázi.

Připojení do Služby Azure Cosmos for PostgreSQL pomocí ověřování Microsoft Entra ID

Integrace s Microsoft Entra ID funguje se standardními klientskými nástroji PostgreSQL, jako je psql, které nepodporují rozhraní Microsoft Entra ID a podporují pouze zadání uživatelského jména a hesla při připojování k PostgreSQL. V takových případech se token ID Microsoft Entra předá jako heslo.

Otestovali jsme následující klienty:

  • příkazový řádek psql: Použijte PGPASSWORD proměnnou k předání tokenu.
  • Další klienti založené na knihovně libpq: Příklady zahrnují běžné aplikační architektury a mapovače relačních objektů (ORM).
  • pg Správa: Vymažte Připojení nyní při vytváření serveru.

Následující postupy použijte k ověření s ID Microsoft Entra jako uživatele Azure Cosmos DB for PostgreSQL. Postup můžete sledovat v Azure Cloud Shellu, na virtuálním počítači Azure nebo na místním počítači.

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

Začněte ověřováním pomocí Microsoft Entra ID pomocí Azure CLI. Tento krok se v Azure Cloud Shellu nevyžaduje.

az login

Příkaz otevře okno prohlížeče na stránce ověřování Microsoft Entra ID. Vyžaduje, abyste zadali uživatelské jméno a heslo Microsoft Entra ID.

Uživatelské jméno účtu, které používáte k ověření (například) je ten, user@tenant.onmicrosoft.compro který se v dalším kroku vygeneruje přístupový token.

Načtení přístupového tokenu Microsoft Entra ID

Pomocí Azure CLI získejte přístupový token pro ověřeného uživatele Microsoft Entra ID pro přístup ke službě Azure Cosmos for PostgreSQL. Tady je příklad:

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

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

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

Token je řetězec Base64. Zakóduje všechny informace o ověřeném uživateli a je přidružený ke službě Azure Cosmos DB for PostgreSQL. Token je platný nejméně 5 minut s maximálním počtem 90 minut. Hodnota expiresOn definuje skutečnou dobu vypršení platnosti tokenu.

Použití tokenu jako hesla pro přihlášení pomocí klientského psql

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

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

Tady je příklad Windows:

set PGPASSWORD=<TOKEN value from the previous step>
$env:PGPASSWORD='<TOKEN value from the previous step>'

Tady je příklad Linuxu nebo macOS:

export PGPASSWORD=<TOKEN value from the previous step>

Předchozí dva kroky můžete také zkombinovat pomocí nahrazení příkazů. Načtení tokenu lze zapouzdřovat do proměnné a předat ji přímo jako hodnotu proměnné PGPASSWORD prostředí:

export PGPASSWORD=$(az account get-access-token --resource-type oss-rdbms --query "[accessToken]" -o tsv)

Poznámka:

Ujistěte se, že je proměnná PGPASSWORD nastavená na přístupový token Microsoft Entra ID pro vaše předplatné pro ověřování Microsoft Entra ID. Pokud potřebujete provést ověřování role Postgres ze stejné relace, můžete nastavit PGPASSWORD na heslo role Postgres nebo vymazat hodnotu proměnné PGPASSWORD a zadat heslo interaktivně. Ověřování by selhalo s nesprávnou hodnotou v NÁSTROJi PGPASSWORD.

Teď můžete zahájit připojení ke službě Azure Cosmos DB for PostgreSQL pomocí uživatelského účtu Microsoft Entra ID, pro který se vygeneroval přístupový token. Uděláte to jako obvykle s uživatelským účtem jako uživatelem a bez parametru password v příkazovém řádku:

psql "host=mycluster.[uniqueID].postgres.cosmos.azure.com user=user@tenant.onmicrosoft.com dbname=[db_name] sslmode=require"

Token použijte jako heslo pro přihlášení pomocí pg Správa

Pokud se chcete připojit pomocí tokenu Microsoft Entra ID s pg Správa postupujte takto:

  1. Zrušte zaškrtnutí políčka Připojení nyní při vytváření serveru.
  2. Na kartě Připojení ion zadejte podrobnosti o serveru a uložte ho.
    1. Ujistěte se, že je v uživatelském jménu zadán platný uživatel Microsoft Entra ID.
  3. V nabídce pg Správa Object (Objekt) vyberte Připojení Server.
  4. Po zobrazení výzvy zadejte heslo tokenu ID Microsoft Entra.

Tady je několik důležitých aspektů při připojování:

  • user@tenant.onmicrosoft.com je název uživatele Microsoft Entra ID.
  • Nezapomeňte použít přesný způsob, jakým je uživatel Azure napsaný. Názvy uživatelů a skupin Microsoft Entra ID rozlišují malá a velká písmena.
  • Pokud název obsahuje mezery, použijte před každým mezerou zpětné lomítko (\) a umistit ho.
  • Platnost přístupového tokenu je 5 minut až 90 minut. Přístupový token byste měli získat před zahájením přihlášení ke službě Azure Cosmos for PostgreSQL.

Teď jste ověřeni na serveru Azure Cosmos for PostgreSQL prostřednictvím ověřování Microsoft Entra ID.

Správa nativních rolí PostgreSQL

Pokud je v clusteru povolené nativní ověřování PostgreSQL, můžete kromě předdefinované role Citus přidávat a odstraňovat role Postgres. Můžete také resetovat heslo a upravit oprávnění Postgres pro nativní role.

Odstranění nativní role uživatele PostgreSQL nebo změna hesla

Pokud chcete aktualizovat uživatele, přejděte na stránku Ověřování clusteru a vyberte tři tečky vedle uživatele. Tři tečky otevřou nabídku pro odstranění uživatele nebo resetování hesla.

Role citus je privilegovaná a nejde ji odstranit. citus Role by však byla zakázána, pokud je pro cluster vybrána metoda ověřování pouze ověřování Microsoft Entra ID.

Úprava oprávnění pro role uživatelů

Nové role uživatelů se běžně používají k poskytování přístupu k databázi s omezenými oprávněními. Pokud chcete upravit uživatelská oprávnění, použijte standardní příkazy PostgreSQL pomocí nástroje, jako je Pg Správa nebo psql. Další informace najdete v tématu Připojení ke clusteru.

Pokud například chcete, aby postgreSQL db_user mohl číst mytable, udělte oprávnění:

GRANT SELECT ON mytable TO db_user;

Pokud chcete udělit stejná oprávnění k roli user@tenant.onmicrosoft.com ID Microsoft Entra, použijte následující příkaz:

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

Azure Cosmos DB for PostgreSQL šíří příkazy GRANT s jednou tabulkou prostřednictvím celého clusteru a použije je na všech pracovních uzlech. Také šíří granty, které jsou v celém systému (například pro všechny tabulky ve schématu):

-- 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;

Nebo pro roli ID Microsoft Entra

-- 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";

Další kroky