Klauzula Kolumna mask
Dotyczy: Databricks SQL Databricks Runtime 12.2 LTS i nowszy tylko wykaz aparatu Unity
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 polecenia CREATE TABLE.
- Dodaj kolumny do tabeli za pomocą polecenia ALTER TABLE ... DODAJ KOLUMNĘ.
- Trwa zmienianie kolumny za pomocą polecenia ALTER TABLE ... ZMIEŃ KOLUMNĘ.
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 dołączenie między zamaskowaną kolumną względem innej kolumny z innej tabeli spowoduje użycie zamaskowanych wartości dla porównania sprzężenia.
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 zdefiniowanej przez użytkownika SQL mapuje wartość 1:1 z zamaskowaną kolumną. Typ maskowanej kolumny musi być rzutowany do typu 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ć rzutowany na typ danych maskowanej kolumny.
-
Opcjonalnie określa dodatkowe kolumny tabeli zamaskowanej kolumny, które mają być przekazywane do
func_name
elementu . 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 względemtable_name
wartości , wartościcolumn_identifier
i opcjonalnegoother_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 temacie 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