Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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
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 dat katalogu Unity, protože nevyhodnocuje členství ve skupinách na úrovni účtu.
Azure Databricks doporučuje, abyste uživatelům neudělovali možnost číst tabulky a zobrazení odkazovaná v zobrazení.
Následující příklady ukazují, jak vytvořit dynamická zobrazení v katalogu Unity.
Než začnete
Pokud chcete vytvořit nebo číst dynamická zobrazení, požadavky jsou stejné jako požadavky pro standardní zobrazenís výjimkou požadavků na výpočetní prostředky. Musíte použít jeden z následujících výpočetních prostředků:
- SQL Warehouse.
- Výpočty se standardním režimem přístupu (dříve sdílený režim přístupu)
- Výpočty s vyhrazeným režimem přístupu (dříve režim přístupu jednoho uživatele) v Databricks Runtime 15.4 LTS nebo novějším.
Dynamická zobrazení nemůžete číst pomocí vyhrazených výpočetních prostředků v Databricks Runtime 15.3 nebo novějším.
Pokud chcete využít filtrování dat poskytované v Databricks Runtime 15.4 LTS a novější, musíte také ověřit, že váš pracovní prostor je aktivován pro bezserverové výpočetní prostředky, protože funkce filtrování dat podporující dynamická zobrazení běží na bezserverových výpočetních prostředcích. Proto se vám můžou účtovat poplatky za výpočetní prostředky bez serveru při použití vyhrazených výpočetních prostředků ke čtení dynamických zobrazení. Podívejte se na jemně odstupňované řízení přístupu u vyhrazených výpočetních prostředků.
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 tabulky auditors přístup jenom členové skupiny sales_raw. Během analýzy dotazů Nahradí Apache Spark příkaz CASE 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