Sdílet prostřednictvím


Vytvoření rolí Postgres

Důležité

Automatické škálování LakeBase je v beta verzích v následujících oblastech: eastus2, westeurope, westus.

Automatické škálování LakeBase je nejnovější verze LakeBase s automatickým škálováním výpočetních prostředků, škálováním na nulu, větvení a okamžitým obnovením. Porovnání funkcí se službou Lakebase Provisioned najdete v tématu Volba mezi verzemi.

Při vytváření projektu vytvoří Lakebase v projektu několik rolí Postgres:

  • Role Postgres pro identitu Azure Databricks vlastníka projektu (například user@databricks.com), která vlastní výchozí databricks_postgres databázi
  • Administrativní role databricks_superuser

Databáze databricks_postgres se vytvoří, abyste se mohli připojit a vyzkoušet Lakebase hned po vytvoření projektu.

Vytvoří se také několik rolí spravovaných systémem. Jedná se o interní role používané službami Azure Databricks pro operace správy, monitorování a dat.

Poznámka:

Role Postgres řídí přístup k databázi (kdo může dotazovat data). Oprávnění projektu (kdo může spravovat infrastrukturu) najdete v tématu Oprávnění projectu. Kurz nastavení obou najdete v tématu Kurz: Udělení přístupu k projektu a databázi novému uživateli.

Viz předpřipravené role a systémové role.

Vytvoření rolí Postgres

Lakebase podporuje dva typy rolí Postgres pro přístup k databázi:

  • Role OAuth pro identity Azure Databricks: Vytvořte je pomocí databricks_auth rozšíření a SQL. Umožňuje identitám Azure Databricks (uživatelům, instančním objektům a skupinám) připojit se pomocí tokenů OAuth.
  • Nativní role hesel Postgres: Vytvořte je pomocí uživatelského rozhraní Lakebase nebo SQL. Použijte libovolný platný název role s ověřováním hesla.

Pokyny k výběru typu role, která se má použít, najdete v přehledu ověřování. Každý z nich je navržený pro různé případy použití.

Vytvoření role OAuth pro identitu Azure Databricks pomocí SQL

Pokud chcete identitám Azure Databricks (uživatelům, instančním objektům nebo skupinám) umožnit připojení pomocí tokenů OAuth, musíte pomocí databricks_auth rozšíření vytvořit jejich role Postgres. Vytvoření role pro skupinu umožňuje všem členům skupiny ověřovat pomocí role skupiny, což zjednodušuje správu oprávnění.

Podrobné pokyny k získání tokenů OAuth v tocích user-to-machine a machine-to-machine najdete v tématu Získání tokenu OAuth v toku user-to-machine a získání tokenu OAuth v toku počítače do počítače v dokumentaci k ověřování.

Požadavky:

  • Musíte mít k databázi oprávnění CREATE a CREATE ROLE.
  • Musíte být ověřeni jako identita ve službě Azure Databricks s platným tokenem OAuth.
  • Relace nativně ověřené v Postgresu nemohou vytvářet role OAuth.

Vytvoření role OAuth:

  1. databricks_auth Vytvořte rozšíření. Každá databáze Postgres musí mít vlastní rozšíření.

    CREATE EXTENSION IF NOT EXISTS databricks_auth;
    
  2. databricks_create_role Pomocí funkce vytvořte roli Postgres pro identitu Azure Databricks:

    SELECT databricks_create_role('identity_name', 'identity_type');
    

    Pro uživatele Azure Databricks:

    SELECT databricks_create_role('myuser@databricks.com', 'USER');
    

    Objekt zabezpečení Azure Databricks:

    SELECT databricks_create_role('8c01cfb1-62c9-4a09-88a8-e195f4b01b08', 'SERVICE_PRINCIPAL');
    

    Pro skupinu Azure Databricks:

    SELECT databricks_create_role('My Group Name', 'GROUP');
    

    V názvu skupiny se rozlišují malá a velká písmena a musí přesně odpovídat tomu, jak se zobrazuje v pracovním prostoru Azure Databricks. Když vytvoříte roli Postgres pro skupinu, může se jakýkoli přímý nebo nepřímý člen (uživatel nebo instanční objekt) této skupiny Databricks ověřit ve formě role skupiny Postgres s použitím svého individuálního tokenu OAuth. To vám umožní spravovat oprávnění na úrovni skupiny v Postgresu místo udržování oprávnění pro jednotlivé uživatele.

  3. Udělte nově vytvořené roli oprávnění k databázi.

Funkce databricks_create_role() vytvoří roli Postgres pouze s oprávněním LOGIN . Po vytvoření role musíte udělit příslušná oprávnění a oprávnění k databázím, schématům nebo tabulkám, ke které uživatel potřebuje přístup. Další informace: Správa oprávnění

Ověřování založené na skupinách

Když vytvoříte roli Postgres pro skupinu Azure Databricks, povolíte ověřování na základě skupin. To umožňuje každému členovi skupiny Azure Databricks ověřit se v Postgres pomocí role skupiny, což zjednodušuje správu oprávnění.

Jak to funguje:

  1. Vytvoření role Postgres pro skupinu Databricks pomocí databricks_create_role('Group Name', 'GROUP').
  2. Udělte oprávnění k databázi skupinové roli v PostgreSQL. Viz Správa oprávnění.
  3. Jakýkoli přímý nebo nepřímý člen (uživatel nebo instanční objekt) skupiny Databricks se může připojit k Postgres pomocí jejich individuálního tokenu OAuth.
  4. Při připojení se člen autentizuje jako funkce skupiny a převezme všechna oprávnění přidělená této funkci.

Proces ověřování:

Když se člen skupiny připojí, zadá název role Postgres skupiny jako uživatelské jméno a vlastní token OAuth jako heslo:

export PGPASSWORD='<OAuth token of a group member>'
export GROUP_ROLE_NAME='<pg-case-sensitive-group-role-name>'

psql -h $HOSTNAME -p 5432 -d databricks_postgres -U $GROUP_ROLE_NAME

Důležitá hlediska:

  • Ověření členství ve skupině: Členství ve skupině se ověřuje pouze v době ověřování. Pokud se člen po navázání připojení odebere ze skupiny Azure Databricks, připojení zůstane aktivní. Nové pokusy o připojení od odebraných členů jsou odmítnuty.
  • Rozsahy pracovních prostorů: Ověřování na základě skupin podporuje pouze skupiny přiřazené ke stejnému pracovnímu prostoru Azure Databricks jako projekt. Informace o přiřazování skupin k pracovnímu prostoru najdete v tématu Správa skupin.
  • Rozlišování velikosti písmen: Název skupiny použitý ve databricks_create_role() se musí shodovat s názvem skupiny přesně tak, jak se zobrazuje v pracovním prostoru Azure Databricks, včetně velikosti písmen.
  • Správa oprávnění: Správa oprávnění na úrovni skupiny v Postgres je efektivnější než správa oprávnění jednotlivých uživatelů. Když udělíte oprávnění k roli skupiny, všichni aktuální a budoucí členové skupiny zdědí tato oprávnění automaticky.

Poznámka:

Názvy rolí nesmí překročit 63 znaků a některé názvy nejsou povolené. Další informace: Správa rolí

Vytvoření nativní role hesla Postgres

Nativní role hesel Postgres můžete vytvořit pomocí uživatelského rozhraní Lakebase nebo standardních příkazů SQL.

Pomocí uživatelského rozhraní:

  1. V aplikaci Lakebase přejděte na stránku přehledu vaší větve a pak na kartu Role a databáze větve.
  2. Klikněte na Přidat roli a zadejte název role (libovolný platný název role Postgres).

Přidejte roli PostgreSQL

  1. Klikněte na Vytvořit.
  2. Zkopírujte vygenerované heslo a bezpečně ho poskytněte uživateli, který bude tuto roli používat.

Uživatelské rozhraní Lakebase automaticky generuje zabezpečené heslo s 60bitovou entropií. Role vytvořené prostřednictvím uživatelského rozhraní jsou automaticky uděleny členství v databricks_superuser roli, která poskytuje široká oprávnění k databázi.

Pomocí SQL:

Nativní role hesel Postgres můžete vytvořit také pomocí standardních příkazů Postgres SQL:

CREATE ROLE role_name WITH LOGIN PASSWORD 'your_secure_password';

Při vytváření rolí pomocí SQL by heslo mělo mít alespoň 12 znaků s kombinací malých písmen, velkých písmen, čísel a symbolů. Uživatelsky definovaná hesla se ověřují při vytváření, aby se zajistila 60bitová entropie.

Zobrazení rolí Postgres

uživatelské rozhraní

Pokud chcete zobrazit všechny role Postgres v projektu, přejděte na kartu Role a databáze vaší větve v aplikaci Lakebase. Zobrazí se všechny role vytvořené ve větvi s výjimkou systémových rolí, včetně nativních rolí Postgres s ověřováním hesla.

Zobrazení role Postgres

PostgreSQL

Zobrazit všechny role pomocí \du příkazu:

Všechny role Postgres, včetně systémových rolí, můžete zobrazit pomocí meta příkazu z libovolného \du klienta Postgres (například psql) nebo editoru SQL Lakebase:

\du
                                      List of roles
          Role name          |                         Attributes
-----------------------------+------------------------------------------------------------
 cloud_admin                 | Superuser, Create role, Create DB, Replication, Bypass RLS
 my.user@databricks.com      | Create role, Create DB, Bypass RLS
 databricks_control_plane    | Superuser
 databricks_gateway          |
 databricks_monitor          |
 databricks_reader_12345     | Create role, Create DB, Replication, Bypass RLS
 databricks_replicator       | Replication
 databricks_superuser        | Create role, Create DB, Cannot login, Bypass RLS
 databricks_writer_12345     | Create role, Create DB, Replication, Bypass RLS

Zobrazí se všechny role a jejich atributy (Superuživatel, Vytvořit roli, Vytvořit databázi atd.).

Vyřazení role Postgres

Můžete odstranit role založené na identitě Databricks i nativní role hesel v Postgresu.

uživatelské rozhraní

Odstranění role je trvalá akce, kterou nelze vrátit zpět. Roli, která vlastní databázi, nelze odstranit. Před odstraněním role, která je vlastníkem databáze, musí být databáze odstraněna.

Odstranění jakékoli role Postgres pomocí uživatelského rozhraní:

  1. V aplikaci Lakebase přejděte na kartu Role a databáze vaší větve.
  2. V nabídce role vyberte Odstranit roli a potvrďte odstranění.

PostgreSQL

Libovolnou roli Postgres můžete odstranit pomocí standardních příkazů Postgres. Podrobnosti najdete v dokumentaci k PostgreSQL týkající se vyřazení rolí.

Vyřazení role:

DROP ROLE role_name;

Po vyřazení role založené na identitě Azure Databricks se už tato identita nemůže ověřit v Postgres pomocí tokenů OAuth, dokud se nevytvoří nová role.

Předpřipravené role

Po vytvoření projektu Azure Databricks automaticky vytvoří role Postgres pro správu projektů a začínáme.

Role Description Zděděná oprávnění
<project_owner_role> Identita tvůrce projektu v Azure Databricks (například my.user@databricks.com). Tato role vlastní výchozí databricks_postgres databázi a může se přihlásit a spravovat projekt. Člen databricks_superuser
databricks_superuser Interní administrativní role. Slouží ke konfiguraci a správě přístupu v rámci projektu. Tato role má udělená široká oprávnění. Dědí z pg_read_all_data, pg_write_all_dataa pg_monitor.

Další informace o konkrétních možnostech a oprávněních těchto rolí: Předem vytvořené možnosti rolí

Systémové role vytvořené službou Azure Databricks

Azure Databricks vytvoří následující systémové role vyžadované pro interní služby. Tyto role můžete zobrazit pomocí zadání příkazu \du z psql nebo z editoru Lakebase SQL.

Role Účel
cloud_admin Role superuživatele používaná ke správě cloudové infrastruktury
databricks_control_plane Role superuživatele používaná interními komponentami Databricks pro operace správy
databricks_monitor Používá se interními službami shromažďování metrik.
databricks_replicator Používá se pro operace replikace databáze.
databricks_writer_<dbid> Role pro každou databázi používaná k vytváření a správě synchronizovaných tabulek
databricks_reader_<dbid> Role pro jednotlivé databáze použitá ke čtení tabulek registrovaných v Unity Catalogu
databricks_gateway Používá se pro interní připojení pro spravované služby obsluhující data.

Pokud chcete zjistit, jak role, oprávnění a členství v rolích fungují v Postgresu, použijte následující zdroje informací v dokumentaci k Postgresu:

Další kroky