Zarządzanie rolami

Role bazy danych Postgres kontrolują dostęp do baz danych Postgres, schematów, tabel i innych obiektów bazy danych. Użyj interfejsu użytkownika usługi Lakebase, aby utworzyć role dla zespołu i zarządzać nimi.

Uwaga / Notatka

Przed rozpoczęciem pracy z rolami zobacz, jak nawiązać połączenie z bazą danych i uwierzytelnić się przy użyciu tokenów OAuth lub natywnego uwierzytelniania haseł Postgres.

Omówienie roli

Podczas tworzenia projektu rola Postgres jest automatycznie tworzona dla tożsamości usługi Databricks (na przykład user@databricks.com). Ta rola jest właścicielem domyślnej databricks_postgres bazy danych i jest członkiem databricks_superuserprogramu , zapewniając jej szerokie uprawnienia do zarządzania obiektami bazy danych. Możesz utworzyć dodatkowe role w domyślnej gałęzi projektu lub w gałęziach podrzędnych.

Jeśli zarządzasz projektem za pomocą programu Terraform i chcesz przenieść tę niejawną rolę właściciela w ramach zarządzania IaC, zobacz Typowe konfigurowanie projektu usługi Lakebase za pomocą narzędzia Terraform dla replace_existing wzorca wdrażania.

Jeśli zamiast tego używasz pakietów deklaratywnej automatyzacji, zobacz Typowe konfigurowanie projektu Lakebase z pakietami deklaratywnej automatyzacji dla tego samego wzorca.

Uwaga / Notatka

Stan roli w PostgreSQL jest niezależny w poszczególnych gałęziach. Gdy tworzysz gałąź, odzwierciedla ona role Postgres, bazy danych, przynależności do ról oraz nadane uprawnienia gałęzi nadrzędnej w momencie rozgałęzienia. Po utworzeniu gałęzi każda z nich rozwija się niezależnie — role i bazy danych są tworzone niezależnie, polecenia GRANT i REVOKE są stosowane niezależnie, a zmiany atrybutów ról lub przynależności do ról wprowadzone w jednej gałęzi nie mają wpływu na żadną inną gałąź, w tym na gałąź macierzystą. Nie ma automatycznej synchronizacji stanu roli między gałęziami.

Uprawnienia projektu (CAN USE, CAN MANAGE) działają inaczej: mają zastosowanie do całego projektu i wszystkich jego gałęzi. Zobacz Zarządzanie uprawnieniami projektu.

Tworzenie roli

Użyj okna dialogowego Dodaj rolę w Lakebase App, aby utworzyć rolę OAuth dla tożsamości Databricks lub natywną rolę hasła Postgres.

Tworzenie roli OAuth

Role OAuth są połączone z tożsamością usługi Azure Databricks (użytkownikiem, jednostką usługi lub grupą) i uwierzytelniają się przy użyciu tokenów OAuth, które wygasają po godzinie.

Podczas tworzenia gałęzi podrzędnej odzwierciedla ona rolę i stan bazy danych nadrzędnego w momencie rozgałęziania. Następnie stan roli każdej gałęzi zmienia się niezależnie. W przypadku grup obsługiwane są tylko grupy na poziomie obszaru roboczego.

Opcjonalnie przyznaj databricks_superuser (dziedziczy pg_read_all_data, pg_write_all_data i pg_monitor) lub standardowe atrybuty Postgres (CREATEDB, CREATEROLE, BYPASSRLS). Zobacz Atrybuty roli w dokumentacji bazy danych PostgreSQL.

Aby utworzyć rolę OAuth, otwórz projekt i wybierz Przegląd w pasku bocznym. Wybierz zakładkę Role i bazy danych, kliknij Dodaj rolę, wybierz zakładkę OAuth , wybierz tożsamość z rozwijanego menu Principal , skonfiguruj uprawnienia i kliknij Dodaj.

Dodawanie roli — karta OAuth

Uwaga / Notatka

Role OAuth można również utworzyć przy użyciu databricks_auth rozszerzenia sql lub interfejsu API REST. Zobacz Tworzenie ról Postgres.

Utwórz rolę hasła

Role haseł używają statycznego hasła Postgres i nie są połączone z tożsamością usługi Azure Databricks. Są one przydatne w przypadku aplikacji lub narzędzi, które wymagają tradycyjnych poświadczeń bazy danych.

Aplikacja Lakebase automatycznie generuje bezpieczne hasło. Skopiuj go natychmiast po utworzeniu — nie jest on ponownie wyświetlany. Jeśli potrzebujesz niestandardowego hasła, ustaw je później przy użyciu języka SQL. Te same opcjonalne uprawnienia z roli OAuth mają zastosowanie (databricks_superuser, CREATEDB, CREATEROLE, BYPASSRLS). Nazwy ról muszą być prawidłowymi identyfikatorami bazy danych Postgres i nie mogą przekraczać 63 znaków.

Aby utworzyć rolę hasła, przejdźdo karty>>, wprowadź nazwę roli, skonfiguruj uprawnienia, kliknij przycisk Dodaj i skopiuj wygenerowane hasło.

Dodawanie roli — karta Hasło

Wyświetl role

Aby wyświetlić wszystkie role w gałęzi, przejdź do karty Role i bazy danych gałęzi w aplikacji Lakebase.

Lista ról

Zarządzanie połączeniami haseł

Połączenia przy użyciu hasła są domyślnie wyłączone dla nowych projektów Lakebase. To ustawienie domyślne nie ma wpływu na istniejące projekty.

Aby włączyć połączenia haseł, przejdź do ustawień projektu>Połączenia bazy danych i sprawdź hasło (natywne role Postgres).

Aby wyłączyć połączenia z użyciem hasła, przejdź do Ustawienia> projektu Połączenia z bazą danych i odznacz Hasło (natywne role Postgresa). Istniejące role haseł nie są usuwane, ale nie można ich uwierzytelniać, gdy połączenia haseł są wyłączone.

Możesz również kontrolować ten punkt końcowy obliczeniowy. W ustawieniach obliczeń Twojej gałęzi wybierz pozycję Edytuj>Połączenia z bazą danych i zaznacz lub wyczyść pole wyboru Hasło (role Postgres).

Ustawienia połączeń bazy danych

Ważne

Jest to zmiana zachowania. Jeśli masz skrypty automatyzacji lub pipeline'y CI, które tworzą nowe projekty Lakebase i polegają na natywnych połączeniach haseł Postgres, musisz teraz wyraźnie włączyć połączenia haseł po utworzeniu projektu.

Aby programowo włączyć lub wyłączyć połączenia haseł:

CLI

# Enable password connections
databricks postgres update-project projects/<project-id> spec.enable_pg_native_login \
  --json '{"spec": {"enable_pg_native_login": true}}'

# Disable password connections
databricks postgres update-project projects/<project-id> spec.enable_pg_native_login \
  --json '{"spec": {"enable_pg_native_login": false}}'

Zestaw SDK dla języka Python

from databricks.sdk import WorkspaceClient
from databricks.sdk.service.postgres import FieldMask, Project, ProjectSpec

w = WorkspaceClient()

# Enable password connections
w.postgres.update_project(
    name="projects/<project-id>",
    project=Project(spec=ProjectSpec(enable_pg_native_login=True)),
    update_mask=FieldMask(field_mask=["spec.enable_pg_native_login"]),
).wait()

# Disable password connections
w.postgres.update_project(
    name="projects/<project-id>",
    project=Project(spec=ProjectSpec(enable_pg_native_login=False)),
    update_mask=FieldMask(field_mask=["spec.enable_pg_native_login"]),
).wait()

curl

# Enable password connections
curl -X PATCH "https://${DATABRICKS_HOST}/api/2.0/postgres/projects/<project-id>?update_mask=spec.enable_pg_native_login" \
  -H "Authorization: Bearer ${DATABRICKS_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{"spec": {"enable_pg_native_login": true}}' | jq

# Disable password connections
curl -X PATCH "https://${DATABRICKS_HOST}/api/2.0/postgres/projects/<project-id>?update_mask=spec.enable_pg_native_login" \
  -H "Authorization: Bearer ${DATABRICKS_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{"spec": {"enable_pg_native_login": false}}' | jq

Aby uzyskać informacje o uwierzytelnianiu, zobacz About authentication (Informacje o uwierzytelnianiu).

Resetowanie hasła

Możesz zresetować hasło dla natywnych ról haseł Postgres. Role OAuth używają tokenów OAuth do uwierzytelniania i nie mają haseł do zresetowania.

Aby zresetować hasło roli:

  1. Przejdź do karty Role i bazy danych oddziału w aplikacji Lakebase.
  2. Wybierz pozycję Resetuj hasło z menu roli i kliknij pozycję Resetuj.
  3. Skopiuj nowe wygenerowane hasło.

Uwaga / Notatka

Zresetowanie hasła w aplikacji Lakebase powoduje zresetowanie hasła do wygenerowanej wartości z 60-bitową entropią. Aby ustawić własną wartość hasła, możesz zresetować hasło przy użyciu edytora SQL lub klienta SQL, takiego jak psql, z następującą składnią:

ALTER USER user_name WITH PASSWORD 'new_password';

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.

Uzyskiwanie nowego tokenu OAuth

Jeśli używasz uwierzytelniania OAuth i potrzebujesz nowego tokenu OAuth (tokeny wygasają po godzinie), możesz uzyskać jeden z okna modalnego Connect.

  1. Przejdź do projektu w aplikacji Lakebase.
  2. Kliknij przycisk Połącz, aby otworzyć modalne połączenie z bazą danych.
  3. Wybierz rolę OAuth z listy rozwijanej Role .
  4. Kliknij pozycję Kopiuj token OAuth , aby skopiować nowy token.
  5. Jeśli połączysz się z psql, wyeksportuj nowy token do zmiennej środowiskowej PGPASSWORD przed ponownym połączeniem: export PGPASSWORD='<oauth-token>'

Dowiedz się więcej: Łącz się z rolą OAuth | O uwierzytelnianiu

Usuwanie roli

Ważne

Usunięcie roli jest trwałą akcją, której nie można cofnąć i 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ąć rolę:

  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.

Uwaga / Notatka

Zarządzanie rolami bazy danych wymaga uprawnienia CAN MANAGE lub CAN USEdo projektu. Jeśli nie masz wymaganych uprawnień, podczas próby wykonania akcji związanej z rolą zostanie wyświetlony komunikat "Wymagane uprawnienia". Skontaktuj się z administratorem obszaru roboczego, aby zażądać dostępu. Aby uzyskać więcej informacji, zobacz Zarządzanie uprawnieniami projektu.