Udostępnij za pośrednictwem


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(): zwraca TRUE 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(): zwraca TRUE 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