Spec-Zone.ru › MySQL 8.4

8.5.2.4 Описание функций компонента маскирования и обезличивания данных MySQL Enterprise

Компонент MySQL Enterprise Data Masking and De-Identification включает несколько функций, которые можно сгруппировать в следующие категории:

  • Функции компонента маскирования данных

  • Функции компонента генерации случайных данных

  • Функции компонента администрирования маскирования словаря

  • Функции компонента генерации словаря

Функции компонента маскировки данных

Каждая функция компонента в этом разделе выполняет операцию маскировки над своим строковым аргументом и возвращает замаскированный результат.

  • mask_canada_sin(str [, mask_char])

    Маскирует страховой номер социального обеспечения Канады (SIN) и возвращает номер со всеми значимыми цифрами, замененными символами 'X'. Можно указать необязательный символ маскировки.

    Аргументы:

    • str: Строка для маскировки. Допустимые форматы:

      • Девять цифр без разделителей.

      • Девять цифр, сгруппированных по шаблону: xxx-xxx-xxx ('-' — любой разделительный символ).

      Этот аргумент преобразуется в кодировку utf8mb4.

    • mask_char: (Необязательно) Один символ для использования в качестве маскировки. По умолчанию используется 'X', если mask_char не указан.

    Возвращаемое значение:

    Замаскированный номер SIN Канады в виде строки, закодированной в кодировке utf8mb4, ошибка, если аргумент имеет неверную длину, или NULL, если str имеет неверный формат или содержит многобайтовый символ.

    Пример:

    mysql> SELECT mask_canada_sin('046-454-286'), mask_canada_sin('abcdefijk');
    +--------------------------------+------------------------------+
    | mask_canada_sin('046-454-286') | mask_canada_sin('abcdefijk') |
    +--------------------------------+------------------------------+
    | XXX-XXX-XXX                    | XXXXXXXXX                    |
    +--------------------------------+------------------------------+
    mysql> SELECT mask_canada_sin('909');
    ERROR 1123 (HY000): Can't initialize function 'mask_canada_sin'; Argument 0 is too short.
    mysql> SELECT mask_canada_sin('046-454-286-909');
    ERROR 1123 (HY000): Can't initialize function 'mask_canada_sin'; Argument 0 is too long.
    
  • mask_iban(str [, mask_char])

    Маскирует международный банковский номер счета (IBAN) и возвращает номер, у которого все символы, кроме первых двух букв (обозначающих страну), заменены символами '*'. Можно указать необязательный символ маскировки.

    Аргументы:

    • str: Строка для маскировки. Каждая страна может иметь различную национальную систему маршрутизации или нумерации счетов, с минимальным количеством в 13 и максимальным в 34 альфанумерических символов ASCII. Допустимые форматы:

      • Символы без разделителей.

      • Символы, сгруппированные по четыре, за исключением последней группы, и разделенные пробелом или любым другим разделительным символом (например: xxxx-xxxx-xxxx-xx).

      Этот аргумент преобразуется в кодировку utf8mb4.

    • mask_char: (Необязательно) Один символ для использования в качестве маскировки. По умолчанию используется '*', если mask_char не указан.

    Возвращаемое значение:

    Замаскированный международный банковский номер счета в виде строки, закодированной в кодировке utf8mb4, ошибка, если аргумент имеет неверную длину, или NULL, если str имеет неверный формат или содержит многобайтовый символ.

    Пример:

    mysql> SELECT mask_iban('IE12 BOFI 9000 0112 3456 78'), mask_iban('abcdefghijk');
    +------------------------------------------+--------------------------+
    | mask_iban('IE12 BOFI 9000 0112 3456 78') | mask_iban('abcdefghijk') |
    +------------------------------------------+--------------------------+
    | IE** **** **** **** **** **              | ab*********              |
    +------------------------------------------+--------------------------+
    mysql> SELECT mask_iban('909');
    ERROR 1123 (HY000): Can't initialize function 'mask_iban'; Argument 0 is too short.
    mysql> SELECT mask_iban('IE12 BOFI 9000 0112 3456 78 IE12 BOFI 9000 0112 3456 78');
    ERROR 1123 (HY000): Can't initialize function 'mask_iban'; Argument 0 is too long.
    
  • mask_inner(str, margin1, margin2 [, mask_char])

    Маскирует внутреннюю часть строки, оставляя концы нетронутыми, и возвращает результат. Можно указать необязательный символ маскировки.

    mask_inner поддерживает все кодировки.

    Аргументы:

    • str: Строка для маскировки. Этот аргумент преобразуется в кодировку utf8mb4.

    • margin1: Неотрицательное целое число, указывающее количество символов в левом конце строки, которые должны остаться незамаскированными. Если значение равно 0, символы левого конца не остаются незамаскированными.

    • margin2: Неотрицательное целое число, указывающее количество символов в правом конце строки, которые должны остаться незамаскированными. Если значение равно 0, символы правого конца не остаются незамаскированными.

    • mask_char: (Необязательно) Один символ для использования в качестве маскировки. По умолчанию используется 'X', если mask_char не указан.

    Возвращаемое значение:

    Замаскированная строка, закодированная в той же кодировке, что и для str, или ошибка, если любое поле имеет отрицательное значение.

    Если сумма значений полей больше длины аргумента, маскировка не происходит, и аргумент возвращается без изменений.

    Примечание

    Функция оптимизирована для более быстрой работы с однобайтовыми строками (имеющими одинаковую длину байтов и длину символов). Например, кодировка utf8mb4 использует только один байт для символов ASCII, поэтому функция обрабатывает строки, содержащие только символы ASCII, как однобайтовые строки.

    Пример:

    mysql> SELECT mask_inner('abcdef', 1, 2), mask_inner('abcdef',0, 5);
    +----------------------------+---------------------------+
    | mask_inner('abcdef', 1, 2) | mask_inner('abcdef',0, 5) |
    +----------------------------+---------------------------+
    | aXXXef                     | Xbcdef                    |
    +----------------------------+---------------------------+
    mysql> SELECT mask_inner('abcdef', 1, 2, '*'), mask_inner('abcdef',0, 5, '#');
    +---------------------------------+--------------------------------+
    | mask_inner('abcdef', 1, 2, '*') | mask_inner('abcdef',0, 5, '#') |
    +---------------------------------+--------------------------------+
    | a***ef                          | #bcdef                         |
    +---------------------------------+--------------------------------+
    
  • mask_outer(str, margin1, margin2 [, mask_char])

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

    mask_outer поддерживает все кодировки.

    Аргументы:

    • str: Строка для маскировки. Этот аргумент преобразуется в кодировку utf8mb4.

    • margin1: Неотрицательное целое число, указывающее количество символов в левом конце строки для маскировки. Если значение равно 0, символы левого конца не маскируются.

    • margin2: Неотрицательное целое число, указывающее количество символов в правом конце строки для маскировки. Если значение равно 0, символы правого конца не маскируются.

    • mask_char: (Необязательно) Один символ для использования в качестве маскировки. По умолчанию используется 'X', если mask_char не указан.

    Возвращаемое значение:

    Замаскированная строка, закодированная в той же кодировке, что и для str, или ошибка, если любое поле имеет отрицательное значение.

    Если сумма значений полей больше длины аргумента, весь аргумент маскируется.

    Примечание

    Функция оптимизирована для более быстрой работы с однобайтовыми строками (имеющими одинаковую длину байтов и длину символов). Например, кодировка utf8mb4 использует только один байт для символов ASCII, поэтому функция обрабатывает строки, содержащие только символы ASCII, как однобайтовые строки.

    Пример:

    mysql> SELECT mask_outer('abcdef', 1, 2), mask_outer('abcdef',0, 5);
    +----------------------------+---------------------------+
    | mask_outer('abcdef', 1, 2) | mask_outer('abcdef',0, 5) |
    +----------------------------+---------------------------+
    | XbcdXX                     | aXXXXX                    |
    +----------------------------+---------------------------+
    mysql> SELECT mask_outer('abcdef', 1, 2, '*'), mask_outer('abcdef',0, 5, '#');
    +---------------------------------+--------------------------------+
    | mask_outer('abcdef', 1, 2, '*') | mask_outer('abcdef',0, 5, '#') |
    +---------------------------------+--------------------------------+
    | *bcd**                          | a#####                         |
    +---------------------------------+--------------------------------+
    
  • mask_pan(str [, mask_char])

    Маскирует основной номер счета (PAN) платежной карты и возвращает номер, у которого все цифры, кроме последних четырех, заменены символами 'X'. Можно указать необязательный символ маскировки.

    Аргументы:

    • str: Строка для маскировки. Строка должна содержать минимум 14 и максимум 19 альфанумерических символов. Этот аргумент преобразуется в кодировку utf8mb4.

    • mask_char: (Необязательно) Один символ для использования в качестве маскировки. По умолчанию используется 'X', если mask_char не указан.

    Возвращаемое значение:

    Замаскированный номер платежа в виде строки, закодированной в кодировке utf8mb4, ошибка, если аргумент имеет неверную длину, или NULL, если str имеет неверный формат или содержит многобайтовый символ.

    Пример:

    mysql> SELECT mask_pan(gen_rnd_pan());
    +-------------------------+
    | mask_pan(gen_rnd_pan()) |
    +-------------------------+
    | XXXXXXXXXXXX9102        |
    +-------------------------+
    mysql> SELECT mask_pan(gen_rnd_pan(19));
    +---------------------------+
    | mask_pan(gen_rnd_pan(19)) |
    +---------------------------+
    | XXXXXXXXXXXXXXX8268       |
    +---------------------------+
    mysql> SELECT mask_pan('a*Z');
    ERROR 1123 (HY000): Can't initialize function 'mask_pan'; Argument 0 is too short.
    
  • mask_pan_relaxed(str)

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

    Аргументы:

    • str: Строка для маскировки. Строка должна иметь подходящую длину для основного номера счета, но в остальном не проверяется. Этот аргумент преобразуется в кодировку utf8mb4.

    • mask_char: (Необязательно) Один символ для использования в качестве маскировки. По умолчанию используется 'X', если mask_char не указан.

    Возвращаемое значение:

    Замаскированный номер платежа в виде строки, закодированной в кодировке utf8mb4, ошибка, если аргумент имеет неверную длину, или NULL, если str имеет неверный формат или содержит многобайтовый символ.

    Пример:

    mysql> SELECT mask_pan_relaxed(gen_rnd_pan());
    +---------------------------------+
    | mask_pan_relaxed(gen_rnd_pan()) |
    +---------------------------------+
    | 551279XXXXXX3108                |
    +---------------------------------+
    mysql> SELECT mask_pan_relaxed(gen_rnd_pan(19));
    +-----------------------------------+
    | mask_pan_relaxed(gen_rnd_pan(19)) |
    +-----------------------------------+
    | 462634XXXXXXXXX6739               |
    +-----------------------------------+
    mysql> SELECT mask_pan_relaxed('a*Z');
    ERROR 1123 (HY000): Can't initialize function 'mask_pan_relaxed'; Argument 0 is too short.
    
  • mask_ssn(str [, mask_char])

    Маскирует номер социального страхования США (SSN) и возвращает число, в котором все, кроме последних четырёх цифр, заменены на '*' символы. Можно указать необязательный символ маскирования.

    Аргументы:

    • str: Строка для маскирования. Допустимые форматы:

      • Девять цифр без разделителей.

      • Девять цифр, сгруппированных по шаблону: xxx-xx-xxxx ('-' — любой разделитель).

      Этот аргумент преобразуется в utf8mb4 кодировку.

    • mask_char: (Необязательно) Символ для маскирования. По умолчанию используется '*', если mask_char не задан.

    Значение возврата:

    Замаскированный номер социального страхования в виде строки, закодированной в utf8mb4 кодировке, сообщение об ошибке, если длина аргумента некорректна, или NULL, если str имеет неверный формат или содержит многобайтовый символ.

    Пример:

    mysql> SELECT mask_ssn('909-63-6922'), mask_ssn('cdefghijk');
    +-------------------------+-------------------------+
    | mask_ssn('909-63-6922') | mask_ssn('cdefghijk')   |
    +-------------------------+-------------------------+
    | ***-**-6922             | *******hijk             |
    +-------------------------+-------------------------+
    mysql> SELECT mask_ssn('909');
    ERROR 1123 (HY000): Can't initialize function 'mask_ssn'; Argument 0 is too short.
    mysql> SELECT mask_ssn('123456789123456789');
    ERROR 1123 (HY000): Can't initialize function 'mask_ssn'; Argument 0 is too long.
    
  • mask_uk_nin(str [, mask_char])

    Маскирует номер национального страхования Соединённого Королевства (UK NIN) и возвращает число, в котором все, кроме первых двух цифр, заменены на '*' символы. Можно указать необязательный символ маскирования.

    Аргументы:

    • str: Строка для маскирования. Допустимые форматы:

      • Девять цифр без разделителей.

      • Девять цифр, сгруппированных по шаблону: xxx-xx-xxxx ('-' — любой разделитель).

      • Девять цифр, сгруппированных по шаблону: xx-xxxxxx-x ('-' — любой разделитель).

      Этот аргумент преобразуется в utf8mb4 кодировку.

    • mask_char: (Необязательно) Символ для маскирования. По умолчанию используется '*', если mask_char не задан.

    Значение возврата:

    Замаскированный UK NIN в виде строки, закодированной в utf8mb4 кодировке, сообщение об ошибке, если длина аргумента некорректна, или NULL, если str имеет неверный формат или содержит многобайтовый символ.

    Пример:

    mysql> SELECT mask_uk_nin('QQ 12 34 56 C'), mask_uk_nin('abcdefghi');
    +------------------------------+--------------------------+
    | mask_uk_nin('QQ 12 34 56 C') | mask_uk_nin('abcdefghi') |
    +------------------------------+--------------------------+
    | QQ ** ** ** *                | ab*******                |
    +------------------------------+--------------------------+
    mysql> SELECT mask_uk_nin('909');
    ERROR 1123 (HY000): Can't initialize function 'mask_uk_nin'; Argument 0 is too short.
    mysql> SELECT mask_uk_nin('abcdefghijk');
    ERROR 1123 (HY000): Can't initialize function 'mask_uk_nin'; Argument 0 is too long.
    
  • mask_uuid(str [, mask_char])

    Маскирует универсальный уникальный идентификатор (UUID) и возвращает число, в котором все значимые символы заменены на '*' символы. Можно указать необязательный символ маскирования.

    Аргументы:

    • str: Строка для маскирования. Допустимый формат: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, где 'X' — любая цифра, а '-' — любой разделитель. Этот аргумент преобразуется в utf8mb4 кодировку.

    • mask_char: (Необязательно) Символ для маскирования. По умолчанию используется '*', если mask_char не задан.

    Значение возврата:

    Замаскированный UUID в виде строки, закодированной в utf8mb4 кодировке, сообщение об ошибке, если длина аргумента некорректна, или NULL, если str имеет неверный формат или содержит многобайтовый символ.

    Пример:

    mysql> SELECT mask_uuid(gen_rnd_uuid());
    +--------------------------------------+
    | mask_uuid(gen_rnd_uuid())            |
    +--------------------------------------+
    | ********-****-****-****-************ |
    +--------------------------------------+
    mysql> SELECT mask_uuid('909');
    ERROR 1123 (HY000): Can't initialize function 'mask_uuid'; Argument 0 is too short.
    mysql> SELECT mask_uuid('123e4567-e89b-12d3-a456-426614174000-123e4567-e89b-12d3');
    ERROR 1123 (HY000): Can't initialize function 'mask_uuid'; Argument 0 is too long.
    
Функции компонента генерации случайных данных

Функции компонента в этом разделе генерируют случайные значения для различных типов данных. По возможности, сгенерированные значения имеют характеристики, зарезервированные для демонстрационных или тестовых значений, чтобы избежать их путаницы с легитимными данными. Например, gen_rnd_us_phone() возвращает номер телефона США, который использует код зоны 555, который не назначен для номеров телефонов в реальном использовании. В описаниях отдельных функций описываются любые исключения из этого принципа.

  • gen_range(lower, upper)

    Генерирует случайное число, выбранное из указанного диапазона.

    Аргументы:

    • lower: Целое число, которое задает нижнюю границу диапазона.

    • upper: Целое число, которое задает верхнюю границу диапазона, которая не должна быть меньше нижней границы.

    Возвращаемое значение:

    Случайное целое число (закодированное в кодировке utf8mb4) в диапазоне от lower до upper включительно, или NULL, если аргумент upper меньше lower.

    Примечание

    Для лучшего качества случайных значений используйте RAND() вместо этой функции.

    Пример:

    mysql> SELECT gen_range(100, 200), gen_range(-1000, -800);
    +---------------------+------------------------+
    | gen_range(100, 200) | gen_range(-1000, -800) |
    +---------------------+------------------------+
    |                 177 |                   -917 |
    +---------------------+------------------------+
    mysql> SELECT gen_range(1, 0);
    +-----------------+
    | gen_range(1, 0) |
    +-----------------+
    |            NULL |
    +-----------------+
    
  • gen_rnd_canada_sin()

    Генерирует случайный номер социального страхования Канады (SIN) в формате AAA-BBB-CCC. Сгенерированный номер проходит алгоритм проверки Луна, который обеспечивает согласованность этого номера.

    Предупреждение

    Значения, возвращаемые из gen_rnd_canada_sin(), должны использоваться только в тестовых целях и не подходят для публикации. Нет никакой гарантии, что данное возвращаемое значение не назначено легитимному номеру SIN Канады. Если необходимо опубликовать результат gen_rnd_canada_sin(), рассмотрите возможность маскировки его с помощью mask_canada_sin().

    Аргументы:

    Нет.

    Возвращаемое значение:

    Случайный номер SIN Канады в виде строки, закодированной в кодировке utf8mb4.

    Пример:

    mysql> SELECT gen_rnd_canada_sin();
    +----------------------+
    | gen_rnd_canada_sin() |
    +----------------------+
    | 046-454-286          |
    +----------------------+
    
  • gen_rnd_email(name_size, surname_size, domain)

    Генерирует случайный адрес электронной почты в формате random_name.random_surname@domain.

    Аргументы:

    • name_size: (Необязательно) Целое число, которое задает количество символов в имени части адреса. По умолчанию пять, если name_size не задан.

    • surname_size: (Необязательно) Целое число, которое задает количество символов в части фамилии адреса. По умолчанию семь, если surname_size не задан.

    • domain: (Необязательно) Строка, которая задает часть домена адреса. По умолчанию example.com, если domain не задан.

    Возвращаемое значение:

    Случайный адрес электронной почты в виде строки, закодированной в кодировке utf8mb4.

    Пример:

    mysql> SELECT gen_rnd_email(name_size = 4, surname_size = 5, domain = 'mynet.com');
    +----------------------------------------------------------------------+
    | gen_rnd_email(name_size = 4, surname_size = 5, domain = 'mynet.com') |
    +----------------------------------------------------------------------+
    | lsoy.qwupp@mynet.com                                                 |
    +----------------------------------------------------------------------+
    mysql> SELECT gen_rnd_email();
    +---------------------------+
    | gen_rnd_email()           |
    +---------------------------+
    | ijocv.mwvhhuf@example.com |
    +---------------------------+
    
  • gen_rnd_iban([country, size])

    Генерирует случайный международный банковский номер счета (IBAN) в формате AAAA BBBB CCCC DDDD. Сгенерированная строка начинается с двухбуквенного кода страны, двух контрольных цифр, вычисленных в соответствии со спецификацией IBAN, и случайных буквенно-цифровых символов до требуемого размера.

    Предупреждение

    Значения, возвращаемые из gen_rnd_iban(), должны использоваться только в тестовых целях и не подходят для публикации, если используются с действительным кодом страны. Нет никакой гарантии, что данное возвращаемое значение не назначено легитимному банковскому счету. Если необходимо опубликовать результат gen_rnd_iban(), рассмотрите возможность маскировки его с помощью mask_iban().

    Аргументы:

    • country: (Необязательно) Двухбуквенный код страны; значение по умолчанию — ZZ

    • size: (Необязательно) Количество значимых символов; по умолчанию 16, минимум 15, максимум 34

    Возвращаемое значение:

    Случайный IBAN в виде строки, закодированной в кодировке utf8mb4.

    Пример:

    mysql> SELECT gen_rnd_iban();
    +-----------------------------+
    | gen_rnd_iban()              |
    +-----------------------------+
    | ZZ79 3K2J WNH9 1V0DI        |
    +-----------------------------+
    
  • gen_rnd_pan([size])

    Генерирует случайный основной номер счета платежной карты. Номер проходит проверку Луна (алгоритм, который выполняет проверку контрольной суммы по контрольной цифре).

    Предупреждение

    Значения, возвращаемые из gen_rnd_pan(), должны использоваться только в тестовых целях и не подходят для публикации. Нет никакой гарантии, что данное возвращаемое значение не назначено легитимному платежному счету. Если необходимо опубликовать результат gen_rnd_pan(), рассмотрите возможность маскировки его с помощью mask_pan() или mask_pan_relaxed().

    Аргументы:

    • size: (Необязательно) Целое число, которое задает размер результата. По умолчанию 16, если size не задан. Если задано, size должно быть целым числом в диапазоне от 12 до 19.

    Возвращаемое значение:

    Случайный платежный номер в виде строки или ошибка, если задан аргумент size за пределами допустимого диапазона.

    Пример:

    mysql> SELECT mask_pan(gen_rnd_pan());
    +-------------------------+
    | mask_pan(gen_rnd_pan()) |
    +-------------------------+
    | XXXXXXXXXXXX5805        |
    +-------------------------+
    mysql> SELECT mask_pan(gen_rnd_pan(19));
    +---------------------------+
    | mask_pan(gen_rnd_pan(19)) |
    +---------------------------+
    | XXXXXXXXXXXXXXX5067       |
    +---------------------------+
    mysql> SELECT mask_pan_relaxed(gen_rnd_pan());
    +---------------------------------+
    | mask_pan_relaxed(gen_rnd_pan()) |
    +---------------------------------+
    | 398403XXXXXX9547                |
    +---------------------------------+
    mysql> SELECT mask_pan_relaxed(gen_rnd_pan(19));
    +-----------------------------------+
    | mask_pan_relaxed(gen_rnd_pan(19)) |
    +-----------------------------------+
    | 578416XXXXXXXXX6509               |
    +-----------------------------------+
    mysql> SELECT gen_rnd_pan(20);
    ERROR 1123 (HY000): Can't initialize function 'gen_rnd_pan'; Minimal value of argument 0 is 14.
    
  • gen_rnd_ssn()

    Генерирует случайный номер социального страхования США в формате AAA-BB-CCCC. Часть AAA больше 900, что является характеристиками, не используемыми для легитимных номеров социального страхования.

    Аргументы:

    Нет.

    Возвращаемое значение:

    Случайный номер социального страхования в виде строки, закодированной в кодировке utf8mb4.

    Пример:

    mysql> SELECT gen_rnd_ssn();
    +---------------+
    | gen_rnd_ssn() |
    +---------------+
    | 951-26-0058   |
    +---------------+
    
  • gen_rnd_uk_nin()

    Генерирует случайный номер национального страхования Великобритании (UK NIN) в девятисимвольном формате. NIN начинается с двухсимвольного префикса, случайно выбранного из набора допустимых префиксов, шести случайных чисел и одного символа суффикса, случайно выбранного из набора допустимых суффиксов.

    Предупреждение

    Значения, возвращаемые из gen_rnd_uk_nin(), должны использоваться только в тестовых целях и не подходят для публикации. Нет никакой гарантии, что данное возвращаемое значение не назначено легитимному NIN. Если необходимо опубликовать результат gen_rnd_uk_nin(), рассмотрите возможность маскировки его с помощью mask_uk_nin().

    Аргументы:

    Нет.

    Возвращаемое значение:

    Случайный UK NIN в виде строки, закодированной в кодировке utf8mb4.

    Пример:

    mysql> SELECT gen_rnd_uk_nin();
    +----------------------+
    | gen_rnd_uk_nin()     |
    +----------------------+
    | QQ123456C            |
    +----------------------+
    
  • gen_rnd_us_phone()

    Генерирует случайный номер телефона США в формате 1-555-AAA-BBBB. Код зоны 555 не используется для легитимных номеров телефонов.

    Аргументы:

    Нет.

    Возвращаемое значение:

    Случайный номер телефона США в виде строки, закодированной в кодировке utf8mb4.

    Пример:

    mysql> SELECT gen_rnd_us_phone();
    +--------------------+
    | gen_rnd_us_phone() |
    +--------------------+
    | 1-555-682-5423     |
    +--------------------+
    
  • gen_rnd_uuid()

    Генерирует случайный универсальный уникальный идентификатор (UUID), сегментированный с помощью тире.

    Аргументы:

    Нет.

    Возвращаемое значение:

    Случайный UUID в виде строки, закодированной в кодировке utf8mb4.

    Пример:

    mysql> SELECT gen_rnd_uuid();
    +--------------------------------------+
    | gen_rnd_uuid()                       |
    +--------------------------------------+
    | 123e4567-e89b-12d3-a456-426614174000 |
    +--------------------------------------+
    
Функции компонента управления маскировкой словарей

Функции этого раздела манипулируют словарями терминов и выполняют административные операции маскирования, основанные на них. Все эти функции требуют привилегии MASKING_DICTIONARIES_ADMIN.

При создании словаря терминов он становится частью реестра словарей и получает имя, используемое другими функциями словарей.

  • masking_dictionaries_flush()

    Очистить данные из таблицы словарей маскирования в кэш памяти. Требуется привилегия MASKING_DICTIONARIES_ADMIN.

  • masking_dictionary_remove(dictionary_name)

    Удаляет словарь и все его термины из реестра словарей. Эта функция требует привилегии MASKING_DICTIONARIES_ADMIN.

    Аргументы:

    • dictionary_name: Строка, содержащая имя словаря для удаления из таблицы словарей. Этот аргумент преобразуется в кодировку utf8mb4.

    Возвращаемое значение:

    Строка, указывающая, выполнено ли удаление успешно. 1 указывает на успех. NULL указывает, что имя словаря не найдено.

    Пример:

    mysql> SELECT masking_dictionary_remove('mydict');
    +-------------------------------------+
    | masking_dictionary_remove('mydict') |
    +-------------------------------------+
    |                                   1 |
    +-------------------------------------+
    mysql> SELECT masking_dictionary_remove('no-such-dict');
    +-------------------------------------------+
    | masking_dictionary_remove('no-such-dict') |
    +-------------------------------------------+
    |                                      NULL |
    +-------------------------------------------+
    
  • masking_dictionary_term_add(dictionary_name, term_name)

    Добавляет один термин в указанный словарь. Эта функция требует привилегии MASKING_DICTIONARIES_ADMIN.

    Важно

    Словари и их термины сохраняются в таблице в схеме mysql. Все термины в словаре доступны любому пользователю, если этот пользователь выполняет gen_dictionary() многократно. Избегайте добавления конфиденциальной информации в словари.

    Каждый термин определяется по имени словаря. masking_dictionary_term_add() позволяет добавить по одному термину в словарь за раз.

    Аргументы:

    • dictionary_name: Строка, предоставляющая имя словаря. Этот аргумент преобразуется в кодировку utf8mb4.

    • term_name: Строка, определяющая имя термина в таблице словарей. Этот аргумент преобразуется в кодировку utf8mb4.

    Возвращаемое значение:

    Строка, указывающая, выполнено ли добавление термина успешно. 1 указывает на успех. NULL указывает на ошибку. Ошибка добавления термина может произойти по нескольким причинам, включая:

    • Термин с заданным именем уже добавлен.

    • Имя словаря не найдено.

    Пример:

    mysql> SELECT masking_dictionary_term_add('mydict','newterm');
    +-------------------------------------------------+
    | masking_dictionary_term_add('mydict','newterm') |
    +-------------------------------------------------+
    |                                               1 |
    +-------------------------------------------------+
    mysql> SELECT masking_dictionary_term_add('mydict','');
    +------------------------------------------+
    | masking_dictionary_term_add('mydict','') |
    +------------------------------------------+
    |                                     NULL |
    +------------------------------------------+
    
  • masking_dictionary_term_remove(dictionary_name, term_name)

    Удаляет один термин из указанного словаря. Эта функция требует привилегии MASKING_DICTIONARIES_ADMIN.

    Аргументы:

    • dictionary_name: Строка, предоставляющая имя словаря. Этот аргумент преобразуется в кодировку utf8mb4.

    • term_name: Строка, определяющая имя термина в таблице словарей. Этот аргумент преобразуется в кодировку utf8mb4.

    Возвращаемое значение:

    Строка, указывающая, выполнено ли удаление термина успешно. 1 указывает на успех. NULL указывает на ошибку. Ошибка удаления термина может произойти по нескольким причинам, включая:

    • Термин с заданным именем не найден.

    • Имя словаря не найдено.

    Пример:

    mysql> SELECT masking_dictionary_term_add('mydict','newterm');
    +-------------------------------------------------+
    | masking_dictionary_term_add('mydict','newterm') |
    +-------------------------------------------------+
    |                                               1 |
    +-------------------------------------------------+
    mysql> SELECT masking_dictionary_term_remove('mydict','');
    +---------------------------------------------+
    | masking_dictionary_term_remove('mydict','') |
    +---------------------------------------------+
    |                                        NULL |
    +---------------------------------------------+
    
Функции компонента генерации словарей

Функции этого раздела манипулируют словарями терминов и выполняют операции генерации, основанные на них.

При создании словаря терминов он становится частью реестра словарей и получает имя, используемое другими функциями словарей.

  • gen_blocklist(str, from_dictionary_name, to_dictionary_name)

    Заменяет термин, присутствующий в одном словаре, термином из второго словаря и возвращает заменяющий термин. Это маскирует исходный термин заменой.

    Аргументы:

    • term: Строка, обозначающая термин для замены. Этот аргумент преобразуется в кодировку utf8mb4.

    • from_dictionary_name: Строка, обозначающая словарь, содержащий термин для замены. Этот аргумент преобразуется в кодировку utf8mb4.

    • to_dictionary_name: Строка, обозначающая словарь, из которого выбрать заменяющий термин. Этот аргумент преобразуется в кодировку utf8mb4.

    Возвращаемое значение:

    Строка, закодированная в кодировке utf8mb4, случайным образом выбранная из to_dictionary_name как замена для term, или term, если он не появляется в from_dictionary_name, или ошибка, если имя любого словаря отсутствует в реестре словарей.

    Примечание

    Если термин для замены присутствует в обоих словарях, возможно, что возвращаемое значение будет тем же термином.

    Пример:

    mysql> SELECT gen_blocklist('Berlin', 'DE_Cities', 'US_Cities');
    +---------------------------------------------------+
    | gen_blocklist('Berlin', 'DE_Cities', 'US_Cities') |
    +---------------------------------------------------+
    | Phoenix                                           |
    +---------------------------------------------------+
    
  • gen_dictionary(dictionary_name)

    Возвращает случайный термин из словаря.

    Аргументы:

    • dictionary_name: Строка, обозначающая словарь, из которого выбрать термин. Этот аргумент преобразуется в кодировку utf8mb4.

    Возвращаемое значение:

    Случайный термин из словаря как строка, закодированная в кодировке utf8mb4, или NULL, если имя словаря отсутствует в реестре словарей.

    Пример:

    mysql> SELECT gen_dictionary('mydict');
    +--------------------------+
    | gen_dictionary('mydict') |
    +--------------------------+
    | My term                  |
    +--------------------------+
    mysql> SELECT gen_dictionary('no-such-dict');
    ERROR 1123 (HY000): Can't initialize function 'gen_dictionary'; Cannot access
    dictionary, check if dictionary name is valid.
    

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/data-masking-component-functions.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API