Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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_postgresdatabázi - Administrativní role
databricks_superuser
Obě tyto role jsou viditelné na kartě Role a databáze při prvním otevření projektu.
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í uživatelského rozhraní Lakebase,
databricks_authrozšíření pomocí SQL nebo sady Python SDK a rozhraní REST API. 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, SQL nebo sady Python SDK a rozhraní REST API. 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 identity Azure Databricks
Pokud chcete identitám Azure Databricks (uživatelům, instančním objektům nebo skupinám) umožnit připojení pomocí tokenů OAuth, vytvořte roli OAuth pomocí uživatelského rozhraní Lakebase, databricks_auth rozšíření s SQL nebo rozhraním REST API.
Podrobné pokyny k získání tokenů OAuth najdete v tématu Získání tokenu OAuth v toku uživatele na stroj a Získání tokenu OAuth v toku stroj na stroj.
uživatelské rozhraní
- Na kartě Role a databáze>Přidat roli>OAuth vyberte uživatele, service principal nebo skupinu, ke které chcete udělit přístup k databázi.
- Po vytvoření role udělte příslušná oprávnění k databázi. Další informace: Správa oprávnění
SQL
Požadavky:
- Musíte mít k databázi oprávnění
CREATEaCREATE 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.
databricks_authVytvořte rozšíření. Každá databáze Postgres musí mít vlastní rozšíření.CREATE EXTENSION IF NOT EXISTS databricks_auth;databricks_create_rolePomocí 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. Tento model oprávnění na úrovni skupiny umožňuje spravovat oprávnění v Postgresu místo udržování oprávnění pro jednotlivé uživatele.
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í
Python SDK
Nastavit identity_type na USER, SERVICE_PRINCIPALnebo GROUP. Nastavte postgres_role e-mailovou adresu identity, ID aplikace (UUID) nebo zobrazovaný název skupiny. Tato hodnota se stane názvem role Postgres a je to, co používáte v připojovacích řetězcích a GRANT příkazech.
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.postgres import Role, RoleIdentityType, RoleRoleSpec
w = WorkspaceClient()
operation = w.postgres.create_role(
parent="projects/my-project/branches/production",
role=Role(
spec=RoleRoleSpec(
identity_type=RoleIdentityType.USER,
postgres_role="user@example.com"
)
)
)
role = operation.wait()
print(f"Created role: {role.name}")
Po vytvoření role udělte příslušná oprávnění k databázi. Další informace: Správa oprávnění
CLI
Nastavit identity_type na USER, SERVICE_PRINCIPALnebo GROUP. Nastavte postgres_role e-mailovou adresu identity, ID aplikace (UUID) nebo zobrazovaný název skupiny. Tato hodnota se stane názvem role Postgres a je to, co používáte v připojovacích řetězcích a GRANT příkazech.
Pro uživatele Azure Databricks:
databricks postgres create-role projects/my-project/branches/production \
--role-id my-user-role \
--json '{"spec": {"identity_type": "USER", "postgres_role": "user@example.com"}}'
Objekt zabezpečení Azure Databricks:
databricks postgres create-role projects/my-project/branches/production \
--role-id my-sp-role \
--json '{"spec": {"identity_type": "SERVICE_PRINCIPAL", "postgres_role": "8c01cfb1-62c9-4a09-88a8-e195f4b01b08"}}'
Pro skupinu Azure Databricks:
databricks postgres create-role projects/my-project/branches/production \
--role-id my-group-role \
--json '{"spec": {"identity_type": "GROUP", "postgres_role": "My Group Name"}}'
Příkaz čeká na dokončení operace a vrátí vytvořenou roli. Použijte --no-wait k okamžitému návratu a dotazování samostatně s databricks postgres get-operation.
Po vytvoření role udělte příslušná oprávnění k databázi. Další informace: Správa oprávnění
kroucení
Nastavit identity_type na USER, SERVICE_PRINCIPALnebo GROUP. Nastavte postgres_role e-mailovou adresu identity, ID aplikace (UUID) nebo zobrazovaný název skupiny. Tato hodnota se stane názvem role Postgres a je to, co používáte v připojovacích řetězcích a GRANT příkazech.
curl -X POST "$WORKSPACE/api/2.0/postgres/projects/my-project/branches/production/roles" \
-H "Authorization: Bearer ${DATABRICKS_TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"spec": {
"identity_type": "USER",
"postgres_role": "user@example.com"
}
}' | jq
Koncový bod vrátí výsledek dlouhotrvající operace. Opakovaně kontrolujte, dokud done nebude true, poté použijte pole role name pro následná volání API. Viz dlouhotrvající operace.
Po vytvoření role udělte příslušná oprávnění k databázi. 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:
- Vytvořte roli Postgres pro skupinu Azure Databricks.
- Udělte oprávnění k databázi skupinové roli v PostgreSQL. Viz Správa oprávnění.
- Jakýkoli přímý nebo nepřímý člen (uživatel nebo instanční objekt) skupiny Azure Databricks se může připojit k Postgres pomocí jejich individuálního tokenu OAuth.
- Při připojování se člen ověří jako role ve skupině a dědí všechna oprávnění, která jste této roli udělili.
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.
- Přejmenování identity: Pokud se v Azure Databricks změní e-mail uživatele nebo zobrazované jméno skupiny, ověření a stávající přístupy k databázím se přeruší. Odstraňte starou roli, vytvořte novou s aktualizovaným názvem a aktualizujte připojovací řetězce a granty.
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
Připojení hesel je možné zakázat na úrovni projektu nebo výpočetních prostředků. Viz Blokovat připojení hesel.
uživatelské rozhraní
- Na kartě Role a databáze> Přidat roli> zadejte název role a volitelně udělte nebo systémové atributy (
databricks_superuser,CREATEDB,CREATEROLE). - Zkopírujte vygenerované heslo a bezpečně ho poskytněte uživateli. Znovu se nezobrazí.
SQL
CREATE ROLE role_name WITH LOGIN PASSWORD 'your_secure_password';
Heslo musí mít minimálně 12 znaků s kombinací malých písmen, velkých písmen, čísel a symbolů. Uživatelem definovaná hesla se ověřují při vytváření a ověřují se 60bitová entropie.
Python SDK
Vynechat identity_type pro vytvoření role hesla. Rozhraní API vrátí v odpovědi vygenerované heslo.
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.postgres import Role, RoleRoleSpec
w = WorkspaceClient()
operation = w.postgres.create_role(
parent="projects/my-project/branches/production",
role=Role(
spec=RoleRoleSpec(
postgres_role="my-app-role"
)
)
)
role = operation.wait()
print(f"Created role: {role.name}")
CLI
Vynechat identity_type pro vytvoření role hesla. Rozhraní API vygeneruje heslo a vrátí ho v odpovědi.
databricks postgres create-role projects/my-project/branches/production \
--role-id my-app-role \
--json '{"spec": {"postgres_role": "my-app-role"}}'
Příkaz čeká na dokončení operace. Odpověď obsahuje vygenerované heslo – uložte ho bezpečně, protože se znovu nezobrazí.
kroucení
Vynechat identity_type pro vytvoření role hesla. Koncový bod vrátí výsledek dlouhotrvající operace. Dotazujte se, dokud není donetrue.
curl -X POST "$WORKSPACE/api/2.0/postgres/projects/my-project/branches/production/roles" \
-H "Authorization: Bearer ${DATABRICKS_TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"spec": {
"postgres_role": "my-app-role"
}
}' | jq
Poznámka:
Nativní role hesel Postgres podporují integrovaný nástroj pro sdružování připojení. Viz Použití sdružování připojení.
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í. Sloupec typ ověřování označuje, jestli každá role používá ověřování OAuth nebo heslo.
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
Python SDK
Výpis všech rolí:
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
roles = w.postgres.list_roles(parent="projects/my-project/branches/production")
for role in roles:
print(f"{role.status.postgres_role} ({role.status.identity_type or 'PASSWORD'}): {role.name}")
Získání konkrétní role:
role = w.postgres.get_role(
name="projects/my-project/branches/production/roles/rol-xxxx-xxxxxxxxxx"
)
print(role)
CLI
Výpis všech rolí:
databricks postgres list-roles projects/my-project/branches/production
Získání konkrétní role:
databricks postgres get-role projects/my-project/branches/production/roles/rol-xxxx-xxxxxxxxxx
Výstup obsahuje name pole (například rol-xxxx-xxxxxxxxxx) požadované pro volání aktualizace a odstranění.
kroucení
Výpis všech rolí:
curl -X GET "$WORKSPACE/api/2.0/postgres/projects/my-project/branches/production/roles" \
-H "Authorization: Bearer ${DATABRICKS_TOKEN}" | jq
Získání konkrétní role:
curl -X GET "$WORKSPACE/api/2.0/postgres/projects/my-project/branches/production/roles/rol-xxxx-xxxxxxxxxx" \
-H "Authorization: Bearer ${DATABRICKS_TOKEN}" | jq
Odpověď obsahuje name pole (například rol-xxxx-xxxxxxxxxx) vyžadované pro volání aktualizace a odstranění.
Aktualizace role
Pokud chcete aktualizovat atributy role v uživatelském rozhraní, vyberte v nabídce role na kartě Role a Databáze možnost Upravit roli.
K aktualizaci systémových rolí nebo atributů role použijte rozhraní API nebo rozhraní příkazového řádku. Změní se pouze pole zadaná v masce aktualizace.
Poznámka:
Pokud chcete získat název prostředku role pro použití v aktualizačních a mazacích voláních, použijte koncový bod seznam rolí. Názvy prostředků role používají systémový identifikátor (například rol-xxxx-xxxxxxxxxx), nikoli hodnotu zadanou postgres_role při vytváření.
CLI
Aktualizujte roli pomocí vzoru masky pro aktualizaci. Maska aktualizace je druhým pozičním argumentem za názvem prostředku.
Při aktualizaci spec.attributesje nutné zadat všechna tři pole atributů (createdb, createrole, bypassrls) – rozhraní API nahradí celý objekt atributů:
databricks postgres update-role \
projects/my-project/branches/production/roles/rol-xxxx-xxxxxxxxxx \
"spec.attributes" \
--json '{
"spec": {
"attributes": {"createdb": true, "createrole": false, "bypassrls": false}
}
}'
Pokud chcete aktualizovat také role členství, přidejte spec.membership_roles do masky aktualizace:
databricks postgres update-role \
projects/my-project/branches/production/roles/rol-xxxx-xxxxxxxxxx \
"spec.membership_roles" \
--json '{"spec": {"membership_roles": ["DATABRICKS_SUPERUSER"]}}'
Chcete-li odebrat databricks_superuser, předejte prázdné pole: "membership_roles": [].
kroucení
curl -X PATCH "$WORKSPACE/api/2.0/postgres/projects/my-project/branches/production/roles/rol-xxxx-xxxxxxxxxx?update_mask=spec.membership_roles%2Cspec.attributes.createdb" \
-H "Authorization: Bearer ${DATABRICKS_TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"name": "projects/my-project/branches/production/roles/rol-xxxx-xxxxxxxxxx",
"spec": {
"membership_roles": ["DATABRICKS_SUPERUSER"],
"attributes": { "createdb": true }
}
}' | jq
Chcete-li odebrat databricks_superuser, předejte prázdné pole: "membership_roles": [].
Vyřazení role Postgres
Můžete odstranit jak role založené na identitě Azure Databricks, tak vestavěné role hesel Postgres.
uživatelské rozhraní
V aplikaci Lakebase přejděte na kartu Role a databáze vaší větve.
Klikněte na nabídku pro roli, kterou chcete odstranit, a vyberte Drop.
V potvrzovacím dialogu můžete volitelně povolit možnost Znovu přiřadit vlastněné objekty.
Roli Postgres nelze vynechat, pokud vlastní databázové objekty, jako jsou tabulky, zobrazení nebo schémata. Když je tato možnost povolena, zobrazí se rozbalovací seznam Znovu přiřadit vlastníkovi. Vyberte roli, která převezme vlastnictví objektů před jejich upuštěním. Objekty, které nelze přeřadit, například oprávnění udělená rušené roli, se po dokončení přeřazení automaticky odstraní. Je-li tato možnost zakázána, odstranění se nezdaří, pokud role vlastní nějaké objekty.
Klikněte na tlačítko Potvrdit.
Odstranění role je trvalé a nelze jej vrátit zpět.
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.
CLI
databricks postgres delete-role \
projects/my-project/branches/production/roles/rol-xxxx-xxxxxxxxxx
Pokud role vlastní databázové objekty, použijte --reassign-owned-to před odstraněním vlastnictví k převodu vlastnictví na jinou roli:
databricks postgres delete-role \
projects/my-project/branches/production/roles/rol-xxxx-xxxxxxxxxx \
--reassign-owned-to projects/my-project/branches/production/roles/rol-yyyy-yyyyyyyyyy
Python SDK
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
operation = w.postgres.delete_role(
name="projects/my-project/branches/production/roles/rol-xxxx-xxxxxxxxxx"
)
operation.wait()
kroucení
curl -X DELETE "$WORKSPACE/api/2.0/postgres/projects/my-project/branches/production/roles/rol-xxxx-xxxxxxxxxx" \
-H "Authorization: Bearer ${DATABRICKS_TOKEN}" | jq
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: