Uprawnienia magazynu metadanych Hive i zabezpieczane obiekty (starsza wersja)

W tym artykule opisano model uprawnień dla starszego magazynu metadanych hive usługi Azure Databricks, który jest wbudowany w każdy obszar roboczy usługi Azure Databricks. W tym artykule opisano również sposób udzielania, odmowy i odwoływanie uprawnień dla obiektów w wbudowanym magazynie metadanych Hive. Wykaz aparatu Unity używa innego modelu do udzielania uprawnień. Zobacz Uprawnienia wykazu aparatu Unity i zabezpieczane obiekty.

Uwaga

Kontrola dostępu do tabel dla danych zarządzanych przez magazyn metadanych Hive to starszy model zapewniania ładu danych. Usługa Databricks zaleca uaktualnienie tabel zarządzanych przez magazyn metadanych Hive do magazynu metadanych wykazu aparatu Unity. Unity Catalog upraszcza zabezpieczenia i nadzór nad danymi, zapewniając centralne miejsce do administrowania i inspekcji dostępu do danych w wielu obszarach roboczych na Twoim koncie. Aby dowiedzieć się więcej o tym, jak starszy model uprawnień różni się od modelu uprawnień wykazu aparatu Unity, zobacz Praca z wykazem aparatu Unity i starszym magazynem metadanych Hive.

Wymagania

  • Administrator musi włączyć i wymusić kontrolę dostępu do tabel dla obszaru roboczego.
  • Klaster musi być włączony dla kontroli dostępu do tabel.

Uwaga

  • Kontrola dostępu do danych jest zawsze włączona w usłudze Databricks SQL, nawet jeśli kontrola dostępu do tabel nie jest włączona dla obszaru roboczego.
  • Jeśli kontrola dostępu do tabeli jest włączona dla obszaru roboczego i w obszarze roboczym zostały już określone listy ACL (przyznane i odrzucone), te listy ACL są przestrzegane w usłudze Databricks SQL.

Zarządzanie uprawnieniami obiektów w magazynie metadanych Hive

Uprawnienia do obiektów danych zarządzanych przez magazyn metadanych Hive mogą być przyznawane przez administratora obszaru roboczego lub właściciela obiektu. Uprawnienia dla obiektów magazynu metadanych Hive można zarządzać przy użyciu poleceń SQL.

Aby zarządzać uprawnieniami w programie SQL, należy użyć instrukcji GRANT, REVOKE, DENY, MSCK i SHOW GRANTS w notesie lub edytorze zapytań SQL usługi Databricks przy użyciu składni:

GRANT privilege_type ON securable_object TO principal

Gdzie:

Aby przyznać uprawnienie wszystkim użytkownikom w obszarze roboczym, przyznaj users grupie uprawnienie. Na przykład:

GRANT SELECT ON TABLE <schema-name>.<table-name> TO users

Aby uzyskać więcej informacji na temat zarządzania uprawnieniami dla obiektów w magazynie metadanych Hive przy użyciu poleceń SQL, zobacz Uprawnienia i zabezpieczane obiekty w magazynie metadanych Hive.

Kontrolę dostępu do tabel można również zarządzać w pełni zautomatyzowaną konfiguracją przy użyciu dostawcy narzędzia Terraform usługi Databricks i databricks_sql_permissions.

Własność obiektu

Gdy kontrola dostępu do tabel jest włączona w klastrze lub usłudze SQL Warehouse, użytkownik tworzący schemat, tabelę, widok lub funkcję staje się jego właścicielem. Właściciel otrzymuje wszystkie uprawnienia i może przyznać uprawnienia innym użytkownikom.

Grupy mogą być właścicielami obiektów, w tym przypadku wszyscy członkowie tej grupy są traktowani jako właściciele.

Właściciel obiektu lub administrator obszaru roboczego może przenieść własność obiektu przy użyciu następującego polecenia:

ALTER <object> OWNER TO `<user-name>@<user-domain>.com`

Uwaga

Gdy kontrola dostępu do tabel jest wyłączona w klastrze lub usłudze SQL Warehouse, właściciele nie są zarejestrowani podczas tworzenia schematu, tabeli ani widoku. Administrator obszaru roboczego musi przypisać właściciela do obiektu przy użyciu ALTER <object> OWNER TO polecenia .

Zabezpieczane obiekty w magazynie metadanych Hive

Zabezpieczane obiekty to:

  • CATALOG: kontroluje dostęp do całego wykazu danych.

    • SCHEMA: kontroluje dostęp do schematu.
      • TABLE: kontroluje dostęp do zarządzanej lub zewnętrznej tabeli.
      • VIEW: kontroluje dostęp do widoków SQL.
      • FUNCTION: kontroluje dostęp do nazwanej funkcji.
  • ANONYMOUS FUNCTION: kontroluje dostęp do funkcji anonimowych lub tymczasowych.

    Uwaga

    ANONYMOUS FUNCTION obiekty nie są obsługiwane w usłudze Databricks SQL.

  • ANY FILE: kontroluje dostęp do bazowego systemu plików.

    Ostrzeżenie

    Użytkownicy, którym ANY FILE udzielono dostępu, mogą pominąć ograniczenia wprowadzone w katalogu, schematach, tabelach i widokach, odczytując bezpośrednio z systemu plików.

Uwaga

Uprawnienia do widoków globalnych i lokalnych tymczasowych nie są obsługiwane. Lokalne widoki tymczasowe są widoczne tylko w ramach tej samej sesji, a widoki utworzone w schemacie global_temp są widoczne dla wszystkich użytkowników współużytkowanych klastra lub usługi SQL Warehouse. Jednak uprawnienia do bazowych tabel i widoków, do których odwołuje się dowolne widoki tymczasowe, są wymuszane.

Uprawnienia, które można przyznać w obiektach magazynu metadanych Hive

  • SELECT: zapewnia dostęp do odczytu do obiektu.
  • CREATE: daje możliwość utworzenia obiektu (na przykład tabeli w schemacie).
  • MODIFY: umożliwia dodawanie, usuwanie i modyfikowanie danych do lub z obiektu.
  • USAGE: nie daje żadnych możliwości, ale jest dodatkowym wymaganiem do wykonania jakiejkolwiek akcji na obiekcie schematu.
  • READ_METADATA: umożliwia wyświetlanie obiektu i jego metadanych.
  • CREATE_NAMED_FUNCTION: umożliwia utworzenie nazwanej funkcji zdefiniowanej przez użytkownika w istniejącym wykazie lub schemacie.
  • MODIFY_CLASSPATH: umożliwia dodawanie plików do ścieżki klasy Spark.
  • ALL PRIVILEGES: daje wszystkie uprawnienia (są tłumaczone na wszystkie powyższe uprawnienia).

Uwaga

Uprawnienia MODIFY_CLASSPATH nie są obsługiwane w usłudze Databricks SQL.

USAGE Uprawnień

Aby wykonać akcję na obiekcie schematu w magazynie metadanych Hive, użytkownik musi mieć USAGE uprawnienia do tego schematu oprócz uprawnień do wykonania tej akcji. Każdy z następujących elementów spełnia USAGE wymagania:

  • Być administratorem obszaru roboczego
  • USAGE Uprawnienie do schematu lub należy do grupy, która ma USAGE uprawnienia do schematu
  • USAGE Mieć uprawnienia do grupy CATALOG lub, która ma USAGE uprawnienia
  • Być właścicielem schematu lub być w grupie, która jest właścicielem schematu

Nawet właściciel obiektu wewnątrz schematu musi mieć USAGE uprawnienia, aby go używać.

Hierarchia uprawnień

Gdy kontrola dostępu do tabel jest włączona w obszarze roboczym i we wszystkich klastrach, obiekty SQL w usłudze Azure Databricks są hierarchiczne, a uprawnienia są dziedziczone w dół. Oznacza to, że przyznanie lub odmowę uprawnienia do CATALOG automatycznego przyznania lub odmowy uprawnień do wszystkich schematów w wykazie. Podobnie uprawnienia przyznane dla obiektu schematu są dziedziczone przez wszystkie obiekty w tym schemacie. Ten wzorzec jest prawdziwy dla wszystkich zabezpieczanych obiektów.

Jeśli odmówisz uprawnień użytkownika w tabeli, użytkownik nie będzie mógł wyświetlić tabeli, próbując wyświetlić listę wszystkich tabel w schemacie. Jeśli odmówisz uprawnień użytkownika w schemacie, użytkownik nie będzie mógł zobaczyć, że schemat istnieje, próbując wyświetlić listę wszystkich schematów w wykazie.

Funkcje widoku dynamicznego

Usługa Azure Databricks zawiera dwie funkcje użytkownika, które umożliwiają dynamiczne wyrażanie uprawnień na poziomie kolumn i wierszy w treści definicji widoku zarządzanej przez magazyn metadanych Hive.

  • current_user(): zwraca bieżącą nazwę użytkownika.
  • is_member(): określ, czy bieżący użytkownik jest członkiem określonej grupy usługi Azure Databricks na poziomie obszaru roboczego.

Poniższy przykład łączy obie funkcje w celu określenia, czy użytkownik ma odpowiednie członkostwo w grupie:

-- Return: true if the user is a member and false if they are not
SELECT
  current_user as user,
-- Check to see if the current user is a member of the "Managers" group.
  is_member("Managers") as admin

Uprawnienia na poziomie kolumny

Możesz użyć widoków dynamicznych, aby ograniczyć kolumny widoczne dla określonej grupy lub użytkownika. Rozważmy następujący przykład, w którym tylko użytkownicy należący do auditors grupy mogą wyświetlać adresy e-mail z sales_raw tabeli. W czasie analizy platforma Spark zastępuje instrukcję CASE literałem 'REDACTED' lub kolumną email. To zachowanie umożliwia korzystanie ze wszystkich zwykłych optymalizacji wydajności udostępnianych przez platformę Spark.

-- Alias the field 'email' to itself (as 'email') to prevent the
-- permission logic from showing up directly in the column name results.
CREATE VIEW sales_redacted AS
SELECT
  user_id,
  CASE WHEN
    is_group_member('auditors') THEN email
    ELSE 'REDACTED'
  END AS email,
  country,
  product,
  total
FROM sales_raw

Uprawnienia na poziomie wiersza

Za pomocą widoków dynamicznych można określić uprawnienia na poziomie wiersza lub pola. Rozważmy następujący przykład, w którym tylko użytkownicy, którzy należą do managers grupy, mogą zobaczyć kwoty transakcji (total kolumnę) większą niż $1,000,000.00:

CREATE VIEW sales_redacted AS
SELECT
  user_id,
  country,
  product,
  total
FROM sales_raw
WHERE
  CASE
    WHEN is_group_member('managers') THEN TRUE
    ELSE total <= 1000000
  END;

Maskowanie danych

Jak pokazano w poprzednich przykładach, można zaimplementować maskowanie na poziomie kolumny, aby uniemożliwić użytkownikom wyświetlanie określonych danych kolumn, chyba że znajdują się w odpowiedniej grupie. Ponieważ te widoki są standardowymi językami Spark SQL, można wykonywać bardziej zaawansowane typy maskowania za pomocą bardziej złożonych wyrażeń SQL. Poniższy przykład umożliwia wszystkim użytkownikom przeprowadzanie analizy domen poczty e-mail, ale umożliwia członkom auditors grupy wyświetlanie pełnych adresów e-mail użytkowników.

-- The regexp_extract function takes an email address such as
-- user.x.lastname@example.com and extracts 'example', allowing
-- analysts to query the domain name

CREATE VIEW sales_redacted AS
SELECT
  user_id,
  region,
  CASE
    WHEN is_group_member('auditors') THEN email
    ELSE regexp_extract(email, '^.*@(.*)$', 1)
  END
  FROM sales_raw