Udostępnij przez


Utwórz role Postgres

Ważne

Skalowanie automatyczne bazy danych Lakebase znajduje się w wersji beta w następujących regionach: eastus2, westeurope, westus.

Autoskalowanie bazy danych Lakebase to najnowsza wersja bazy danych Lakebase z automatycznym skalowaniem obliczeniowym, skalowaniem do zera, rozgałęzianiem i natychmiastowym przywracaniem. Aby zapoznać się z porównaniem funkcji z Lakebase Provisioned, sprawdź wybieranie między wersjami.

Podczas tworzenia projektu usługa Lakebase tworzy kilka ról Postgres w projekcie:

  • Rola Postgres dla tożsamości właściciela projektu Azure Databricks (na przykład user@databricks.com), która jest właścicielem domyślnej databricks_postgres bazy danych
  • Rola administracyjna databricks_superuser

Baza danych databricks_postgres jest tworzona, aby można było nawiązać połączenie i wypróbować Lakebase natychmiast po utworzeniu projektu.

Tworzone są również kilka ról zarządzanych przez system. Są to role wewnętrzne używane przez usługi Azure Databricks do zarządzania, monitorowania i operacji na danych.

Uwaga / Notatka

Role postgres kontrolują dostęp do bazy danych (kto może wykonywać zapytania dotyczące danych). Aby uzyskać uprawnienia projektu (kto może zarządzać infrastrukturą), zobacz Uprawnienia projektu. Aby zapoznać się z samouczkiem dotyczącym konfigurowania obu tych elementów, zobacz Samouczek: udzielanie projektowi i bazie danych dostępu do nowego użytkownika.

Zobacz Wstępnie utworzone role i role systemowe.

Tworzenie ról Postgres

Usługa Lakebase obsługuje dwa typy ról Postgres na potrzeby dostępu do bazy danych:

  • Role OAuth dla tożsamości Azure Databricks: Należy je utworzyć za pomocą databricks_auth rozszerzenia i języka SQL. Umożliwia tożsamościom usługi Azure Databricks (użytkownikom, jednostkom usługi i grupom) nawiązywanie połączenia przy użyciu tokenów OAuth.
  • Natywne role haseł Postgres: Utwórz je przy użyciu interfejsu użytkownika usługi Lakebase lub bazy danych SQL. Użyj dowolnej prawidłowej nazwy roli z uwierzytelnianiem haseł.

Aby uzyskać wskazówki dotyczące wybierania typu roli do użycia, zobacz Omówienie uwierzytelniania. Każda z nich jest przeznaczona dla różnych przypadków użycia.

Tworzenie roli OAuth dla tożsamości usługi Azure Databricks przy użyciu języka SQL

Aby umożliwić tożsamościom usługi Azure Databricks (użytkownikom, jednostkom usługi lub grupom) nawiązywanie połączenia przy użyciu tokenów OAuth, należy utworzyć ich role Postgres przy użyciu databricks_auth rozszerzenia . Utworzenie roli dla grupy umożliwia wszystkim członkom grupy uwierzytelnianie przy użyciu roli grupy, co upraszcza zarządzanie uprawnieniami.

Aby uzyskać szczegółowe instrukcje dotyczące uzyskiwania tokenów OAuth w przepływach typu użytkownik-maszyna i maszyna-maszyna, zobacz Uzyskiwanie tokenu OAuth w przepływie typu użytkownik-komputer i Uzyskiwanie tokenu OAuth w przepływie typu maszyna-maszyna w dokumentacji uwierzytelniania.

Wymagania wstępne:

  • Musisz mieć uprawnienia CREATE i CREATE ROLE w bazie danych
  • Musisz być uwierzytelniony jako tożsamość Azure Databricks z prawidłowym tokenem OAuth
  • Natywne sesje uwierzytelnione w usłudze Postgres nie mogą tworzyć ról protokołu OAuth

Aby utworzyć rolę OAuth:

  1. databricks_auth Utwórz rozszerzenie. Każda baza danych Postgres musi mieć własne rozszerzenie.

    CREATE EXTENSION IF NOT EXISTS databricks_auth;
    
  2. Użyj funkcji databricks_create_role, aby utworzyć rolę Postgres dla tożsamości usługi Azure Databricks.

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

    W przypadku użytkownika usługi Azure Databricks:

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

    W przypadku aplikacji Azure Databricks:

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

    W przypadku grupy usługi Azure Databricks:

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

    Nazwa grupy uwzględnia wielkość liter i musi być dokładnie taka, jaka jest wyświetlana w obszarze roboczym usługi Azure Databricks. Podczas tworzenia roli Postgres dla grupy każdy bezpośredni lub pośredni członek (użytkownik lub jednostka usługi) tej grupy usługi Databricks może uwierzytelnić się w usłudze Postgres jako rolę grupy przy użyciu ich indywidualnego tokenu OAuth. Dzięki temu można zarządzać uprawnieniami na poziomie grupy w usłudze Postgres zamiast utrzymywania uprawnień dla poszczególnych użytkowników.

  3. Udziel uprawnień bazy danych do nowo utworzonej roli.

Funkcja databricks_create_role() tworzy rolę Postgres tylko z uprawnieniami LOGIN . Po utworzeniu roli należy przyznać odpowiednie uprawnienia i uprawnienia bazy danych do określonych baz danych, schematów lub tabel, do których użytkownik musi uzyskać dostęp. Dowiedz się, jak zarządzać uprawnieniami

Uwierzytelnianie oparte na grupach

Podczas tworzenia roli Postgres dla grupy usługi Azure Databricks należy włączyć uwierzytelnianie oparte na grupach. Dzięki temu dowolny członek grupy usługi Azure Databricks może uwierzytelniać się w usłudze Postgres przy użyciu roli grupy, co upraszcza zarządzanie uprawnieniami.

Jak to działa:

  1. Utwórz rolę Postgres dla grupy Databricks za pomocą databricks_create_role('Group Name', 'GROUP').
  2. Przypisz uprawnienia do bazy danych roli grupowej w PostgreSQL. Zobacz Zarządzanie uprawnieniami.
  3. Dowolny bezpośredni lub pośredni członek (użytkownik lub jednostka usługi) grupy usługi Databricks może łączyć się z usługą Postgres przy użyciu ich indywidualnego tokenu OAuth.
  4. Podczas nawiązywania połączenia członek uwierzytelnia się jako rolę grupy i dziedziczy wszystkie uprawnienia przyznane tej roli.

Przepływ uwierzytelniania:

Gdy członek grupy nawiązuje połączenie, określa nazwę roli Postgres grupy jako nazwę użytkownika i własny token OAuth jako hasło:

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

Ważne zagadnienia:

  • Walidacja członkostwa w grupie: Członkostwo w grupie jest weryfikowane tylko w czasie uwierzytelniania. Jeśli członek zostanie usunięty z grupy usługi Azure Databricks po nawiązaniu połączenia, połączenie pozostanie aktywne. Nowe próby połączenia podejmowane przez usuniętych członków są odrzucane.
  • Określanie zakresu obszaru roboczego: Tylko grupy przypisane do tego samego obszaru roboczego usługi Azure Databricks co projekt są obsługiwane na potrzeby uwierzytelniania opartego na grupach. Aby dowiedzieć się, jak przypisywać grupy do obszaru roboczego, zobacz Zarządzanie grupami.
  • Czułość wielkości liter: Nazwa grupy używana w databricks_create_role() musi się dokładnie zgadzać z nazwą grupy wyświetlaną w obszarze roboczym Azure Databricks, łącznie z wielkością liter.
  • Zarządzanie uprawnieniami: Zarządzanie uprawnieniami na poziomie grupy w usłudze Postgres jest bardziej wydajne niż zarządzanie poszczególnymi uprawnieniami użytkowników. Po udzieleniu uprawnień do roli grupy wszyscy obecni i przyszli członkowie grupy automatycznie dziedziczą te uprawnienia.

Uwaga / Notatka

Nazwy ról nie mogą przekraczać 63 znaków, a niektóre nazwy nie są dozwolone. Dowiedz się więcej: Zarządzanie rolami

Tworzenie natywnej roli hasła Postgres

Możesz utworzyć natywne role haseł Postgres przy użyciu interfejsu użytkownika usługi Lakebase lub standardowych poleceń SQL.

Korzystanie z interfejsu użytkownika:

  1. W aplikacji Lakebase przejdź do strony przeglądu oddziału, a następnie do karty Role i bazy danych tego oddziału.
  2. Kliknij pozycję Dodaj rolę i określ nazwę roli (dowolną prawidłową nazwę roli Postgres).

Dodawanie roli Postgres

  1. Kliknij pozycję Utwórz.
  2. Skopiuj wygenerowane hasło i podaj je bezpiecznie użytkownikowi, który będzie używać tej roli.

Interfejs użytkownika usługi Lakebase automatycznie generuje bezpieczne hasło z 60-bitową entropią. Role użytkownika utworzone za pośrednictwem interfejsu użytkownika automatycznie uzyskują członkostwo w roli databricks_superuser, która zapewnia rozległe uprawnienia do bazy danych.

Korzystanie z języka SQL:

Możesz również utworzyć natywne role haseł Postgres przy użyciu standardowych poleceń Postgres SQL:

CREATE ROLE role_name WITH LOGIN PASSWORD 'your_secure_password';

Podczas tworzenia ról przy użyciu języka SQL hasło powinno zawierać co najmniej 12 znaków z kombinacją małych liter, wielkich liter, cyfr i symboli. Hasła zdefiniowane przez użytkownika są weryfikowane w czasie tworzenia w celu zapewnienia 60-bitowej entropii.

Wyświetlanie ról bazy danych Postgres

interfejs użytkownika

Aby wyświetlić wszystkie role postgres w projekcie, przejdź do karty Role i bazy danych gałęzi w aplikacji Lakebase. Wszystkie role utworzone w gałęzi, z wyjątkiem ról systemowych, są wymienione, w tym natywne role Postgres z uwierzytelnianiem haseł.

Pokaż rolę Postgres

PostgreSQL

Wyświetl wszystkie role za pomocą \du polecenia:

Wszystkie role bazy danych Postgres, w tym role systemowe, można wyświetlić za pomocą \du meta-polecenia z dowolnego klienta Postgres (takiego jak psql) lub edytora SQL usługi 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

Spowoduje to wyświetlenie wszystkich ról i ich atrybutów (Superużytkownik, Tworzenie roli, Tworzenie bazy danych itp.).

Usuń rolę Postgres

Możesz usunąć zarówno role oparte na tożsamościach Databricks, jak i role uwierzytelniane hasłem Postgres.

interfejs użytkownika

Usuwanie roli jest trwałą akcją, której nie można cofnąć. Nie można usunąć roli, która jest właścicielem bazy danych. Przed usunięciem roli będącej właścicielem bazy danych należy usunąć bazę danych.

Aby usunąć dowolną rolę Postgres przy użyciu interfejsu użytkownika:

  1. Przejdź do karty Role i bazy danych oddziału w aplikacji Lakebase.
  2. Wybierz pozycję Usuń rolę z menu roli i potwierdź usunięcie.

PostgreSQL

Możesz usunąć dowolną rolę Postgres przy użyciu standardowych poleceń Postgres. Aby uzyskać szczegółowe informacje, zobacz dokumentację bazy danych PostgreSQL dotyczącą usuwania ról.

Usuwanie roli:

DROP ROLE role_name;

Po usunięciu roli opartej na tożsamości usługi Azure Databricks tożsamość ta nie może już uwierzytelniać się w usłudze Postgres przy użyciu tokenów OAuth do momentu utworzenia nowej roli.

Wstępnie utworzone role

Po utworzeniu projektu usługa Azure Databricks automatycznie tworzy role Postgres na potrzeby administrowania projektem i rozpoczynania pracy.

Role Description Uprawnienia dziedziczone
<project_owner_role> Tożsamość twórcy projektu w usłudze Azure Databricks (na przykład my.user@databricks.com). Ta rola jest właścicielem domyślnej databricks_postgres bazy danych i może logować się i administrować projektem. Członek databricks_superuser
databricks_superuser Wewnętrzna rola administracyjna. Służy do konfigurowania dostępu w projekcie i zarządzania nim. Ta rola ma szerokie uprawnienia. Dziedziczy z pg_read_all_data, pg_write_all_data, i pg_monitor.

Dowiedz się więcej o określonych możliwościach i uprawnieniach tych ról: Możliwości ról utworzonych wstępnie

Role systemowe utworzone przez usługę Azure Databricks

Usługa Azure Databricks tworzy następujące role systemowe wymagane dla usług wewnętrznych. Te role można wyświetlić, wydając polecenie \du z psql menu lub Edytora SQL Lakebase.

Role Przeznaczenie
cloud_admin Rola superużytkownika używana do zarządzania infrastrukturą w chmurze
databricks_control_plane Rola superużytkownika używana przez wewnętrzne składniki usługi Databricks na potrzeby operacji zarządzania
databricks_monitor Używane przez wewnętrzne usługi zbierania metryk
databricks_replicator Używane na potrzeby operacji replikacji bazy danych
databricks_writer_<dbid> Rola w bazie danych używana do tworzenia i zarządzania zsynchronizowanymi tabelami.
databricks_reader_<dbid> Rola na poziomie bazy danych, używana do odczytu tabel zarejestrowanych w Unity Catalog
databricks_gateway Używane do połączeń wewnętrznych dla zarządzanych usług obsługujących dane

Aby dowiedzieć się, jak role, uprawnienia i członkostwa w rolach działają w usłudze Postgres, skorzystaj z następujących zasobów w dokumentacji bazy danych Postgres:

Dalsze kroki