Oszlop mask
záradék
A következőkre vonatkozik: Databricks SQL Databricks Runtime 12.2 LTS és a Unity Catalog felett csak
Egy oszlopra alkalmazott függvényt ad meg, amikor sorokat szeretne lekérni a táblából. Az oszlop minden további lekérdezése megkapja a függvény kiértékelésének eredményét az oszlopon az oszlop eredeti értéke helyett. Ez hasznos lehet részletes hozzáférés-vezérlési célokra, ahol a függvény megvizsgálhatja az invokáló felhasználó identitását vagy csoporttagságát annak megállapításához, hogy az értéket újra kívánja-e használni.
Oszlopmaszkokat akkor vehet fel, ha:
- Tábla létrehozása a CREATE TABLE használatával.
- Oszlopok hozzáadása táblázathoz ALTER TABLE ... OSZLOP HOZZÁADÁSA.
- Oszlop módosítása AZ ALTER TABLE ...-val OSZLOP MÓDOSÍTÁSA.
Fontos
A maszkot a rendszer azonnal alkalmazza, amint minden sor lekéri az adatforrásból. A maszkolás után a rendszer minden kifejezést, predikátumot vagy rendezést alkalmaz. Ha például a maszkolt oszlop egy másik oszlophoz csatlakozik egy másik táblából, akkor a maszkolt értékeket fogja használni az illesztés összehasonlításához.
Az oszlopmaszkok használatáról további információt a bizalmas táblázatadatok szűrése sorszűrők és oszlopmaszkok használatával című témakörben talál.
Syntax
MASK func_name [ USING COLUMNS ( other_column_name | constant_literal [, ...] ) ]
Paraméterek
-
Skaláris SQL UDF legalább egy paraméterrel.
Az SQL UDF első paramétere 1:1-et képez le a maszkolt oszlopmal. A maszkolt oszlop típusának az SQL UDF paramétertípusára kell átírhatónak lennie. Ha
func_name
több paraméterre van szükség, az argumentumokat aUSING COLUMNS
záradéknak kell megadnia.A függvény visszatérési típusának a maszkolt oszlop adattípusára kell öntöttnek lennie.
-
Opcionálisan megadja a maszkolt oszlop táblájának további oszlopait is, amelyeket át szeretne adni.
func_name
Mindegyiknekother_column_name
a megfelelő paraméterrefunc_name
öntöttnek kell lennie.Oszlopmaszk használatával szelektíven anonimizálhatja a lekérdezést
table_name
végrehajtó felhasználó, az értékcolumn_identifier
és az opcionálisother_column
értékcolumn_identifier
alapján. constant_literal
Állandó paramétert ad meg egy függvényparaméternek megfelelő típussal. A következő típusok támogatottak:
STRING
, numerikus (INTEGER
,FLOAT,
DOUBLE
,DECIMAL
...),BOOLEAN
,INTERVAL
,NULL
.
Példák
A bizalmas táblaadatok szűrése sorszűrőkkel és oszlopmaszkokkal további példákat is találhat.
-- Create a table with a masked column
> CREATE FUNCTION mask_ssn(ssn STRING) RETURN CASE WHEN is_member('HumanResourceDept') THEN ssn ELSE '***-**-****' END;
> CREATE TABLE persons(name STRING, ssn STRING MASK mask_ssn);
> INSERT INTO persons VALUES('James', '123-45-6789';
-- As a non-member of 'HumanResourceDept'
> SELECT * FROM persons;
James ***-**-****
-- As a member of 'HumanResourceDept'
> SELECT * FROM persons;
James 123-45-6789
-- Create a masking function with multiple parameters. When applied first parameter will be the column that masking function applies to
> CREATE FUNCTION mask_pii_regional(value STRING, region STRING)
RETURN IF(is_account_group_member(region || '_HumanResourceDept'), value, 'REDACTED');
-- Create a table with a masked column. Masking function first parameter will be the column that is masked.
-- The rest of the parameters should be specified in `USING COLUMNS (<columnList>)` clause
> CREATE TABLE persons(name STRING, address STRING MASK mask_pii_regional USING COLUMNS (region), region STRING);
> INSERT INTO persons('James', '160 Spear St, San Francisco', 'US')
-- As a non-member of 'US_HumanResourceDept'
> SELECT * FROM persons;
James | REDACTED | US
-- As a member of 'US_HumanResourceDept'
> SELECT * FROM persons;
James | 160 Spear St, San Francisco | US