Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
A Unity Catalogban dinamikus nézetekkel konfigurálhatja a részletes hozzáférés-vezérlést, beleértve a következőket:
- Biztonság oszlopok vagy sorok szintjén.
- Adatmaszkolás.
A Unity Catalog a következő függvényeket mutatja be, amelyekkel dinamikusan korlátozhatja, hogy mely felhasználók férhetnek hozzá egy sorhoz, oszlophoz vagy rekordhoz egy nézetben:
-
current_user(): Az aktuális felhasználó e-mail-címét adja vissza. -
is_account_group_member(): Akkor adjaTRUEvissza, ha az aktuális felhasználó egy adott fiókszintű csoport tagja. Dinamikus nézetekben való használatra ajánlott a Unity Catalog adataival szemben. -
is_member(): Akkor adjaTRUEvissza, ha az aktuális felhasználó egy adott munkaterületszintű csoport tagja. Ez a függvény a meglévő Hive metaadattárral való kompatibilitás érdekében érhető el. Kerülje a használatát a Unity Catalog adatokkal kapcsolatos nézeteknél, mivel nem értékeli a fiókszintű csoporttagságot.
Az Azure Databricks azt javasolja, hogy ne engedélyezze a felhasználóknak a nézetben hivatkozott táblák és nézetek olvasását.
Az alábbi példák bemutatják, hogyan hozhat létre dinamikus nézeteket a Unity Catalogban.
Mielőtt elkezdené
Dinamikus nézetek létrehozásához vagy olvasásához a követelmények megegyeznek a standard nézetek
- EGY SQL-raktár.
- Számítás standard hozzáférési móddal (korábban megosztott hozzáférési mód).
- A Databricks Runtime 15.4 LTS vagy újabb verzióján dedikált hozzáférési móddal (korábban egyfelhasználós hozzáférési móddal) végzett számítás.
A Databricks Runtime 15.3-on vagy alatta nem olvashat dinamikus nézeteket dedikált számítással.
A Databricks Runtime 15.4 LTS és újabb verzióiban biztosított adatszűrés előnyeinek kihasználásához azt is ellenőriznie kell, hogy a munkaterület engedélyezve van-e a kiszolgáló nélküli számítási, mert a dinamikus nézeteket támogató adatszűrési funkciók kiszolgáló nélküli számításon futnak. Előfordulhat, hogy fizetnie kell a szerver nélküli számítási erőforrások használatáért, amikor dedikált számítással olvassa a dinamikus nézeteket. Lásd a részletes hozzáférés-vezérlést dedikált számítások esetén.
Oszlopszintű engedélyek
Dinamikus nézetben korlátozhatja azokat az oszlopokat, amelyekhez egy adott felhasználó vagy csoport hozzáférhet. Az alábbi példában csak a auditors csoport tagjai férhetnek hozzá az e-mail-címekhez a sales_raw táblából. A lekérdezéselemzés során az Apache Spark a CASE utasítást a literális sztringre REDACTED vagy az e-mail-cím oszlop tényleges tartalmára cseréli. A többi oszlop a szokásos módon lesz visszaadva. Ez a stratégia nem befolyásolja negatívan a lekérdezés teljesítményét.
-- 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
Sorszintű engedélyek
Dinamikus nézettel a sor- vagy mezőszintig megadhatja az engedélyeket. Az alábbi példában csak a csoport tagjai tekinthetik meg az managers 1 000 000 USD-t meghaladó tranzakcióösszegeket. Az egyező eredmények szűrése más felhasználók számára történik.
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;
Adatmaszkolás
Mivel a Unity Catalog nézetei Spark SQL-t használnak, összetettebb SQL-kifejezések és reguláris kifejezések használatával speciális adatmaszkolást valósíthat meg. Az alábbi példában minden felhasználó elemezheti az e-mail-tartományokat, de csak a csoport tagjai tekinthetik meg a auditors felhasználó teljes e-mail-címét.
-- 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