Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W katalogu Unity można użyć widoków dynamicznych, aby skonfigurować precyzyjną kontrolę dostępu, w tym:
- Zabezpieczenia na poziomie kolumn lub wierszy.
- Maskowanie danych.
Katalog Unity wprowadza następujące funkcje, które pozwalają dynamicznie ograniczać użytkownikom dostęp do wiersza, kolumny lub rekordu w widoku:
-
current_user(): zwraca adres e-mail bieżącego użytkownika. -
is_account_group_member(): zwracaTRUEwartość, jeśli bieżący użytkownik jest członkiem określonej grupy na poziomie konta. Zalecane do użycia w dynamicznych widokach związanych z danymi Katalogu Unity. -
is_member(): ZwracaTRUEjeśli bieżący użytkownik jest członkiem określonej grupy na poziomie workspace'u. Ta funkcja jest udostępniana pod kątem zgodności z istniejącym magazynem metadanych Hive. Unikaj używania ich w kontekście danych Unity Catalog, ponieważ nie oceniają członkostwa w grupach na poziomie konta.
Usługa Azure Databricks zaleca, aby użytkownicy nie udzielali użytkownikom możliwości odczytywania tabel i widoków, do których odwołuje się widok.
Poniższe przykłady ilustrują tworzenie widoków dynamicznych w katalogu Unity.
Zanim rozpoczniesz
Aby utworzyć lub odczytać widoki dynamiczne, wymagania są takie same jak dla widoków standardowych, z wyjątkiem wymagań obliczeniowych. Należy użyć jednego z następujących zasobów obliczeniowych:
- Magazyn SQL.
- Obliczanie z użyciem standardowego trybu dostępu (wcześniej trybu współdzielonego).
- Korzystaj z dedykowanego trybu dostępu (dawniej tryb dostępu pojedynczego użytkownika) na Databricks Runtime 15.4 LTS lub nowszym.
Nie można odczytać widoków dynamicznych przy użyciu dedykowanych zasobów obliczeniowych w środowisku Databricks Runtime 15.3 lub nowszym.
Aby skorzystać z filtrowania danych dostępnego w środowisku Databricks Runtime 15.4 LTS lub nowszym, należy również sprawdzić, czy obszar roboczy jest włączony dla obliczeń bezserwerowych, ponieważ funkcja filtrowania danych, która obsługuje widoki dynamiczne, działa na obliczeniach bezserwerowych. W związku z tym mogą być naliczane opłaty za zasoby obliczeniowe bezserwerowe w przypadku używania dedykowanych zasobów obliczeniowych do odczytywania widoków dynamicznych. Zobacz Szczegółową kontrolę dostępu na dedykowanej jednostce obliczeniowej.
Uprawnienia na poziomie kolumny
W widoku dynamicznym można ograniczyć kolumny, do których może uzyskać dostęp określony użytkownik lub grupa. W poniższym przykładzie tylko członkowie grupy auditors mogą uzyskiwać dostęp do adresów e-mail z tabeli sales_raw. Podczas analizy zapytań platforma Apache Spark zastępuje instrukcję CASE ciągiem literału REDACTED lub rzeczywistą zawartością kolumny adresu e-mail. Inne kolumny są zwracane w zwykły sposób. Ta strategia nie ma negatywnego wpływu na wydajność zapytań.
-- 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_account_group_member('auditors') THEN email
ELSE 'REDACTED'
END AS email,
country,
product,
total
FROM sales_raw
Uprawnienia na poziomie wiersza
W widoku dynamicznym można określić uprawnienia na poziomie wiersza lub pola. W poniższym przykładzie tylko członkowie managers grupy mogą wyświetlać kwoty transakcji, gdy przekraczają 1000 000 USD. Pasujące wyniki są filtrowane dla innych użytkowników.
CREATE VIEW sales_redacted AS
SELECT
user_id,
country,
product,
total
FROM sales_raw
WHERE
CASE
WHEN is_account_group_member('managers') THEN TRUE
ELSE total <= 1000000
END;
Maskowanie danych
Ponieważ widoki w Unity Catalog używają języka Spark SQL, można zaimplementować zaawansowane maskowanie danych, stosując bardziej złożone wyrażenia SQL i wyrażenia regularne. W poniższym przykładzie wszyscy użytkownicy mogą analizować domeny poczty e-mail, ale tylko członkowie auditors grupy mogą wyświetlać cały adres e-mail użytkownika.
-- 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_account_group_member('auditors') THEN email
ELSE regexp_extract(email, '^.*@(.*)$', 1)
END
FROM sales_raw