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
- Administrator musi włączyć i wymusić kontrolę dostępu do tabel dla obszaru roboczego.
- Klaster musi być aktywowany 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 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:
-
privilege_type
jest typem uprawnień magazynu metadanych Hive -
securable_object
jest zabezpieczanym obiektem w magazynie metadanych Hive -
principal
jest użytkownikiem, jednostką usługi (reprezentowaną przez jego wartość applicationId) lub grupą. Należy ująć użytkowników, jednostki usługi i nazwy grup z znakami specjalnymi w backticks (` `
). Zobacz Principal (Podmiot zabezpieczeń).
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
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 uprawnieniaUSAGE
do schematu -
USAGE
Mieć uprawnienia do grupyCATALOG
lub, która maUSAGE
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