Klauzula kolumny mask
Dotyczy: Databricks SQL
Databricks Runtime 12.2 LTS i nowsze
tylko Unity Catalogu
Określa funkcję, która jest stosowana do kolumny za każdym razem, gdy wiersze są pobierane z tabeli. Wszystkie kolejne zapytania z tej kolumny otrzymują wynik oceny tej funkcji w kolumnie zamiast oryginalnej wartości kolumny. Może to być przydatne w celach szczegółowej kontroli dostępu, w których funkcja może sprawdzić tożsamość lub członkostwo w grupach użytkownika wywołującego w celu określenia, czy zredagować wartość.
Maski kolumn można dodawać, gdy:
- Utwórz tabelę przy użyciu CREATE TABLE.
- Dodaj kolumny do tabeli przy użyciu ALTER TABLE ... DODAJ COLUMN.
- Zmiana kolumny przy użyciu ALTER TABLE ... ALTER COLUMN.
Ważne
Maska jest stosowana natychmiast po pobraniu każdego wiersza ze źródła danych. Wszystkie wyrażenia, predykaty lub kolejność są stosowane po maskowaniu. Na przykład łączenie zamaskowanej kolumny z inną kolumną z innej tabeli spowoduje użycie zamaskowanych wartości do porównania łączenia.
Aby uzyskać więcej informacji na temat używania masek kolumn, zobacz Filtrowanie poufnych danych tabeli przy użyciu filtrów wierszy i masek kolumn.
Składnia
MASK func_name [ USING COLUMNS ( other_column_name | constant_literal [, ...] ) ]
Parametry
-
Skalarna funkcja zdefiniowanej przez użytkownika SQL z co najmniej jednym parametrem.
Pierwszy parametr funkcji UDF SQL mapuje się 1:1 z zamaskowaną kolumną. Typ maskowanej kolumny musi być możliwy do przekształcenia na typ parametru UDF SQL. Jeśli
func_name
wymaga więcej parametrów, argumenty muszą być podane przez klauzulęUSING COLUMNS
.Zwracany typ funkcji musi być konwertowany na typ danych maskowanej kolumny.
-
Opcjonalnie określa dodatkowe kolumny tabeli, w której znajduje się zamaskowana kolumna, przekazywane do
func_name
. Każdyother_column_name
element musi być rzutowalny do odpowiedniego parametru .func_name
Użyj maski kolumny, aby selektywnie anonimizować wartość
column_identifier
na podstawie użytkownika wykonującego zapytanie dotable_name
, wartośćcolumn_identifier
oraz opcjonalnieother_column
. constant_literal
Określa stały parametr z typem pasującym do parametru funkcji. Obsługiwane są następujące typy:
STRING
, numeryczne (INTEGER
,FLOAT,
DOUBLE
, ...DECIMAL
),BOOLEAN
,INTERVAL
,NULL
.
Przykłady
Więcej przykładów można znaleźć w Filtrowanie poufnych danych tabeli przy użyciu filtrów wierszy i masek kolumn.
-- 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