Vytvoření dynamického zobrazení
V katalogu Unity můžete pomocí dynamických zobrazení nakonfigurovat jemně odstupňované řízení přístupu, včetně:
- Zabezpečení na úrovni sloupců nebo řádků
- Maskování dat
Poznámka:
Podrobné řízení přístupu pomocí dynamických zobrazení není k dispozici v clusterech s režimem přístupu jednoho uživatele.
Katalog Unity zavádí následující funkce, které umožňují dynamicky omezit, kteří uživatelé mají přístup k řádku, sloupci nebo záznamu v zobrazení:
current_user()
: Vrátí e-mailovou adresu aktuálního uživatele.is_account_group_member()
: VrátíTRUE
, pokud je aktuální uživatel členem konkrétní skupiny na úrovni účtu. Doporučeno pro použití v dynamických zobrazeních s daty katalogu Unity.is_member()
: VrátíTRUE
, pokud je aktuální uživatel členem konkrétní skupiny na úrovni pracovního prostoru. Tato funkce je k dispozici z důvodu kompatibility se stávajícím metastorem Hive. Nepoužívejte ho se zobrazeními pro data katalogu Unity, protože nevyhodnocuje členství ve skupinách na úrovni účtu.
Azure Databricks doporučuje uživatelům neudělovat možnost číst tabulky a zobrazení odkazovaná v zobrazení.
Následující příklady ukazují, jak vytvořit dynamická zobrazení v katalogu Unity.
Oprávnění na úrovni sloupce
Pomocí dynamického zobrazení můžete omezit sloupce, ke kterým má konkrétní uživatel nebo skupina přístup. V následujícím příkladu mají k e-mailovým adresům z sales_raw
tabulky přístup jenom členové auditors
skupiny. Během analýzy dotazů Apache Spark nahradí CASE
příkaz buď literálovým řetězcem REDACTED
, nebo skutečným obsahem sloupce e-mailové adresy. Ostatní sloupce se vrátí jako normální. Tato strategie nemá žádný negativní dopad na výkon dotazů.
-- 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
Oprávnění na úrovni řádků
Pomocí dynamického zobrazení můžete zadat oprávnění na úrovni řádku nebo pole. V následujícím příkladu můžou transakce zobrazit pouze členové managers
skupiny, pokud překročí 1 000 000 KČ. Odpovídající výsledky se odfiltrují pro ostatní uživatele.
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;
Maskování dat
Vzhledem k tomu, že zobrazení v katalogu Unity používají Spark SQL, můžete implementovat pokročilé maskování dat pomocí složitějších výrazů SQL a regulárních výrazů. V následujícím příkladu můžou všichni uživatelé analyzovat e-mailové domény, ale jenom členové auditors
skupiny můžou zobrazit celou e-mailovou adresu uživatele.
-- 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
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro