Udostępnij za pośrednictwem


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. Katalog Unity używa innego modelu do przyznawania uprawnień. Zobacz uprawnienia Unity Catalogu i szyfrowane obiekty.

Uwaga

Kontrola dostępu do tabel dla danych zarządzanych przez metadane Hive to starszy model zarządzania ładem danych. Usługa Databricks zaleca, aby uaktualnić tabele zarządzane przez magazyn metadanych Hive do Unity Catalog. Katalog Unity upraszcza zabezpieczenia i nadzór nad danymi, oferując centralne miejsce do administrowania i audytu dostępu do danych w różnych obszarach roboczych w twoim koncie. Aby dowiedzieć się więcej o tym, jak starszy model uprawnień różni się od modelu uprawnień katalogu Unity, zobacz Work with Unity Catalog (Praca z katalogiem Unity) i starszego magazynu metadanych Hive.

Wymagania

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 kontroli dostępu (uprawnienia przyznane i odrzucone), te listy są stosowane 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 SQL, należy używać instrukcji GRANT, REVOKE, DENY, , MSCKi SHOW GRANTS w notesie lub edytorze zapytań SQL usługi Databricks, korzystając ze składni:

GRANT privilege_type ON securable_object TO principal

Gdzie:

Aby przyznać uprawnienie wszystkim użytkownikom w obszarze roboczym, przyznaj uprawnienie grupie users. 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 Databricks terraform 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 udzielono dostępu do ANY FILE, mogą pominąć ograniczenia wprowadzone w katalogu, schematach, tabelach i widokach, odczytując bezpośrednio z systemu plików.

Uwaga

Uprawnienia do tymczasowych widoków globalnych i lokalnych 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, na które odwołują się widoki tymczasowe, są wymuszane.

Uprawnienia, które można nadać na 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 dowolnej 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 katalogu 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 przywilej

Aby wykonać akcję na obiekcie schematu w magazynie metadanych Hive, użytkownik musi mieć uprawnienia USAGE względem 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
  • Mieć uprawnienia USAGE do schematu lub być w grupie, która ma uprawnienia USAGE 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ć uprawnienia USAGE, 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 odmowa uprawnień na CATALOG automatycznie przyznaje lub odmawia uprawnień dla wszystkich schematów w katalogu. 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 grupy auditors mogą wyświetlać adresy e-mail z tabeli sales_raw. 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 należący do grupy managers mogą zobaczyć kwoty transakcji (kolumnatotal) 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