Предложение column mask

Применимо к:флажок Databricks SQL флажок Databricks Runtime 12.2 LTS и более поздних флажок версий каталога Unity

Указывает функцию, которая применяется к столбцу всякий раз, когда строки извлекаются из таблицы. Все последующие запросы из этого столбца получают результат оценки этой функции по столбцу вместо исходного значения столбца. Это может быть полезно для точного контроля доступа, где функция может проверить удостоверение или членство в группах вызывающего пользователя, чтобы определить, следует ли изменить значение.

При добавлении маски столбцов можно добавлять:

Внимание

Маска применяется, как только каждая строка извлекается из источника данных. Все выражения, предикаты или упорядочение применяются после маскирования. Например, присоединение между маскированных столбцов к другому столбцу из другой таблицы будет использовать маскированные значения для сравнения соединения.

Дополнительные сведения о том, как использовать маски столбцов, см. в разделе "Фильтрация конфиденциальных данных таблицы" с помощью фильтров строк и масок столбцов.

Синтаксис

MASK func_name [ USING COLUMNS ( other_column_name | constant_literal [, ...] ) ]

Параметры

  • func_name

    Скалярный UDF SQL с по крайней мере одним параметром.

    Первый параметр UDF SQL сопоставляет 1:1 с маскированных столбцов. Тип маскированного столбца должен быть приведение к типу параметра UDF SQL. Если func_name требуется больше параметров, аргументы должны быть предоставлены предложением USING COLUMNS .

    Возвращаемый тип функции должен быть приведение к типу данных маскированного столбца.

  • other_column_name

    При необходимости указывает дополнительные столбцы таблицы маскированного столбца для передачи func_nameв . Каждое из них other_column_name должно быть приведение к соответствующему параметру func_name.

    Используйте маску столбца, чтобы выборочно анонимизировать значение column_identifier на основе пользователя, выполняющего запрос, table_nameзначение column_identifier и необязательное other_columnзначение.

  • constant_literal

    Указывает постоянный параметр с типом, соответствующим параметру функции. Поддерживаются следующие типы: STRINGчисловой (INTEGER, FLOAT, DECIMAL DOUBLE...), BOOLEAN, . NULLINTERVAL

Примеры

Дополнительные примеры см. в разделе "Фильтрация конфиденциальных данных таблицы" с помощью фильтров строк и маски столбцов.

-- 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