Tworzenie widoku dynamicznego
W wykazie aparatu Unity można użyć widoków dynamicznych do skonfigurowania szczegółowej kontroli dostępu, w tym:
- Zabezpieczenia na poziomie kolumn lub wierszy.
- Maskowanie danych.
Uwaga
Szczegółowa kontrola dostępu przy użyciu widoków dynamicznych nie jest dostępna w klastrach z trybem dostępu pojedynczy użytkownik.
Wykaz aparatu Unity wprowadza następujące funkcje, które umożliwiają dynamiczne ograniczanie dostępu użytkowników do wiersza, kolumny lub rekordu w widoku:
current_user()
: zwraca adres e-mail bieżącego użytkownika.is_account_group_member()
: zwracaTRUE
wartość, jeśli bieżący użytkownik jest członkiem określonej grupy na poziomie konta. Zalecane do użycia w widokach dynamicznych względem danych wykazu aparatu Unity.is_member()
: zwracaTRUE
wartość, jeśli bieżący użytkownik jest członkiem określonej grupy na poziomie obszaru roboczego. Ta funkcja jest udostępniana pod kątem zgodności z istniejącym magazynem metadanych Hive. Unikaj używania ich z widokami względem danych wykazu aparatu Unity, ponieważ nie ocenia 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ą sposób tworzenia widoków dynamicznych w wykazie aparatu Unity.
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 auditors
grupy mogą uzyskiwać dostęp do adresów e-mail z sales_raw
tabeli. Podczas analizy zapytań platforma Apache Spark zastępuje instrukcję CASE
ciągiem REDACTED
literału lub rzeczywistą zawartością kolumny adresu e-mail. Inne kolumny są zwracane normalnie. 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 wykazie aparatu Unity używają języka Spark SQL, można zaimplementować zaawansowane maskowanie danych przy użyciu bardziej złożonych wyrażeń SQL i wyrażeń regularnych. 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
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla