Udostępnij przez


Samouczek: udzielanie dostępu do projektu i bazy danych nowemu użytkownikowi

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.

Dowiedz się, jak skonfigurować nowego użytkownika z dostępem do projektu i bazy danych usługi Lakebase. W tym samouczku omówiono zarówno uprawnienia na poziomie projektu (do zarządzania zasobami usługi Lakebase) jak i uprawnienia na poziomie bazy danych (na potrzeby uzyskiwania dostępu do danych za pośrednictwem bazy danych Postgres).

Informacje o dwóch systemach uprawnień

Baza danych Lakebase Postgres używa dwóch warstw uprawnień:

  1. Uprawnienia projektu (ACL): kontrolowanie akcji na poziomie platformy, takich jak tworzenie gałęzi, zarządzanie obliczeniami i zarządzanie ustawieniami projektu. Są one zarządzane za pośrednictwem aplikacji Lakebase.

  2. Uprawnienia roli Postgres: kontrola dostępu do danych w samej bazie danych. Są one zarządzane za pomocą standardowych poleceń Postgres GRANT .

Te systemy nie mają automatycznej synchronizacji. Te uprawnienia można udzielić niezależnie lub razem, w zależności od wymagań organizacji:

  • Przyznaj obie warstwy użytkownikom, którzy potrzebują dostępu do platformy i dostępu do bazy danych.
  • Przyznaj tylko uprawnienia do projektu użytkownikom, którzy zarządzają infrastrukturą, ale nie muszą wykonywać zapytań dotyczących danych.
  • Udziel dostępu tylko do bazy danych użytkownikom, którzy muszą wykonywać zapytania dotyczące danych, ale nie muszą zarządzać zasobami usługi Lakebase (mogą łączyć się przy użyciu narzędzi, takich jak psql ze szczegółami połączenia).

W tym samouczku pokazano, jak skonfigurować obie warstwy dostępu:

  • Udziel uprawnień projektu, aby użytkownicy mogli pracować z zasobami platformy Lakebase (w tym samouczku jest używana funkcja CAN MANAGE w celu uzyskania pełnego dostępu, a także można udzielić funkcji CAN USE na potrzeby dostępu tylko do wyświetlania i używania)
  • Tworzenie roli Postgres z odpowiednimi uprawnieniami bazy danych na potrzeby nawiązywania połączenia z bazą danych i wykonywania zapytań względem bazy danych

Uprawnienia domyślne

Wszyscy użytkownicy obszaru roboczego domyślnie dziedziczą uprawnienia CAN CREATE, co umożliwia wyświetlanie i tworzenie projektów. Aby udzielić dodatkowego dostępu do zasobów i baz danych projektu, musisz jawnie przypisać metodę CAN USE lub CAN MANAGE.

Wymagania wstępne

  • Projekt usługi Lakebase z bazą danych
  • Administrator obszaru roboczego lub uprawnienia do zarządzania projektem
  • Tożsamość użytkownika Azure Databricks (adres e-mail) w tym samym obszarze roboczym, w którym został utworzony projekt.

Scenariusz: Dodawanie analityka danych z dostępem do odczytu i zapisu

Przejdźmy przez proces dodawania analityka danych o nazwie Alex Lopez , który potrzebuje:

  • Możliwość tworzenia gałęzi, obliczeń i baz danych (CAN MANAGE) i zarządzania nimi
  • Dostęp do odczytu i zapisu w tabelach w schemacie public bazy danych Postgres
  • Możliwość tworzenia nowych tabel na potrzeby analizy

Krok 1. Udzielanie uprawnień projektu

Najpierw przyznaj użytkownikowi uprawnienie CAN MANAGE, aby mógł wykonywać akcje zarządzania projektami.

  1. Przejdź do projektu w aplikacji Lakebase.
  2. Kliknij pozycję Ustawienia na pasku bocznym po lewej stronie.
  3. Przewiń do sekcji Uprawnienia projektu .
  4. Kliknij pozycję Udziel uprawnienia.
  5. Wyszukaj i wybierz użytkownika.
  6. Wybierz uprawnienie MOŻE ZARZĄDZAĆ.
  7. Kliknij Grant.

Udzielanie uprawnienia CAN MANAGE

Na co POZWALA CAN MANAGE:

  • Tworzenie i usuwanie gałęzi
  • Zarządzanie obliczeniami i konfigurowanie ustawień projektu
  • Tworzenie baz danych i ról Postgres i zarządzanie nimi
  • Pełna kontrola nad operacjami projektu

Uwaga / Notatka

FUNKCJA CAN MANAGE udziela pełnej kontroli nad projektem, w tym wielu innych działań. FUNKCJA CAN USE umożliwia wyświetlanie i używanie zasobów (lista, widok, uzyskiwanie identyfikatora URI połączenia i niektórych operacji gałęzi) bez pełnego zarządzania. Aby uzyskać pełną listę wszystkich poziomów uprawnień i określonych akcji, które zezwalają, zobacz ACL projektu Lakebase.

Krok 2. Tworzenie roli Postgres dla użytkownika

Teraz utwórz rolę OAuth, która umożliwia Alexowi uwierzytelnianie przy użyciu tożsamości usługi Azure Databricks przy użyciu tokenów OAuth. Jako właściciel projektu masz uprawnienia niezbędne do tworzenia ról.

  1. Otwórz Edytor SQL usługi Lakebase i połącz się z projektem.

  2. databricks_auth Utwórz rozszerzenie (jeśli nie jest jeszcze włączone):

    CREATE EXTENSION IF NOT EXISTS databricks_auth;
    
  3. databricks_create_role Użyj funkcji , aby utworzyć rolę OAuth Postgres dla Alexa:

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

Spowoduje to utworzenie roli OAuth, która:

  • Ma identyczną nazwę jak Azure Databricks (alex.lopez@databricks.com)
  • Może uwierzytelniać się przy użyciu tokenów OAuth
  • Ma uprawnienia logowania
  • Nie ma jeszcze uprawnień bazy danych (przydzielimy je dalej)

Uwaga / Notatka

Informacje o rolach protokołu OAuth:

  • Role OAuth uwierzytelniają się przy użyciu tokenów ograniczonych czasowo (wygasają po 1 godzinie)
  • Użytkownicy uzyskują tokeny z okna dialogowego połączenia aplikacji Lakebase
  • Najlepiej nadaje się do interaktywnych sesji i przepływów pracy zintegrowanych z przestrzenią roboczą.
  • Aby uzyskać więcej informacji, zobacz About authentication (Informacje o uwierzytelnianiu)

Krok 3. Udzielanie uprawnień bazy danych Postgres

Teraz przyznaj alexowi potrzebne uprawnienia bazy danych. Zapewnimy im dostęp do odczytu i zapisu w schemacie public .

-- Grant CONNECT permission on the database
GRANT CONNECT ON DATABASE databricks_postgres TO "alex.lopez@databricks.com";

-- Grant USAGE permission on the public schema (required to access objects in it)
GRANT USAGE ON SCHEMA public TO "alex.lopez@databricks.com";

-- Grant CREATE permission on the public schema (allows creating new tables)
GRANT CREATE ON SCHEMA public TO "alex.lopez@databricks.com";

-- Grant read-write access to all existing tables in public schema
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO "alex.lopez@databricks.com";

-- Grant permissions on future tables (so Alex can access new tables automatically)
ALTER DEFAULT PRIVILEGES IN SCHEMA public
    GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO "alex.lopez@databricks.com";

-- Grant permission to use sequences (needed for SERIAL columns)
GRANT USAGE, SELECT ON ALL SEQUENCES IN SCHEMA public TO "alex.lopez@databricks.com";

-- Grant permissions on future sequences
ALTER DEFAULT PRIVILEGES IN SCHEMA public
    GRANT USAGE, SELECT ON SEQUENCES TO "alex.lopez@databricks.com";

Jakie są następujące uprawnienia:

  • CONNECT: Nawiązywanie połączenia z bazą danych
  • USAGE w schemacie: Dostęp do obiektów w schemacie
  • CREATE w schemacie: Tworzenie nowych tabel, widoków, funkcji
  • SELECT, INSERT, UPDATE, DELETE w tabelach: odczytywanie i zapisywanie danych
  • Uprawnienia sekwencji: użyj kolumn autoinkrementacji

Krok 4. Testowanie połączenia

Niech Alex zweryfikuje, czy może nawiązać połączenie z bazą danych i uzyskać do niej dostęp.

Za pomocą edytora SQL Lakebase:

  1. Alex otwiera aplikację Lakebase i przechodzi do projektu.

  2. Alex otwiera edytor SQL Lakebase.

  3. W edytorze SQL Alex powinien mieć możliwość uruchomienia następujących zapytań w celu zweryfikowania uprawnień:

    -- Check role memberships
    SELECT rolname FROM pg_roles WHERE rolname = 'alex.lopez@databricks.com';
    
    -- Verify can read data
    SELECT * FROM your_table LIMIT 5;
    
    -- Verify can write data
    INSERT INTO your_table (column1, column2) VALUES ('test', 'value');
    
    -- Verify can create tables
    CREATE TABLE alex_analysis (
        id SERIAL PRIMARY KEY,
        notes TEXT,
        created_at TIMESTAMP DEFAULT NOW()
    );
    

Alternatywnie przy użyciu narzędzia psql:

Alex może również nawiązać połączenie z narzędzi zewnętrznych, takich jak psql:

  1. Na pulpicie nawigacyjnym projektu kliknij pozycję Połącz.
  2. Wybierz gałąź, zasoby obliczeniowe i bazę danych.
  3. Z listy rozwijanej Role wybierz pozycję alex.lopez@databricks.com.
  4. psql Skopiuj fragment kodu połączenia.
  5. Kliknij pozycję Kopiuj token OAuth , aby uzyskać token uwierzytelniania.
  6. Połącz się przy użyciu skopiowanego psql polecenia i wprowadź token OAuth po wyświetleniu monitu o hasło.
  7. Uruchom te same zapytania weryfikacyjne pokazane powyżej.

Alternatywa: dostęp do bazy danych tylko do odczytu

W przypadku użytkowników, którzy muszą wykonywać zapytania dotyczące danych bez ich modyfikowania, przyznaj te same uprawnienia projektu, ale użyj bardziej restrykcyjnych uprawnień bazy danych:

Uprawnienia projektu

Udziel CAN USE dostępu do projektów tylko do przeglądania i użytkowania (np. URI połączenia, lista gałęzi). Przyznaj uprawnienie CAN MANAGE, aby umożliwić tworzenie baz danych, ról i innych operacji projektu.

Uprawnienia bazy danych

-- Create OAuth role
SELECT databricks_create_role('analyst@databricks.com', 'USER');

-- Grant CONNECT permission
GRANT CONNECT ON DATABASE databricks_postgres TO "analyst@databricks.com";

-- Grant USAGE on the public schema
GRANT USAGE ON SCHEMA public TO "analyst@databricks.com";

-- Grant SELECT-only access to all existing tables
GRANT SELECT ON ALL TABLES IN SCHEMA public TO "analyst@databricks.com";

-- Grant SELECT-only access to future tables
ALTER DEFAULT PRIVILEGES IN SCHEMA public
    GRANT SELECT ON TABLES TO "analyst@databricks.com";

-- Grant USAGE on sequences (needed to view sequence values)
GRANT USAGE ON ALL SEQUENCES IN SCHEMA public TO "analyst@databricks.com";

To przyznaje:

  • Dostęp do odczytu wszystkich tabel
  • Wyświetl strukturę bazy danych
  • Nie można modyfikować danych (brak INSERT, UPDATE, DELETE)
  • Nie można utworzyć tabel ani innych obiektów

Praca z grupami i jednostkami usługi

Możesz wykonać ten sam proces, aby udzielić dostępu do grup i jednostek usługi Azure Databricks. Udziel uprawnień projektu za pomocą interfejsu użytkownika aplikacji Lakebase, utwórz role OAuth przy użyciu metody databricks_create_role()i przyznaj uprawnienia bazy danych. Aby uzyskać więcej informacji, zobacz Grupy i Service principals.

Używanie natywnych ról haseł Postgres

Alternatywą dla ról OAuth jest tworzenie natywnych ról haseł Postgres dla aplikacji, które nie mogą odświeżać tokenów co godzinę, długotrwałych procesów lub narzędzi zewnętrznych, które nie obsługują protokołu OAuth. Aby uzyskać instrukcje dotyczące tworzenia ról haseł i zarządzania nimi, zobacz Zarządzanie rolami bazy danych Postgres.

Dalsze kroki