Todos os produtos
Search
Central de documentação

MaxCompute:Mascaramento dinâmico de dados

Última atualização: Oct 16, 2026

Para permitir que determinados usuários visualizem dados confidenciais em um projeto do MaxCompute ocultando informações essenciais, ative o mascaramento dinâmico de dados. Esse recurso oculta ou substitui dados confidenciais em tempo real no momento do acesso, evitando vazamentos. Este tópico descreve como ativar o mascaramento dinâmico de dados no MaxCompute e fornece exemplos de uso.

Introdução

O MaxCompute oferece mascaramento dinâmico de dados para proteger informações confidenciais, como dados de identificação pessoal (PII), em cenários de desenvolvimento, testes, compartilhamento de dados e operações. Diferentemente das listas de controle de acesso (ACLs) no nível de coluna, que exigem a modificação de consultas para excluir colunas sem permissão de acesso, o mascaramento dinâmico funciona automaticamente, sem alterar consultas existentes. Quando um usuário acessa os dados, o sistema aplica a política de mascaramento adequada com base no usuário ou em sua função. Isso garante que os dados sejam mascarados durante consultas, downloads, junções e computações de funções definidas pelo usuário (UDF), mitigando o risco de exposição de informações sensíveis.

As políticas de mascaramento suportam diversos métodos, incluindo mascaramento, hashing, substituição de caracteres, arredondamento numérico e truncamento de datas, protegendo dados como números de identificação, cartões bancários, endereços e telefones. O MaxCompute aplica o mascaramento na etapa inicial da recuperação dos dados do armazenamento. Essa abordagem assegura alto desempenho e segurança.

image

Notas de uso

  • Regiões suportadas

    Este recurso está em preview público e disponível apenas nas seguintes regiões: China (Hangzhou), China (Shanghai), China (Beijing), China (Zhangjiakou), China (Ulanqab), China (Shenzhen), China (Chengdu), China (Hong Kong), Japan (Tokyo), Singapore, Malaysia (Kuala Lumpur), Indonesia (Jakarta), Germany (Frankfurt), US (Silicon Valley) e US (Virginia).

  • Versões de driver suportadas

    Método de conexão

    Versão mínima

    Suporte a mascaramento

    Java SDK

    0.48.0-public ou posterior

    Suportado

    odpscmd

    0.47.1 ou posterior

    Suportado

    JDBC

    3.4.3 ou posterior

    Suportado

    MaxFrame

    Todas as versões

    Suportado

    PyODPS

    Todas as versões

    Suportado

    Go SDK

    Todas as versões

    Suportado

  • Tabelas internas e externas

    • Políticas de mascaramento são suportadas tanto em tabelas internas quanto externas do MaxCompute.

    • Atualmente, se uma tabela contiver dados do tipo JSON e uma consulta envolver colunas JSON, os recursos de mascaramento de dados e permissões no nível de linha são mutuamente exclusivos. Não é possível configurar uma política de permissão no nível de linha em uma tabela que já possui uma política de mascaramento de dados, e vice-versa.

    • Ao aplicar uma política de mascaramento a caracteres chineses, a codificação deve ser UTF-8.

  • Visualizações

    • Visualizações padrão suportam políticas de mascaramento. As políticas de uma visualização são sincronizadas com as da tabela de origem. Quando uma política de mascaramento é vinculada ou desvinculada da tabela de origem, a alteração entra em vigor imediatamente na visualização.

    • Uma visualização materializada herda as políticas de mascaramento da tabela de origem no momento da criação. Alterações posteriores nas políticas da tabela de origem não afetam a visualização materializada.

  • Políticas de mascaramento

    Se várias políticas de mascaramento se aplicarem a um usuário, aquela com a maior prioridade será utilizada. Para mais informações, consulte Policy priorities.

Funcionamento

O proprietário do projeto ou usuários com a função Super_Administrator ou Admin podem gerenciar políticas de mascaramento. Quando um usuário acessa uma tabela com dados confidenciais, o sistema verifica as políticas associadas ao usuário ou à sua função e retorna dados mascarados ou em texto simples, conforme apropriado.

image

Permissões de mascaramento

Somente o proprietário do projeto ou usuários com a função Super_Administrator ou Admin no nível do projeto podem ativar ou desativar o mascaramento dinâmico de dados para um projeto.

As permissões necessárias para gerenciar políticas de mascaramento de uma tabela são as seguintes:

  • Por padrão, o proprietário do projeto ou usuários com a função Super_Administrator ou Admin no nível do projeto possuem as permissões necessárias.

  • Também é possível conceder permissões a um RAM User ou RAM Role usando uma função administrativa personalizada de projeto. Acesse o MaxCompute console. No painel de navegação à esquerda, escolha Manage Configurations > Projects. Na página de gerenciamento do seu projeto, acesse a página Project Settings e selecione a aba Role Permissions. Clique em Create Project-level Role para criar uma função de projeto com permissões do MaxCompute. Defina o Role Type como Admin (management role) e utilize uma declaração de política semelhante ao exemplo abaixo:

     {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
        		"odps:CreateDataMaskingPolicy","odps:ListDataMaskingPolicies"],
          "Resource": [
        "acs:odps:*:projects/[project_name]/authorization/datamaskingpolicies"
          ]
        },
        {
          "Effect": "Allow",
          "Action": [
        		"odps:DropDataMaskingPolicy",
            "odps:DescribeDataMaskingPolicy"
          ],
          "Resource": [
      "acs:odps:*:projects/[project_name]/authorization/datamaskingpolicies/*"
          ]
        },
        {
          "Effect": "Allow",
          "Action": "odps:ApplyDataMaskingPolicy",
          "Resource": [
            "acs:odps:*:projects/[project_name]/authorization/tables/*",
      "acs:odps:*:projects/[project_name]/authorization/datamaskingpolicies/*"
          ]
        }
      ]
    }

Comandos

Ativar ou desativar o mascaramento de dados

A chave de mascaramento de dados odps.data.masking.policy.enable é uma propriedade no nível do projeto. Apenas o proprietário do projeto ou usuários com a função Super_Administrator ou Admin no nível do projeto podem configurar essa propriedade. Para mais informações, consulte Manage built-in roles.

Após ativar ou desativar o mascaramento, a alteração leva aproximadamente 15 minutos para entrar em vigor devido à latência de atualização do cache.

  • Ative o mascaramento dinâmico de dados para o projeto.

    setproject odps.data.masking.policy.enable=true;
  • Desative o mascaramento dinâmico de dados para o projeto.

    setproject odps.data.masking.policy.enable=false;

Criar e excluir políticas de mascaramento

Um projeto pode ter no máximo 1.000 políticas de mascaramento.

  • Sintaxe

    • Crie uma política de mascaramento.

      CREATE DATA MASKING POLICY [IF NOT EXISTS] <policy_name> 
      TO { USER <user_list> | ROLE <role_list> | default } 
      USING <Predefined Masking Policy>;
    • Exclua uma política de mascaramento.

      DROP DATA MASKING POLICY <policy_name>;
  • Parâmetros

    Parâmetro

    Obrigatório

    Descrição

    policy_name

    Sim

    Nome da política de mascaramento. O nome não diferencia maiúsculas de minúsculas e pode conter apenas letras (a–z, A–Z), dígitos (0–9) e sublinhados (_). Recomenda-se iniciar o nome com uma letra. O tamanho máximo é de 128 bytes.

    USER | ROLE | default

    Sim

    Escolha uma das opções a seguir:

    • USER: Aplica a política a usuários específicos. Em <user_list>, especifique os nomes dos usuários. Execute o comando list users; para visualizar as informações dos usuários.

    • ROLE: Aplica a política a funções específicas. Em <role_list>, especifique os nomes das funções. Execute o comando list roles; para visualizar as informações das funções.

    • default: Aplica a política por padrão. Se nenhuma outra política de mascaramento corresponder a um usuário ou função, a política padrão será aplicada.

    Predefined Masking Policy

    Sim

    Uma política de mascaramento predefinida. Para mais informações, consulte Predefined masking policies.

  • Exemplos

    • Exemplo 1: Crie uma política de hashing MD5 para userA, userB e userC.

      CREATE data masking policy IF NOT EXISTS masking_test_001
      TO USER (userA, userB, userC)
      USING MASKED_MD5(0);
    • Exemplo 2: Crie uma política de hashing MD5 para as funções de desenvolvimento e operações de um projeto.

      CREATE data masking policy IF NOT EXISTS masking_test_001
      TO ROLE (role_project_deploy, role_project_dev)
      USING MASKED_MD5(0);

Aplicar políticas a colunas

  • Sintaxe

    --Bind a policy to a column
    APPLY DATA MASKING POLICY <policy_name> BIND TO TABLE <table_name> COLUMN <column_name>;
    
    --Unbind a specific masking policy from a sensitive data column
    APPLY DATA MASKING POLICY <policy_name> UNBIND FROM TABLE <table_name> COLUMN <column_name>;
    
    --Unbind all masking policies from a sensitive data column
    APPLY DATA MASKING POLICY UNBIND ALL FROM TABLE <table_name> COLUMN <column_name>;
    
    --Unbind all masking policies from all sensitive data columns of a table
    APPLY DATA MASKING POLICY UNBIND ALL FROM TABLE <table_name>;
  • Parâmetros

    Parâmetro

    Obrigatório

    Descrição

    policy_name

    Sim

    Nome da política de mascaramento.

    table_name

    Sim

    Nome da tabela que contém dados confidenciais.

    column_name

    Sim

    Nome da coluna que contém dados confidenciais.

Visualizar políticas de mascaramento

  • Sintaxe

    --View the creation information of a masking policy
    DESC DATA MASKING POLICY <policy_name>;
    
    --View a table's extended information, including its masking policies
    DESC EXTENDED <table_name>;
    
    --List the names of all masking policies in the current project
    LIST DATA MASKING POLICY;
    
    --List the names of masking policies bound to a specific user
    LIST DATA MASKING POLICY TO USER <user_name>;
    
    --List the names of masking policies bound to a specific role
    LIST DATA MASKING POLICY TO ROLE <role_name>;
    
    --List the names of all masking policies bound to a specific table
    LIST DATA MASKING POLICY ON <table_name>;
    
    --List the names of all masking policies bound to a specific column of a table
    LIST DATA MASKING POLICY ON <table_name> TO COLUMN <column_name>;
  • Parâmetros

    Parâmetro

    Obrigatório

    Descrição

    policy_name

    Sim

    Nome da política de mascaramento.

    table_name

    Sim

    Nome da tabela que contém dados confidenciais.

    column_name

    Sim

    Nome da coluna que contém dados confidenciais.

    user_name

    Sim

    Nome do usuário.

    role_name

    Sim

    Nome da função.

Políticas de mascaramento predefinidas

As políticas de mascaramento predefinidas incluem métodos como mascaramento, hashing, substituição de caracteres e arredondamento. Escolha uma política com base no tipo de dado e nos seus requisitos de proteção.

Tipo de política

Nome da política

Sintaxe

Descrição

Geral

Sem mascaramento

UNMASKED

Retorna dados em texto simples.

Tipos de dados suportados: Todos.

Anular

MASKED_NULLIFY

Substitui os dados por NULL.

  • Tipos de dados suportados: Todos.

  • Exemplo

    -- Before masking (data type: STRING)
    +-----------------+
    | col_string      |
    +-----------------+
    | Michael Johnson |
    +-----------------+
    
    -- Masking policy
    MASKED_NULLIFY
    
    -- After masking
    +------------+
    | col_string | 
    +------------+
    | NULL       | 
    +------------+

Valor padrão

MASKED_DV

Substitui o valor pelo valor padrão do tipo de dado correspondente. Para mais informações, consulte Default values for MASKED_DV.

  • Tipos de dados suportados: Todos.

  • Exemplo

    -- Before masking (data type: TIMESTAMP)
    +---------------------+
    | col_timestamp       |
    +---------------------+
    | 2024-05-01 11:12:13 |
    +---------------------+
    -- Masking policy
    MASKED_DV
    -- After masking (The default project time zone is China Standard Time, UTC+8)
    +---------------------+
    | col_timestamp       | 
    +---------------------+
    | 1970-01-01 08:00:00 | 
    +---------------------+

Truncamento de data

MASKED_DATE_YEAR

Mantém apenas a parte do ano de um valor de tempo e redefine o mês, dia e hora para o início daquele ano (1º de janeiro, 00:00:00 UTC).

  • Tipos de dados suportados: DATE, DATETIME, TIMESTAMP_NTZ e TIMESTAMP.

  • Exemplo

    -- Before masking (data type: TIMESTAMP)
    +---------------------+
    | col_timestamp       |
    +---------------------+
    | 2024-05-01 11:12:13 |
    +---------------------+
    -- Masking policy
    MASKED_DATE_YEAR
    -- After masking (The default project time zone is China Standard Time, UTC+8)
    +---------------------+
    | col_timestamp       | 
    +---------------------+
    | 2024-01-01 08:00:00 | 
    +---------------------+

Arredondamento

MASKED_POINT_RESERVE(<num>)

Arredonda um número para um número especificado de casas decimais, de 0 a 5.

  • num: Número de casas decimais a serem mantidas. O valor deve ser um inteiro de 0 a 5.

  • Tipos de dados suportados: DECIMAL, FLOAT e DOUBLE.

  • Exemplo

    -- Before masking (data type: FLOAT)
        +-----------+
        | col_float |
        +-----------+
        | 1.12345   |
        +-----------+
        -- Masking policy: retain 2 decimal places
        MASKED_POINT_RESERVE(2)
        -- After masking
        +-----------+
        | col_float | 
        +-----------+
        | 1,12      | 
        +-----------+

Mascaramento

Mascarar início e fim

MASKED_STRING_MASKED_BA(<before>, <after>)

Mascara o início e o fim de uma string com asteriscos (*) e exibe a parte central em texto simples.

  • before: O início da string é substituído por *. O parâmetro before especifica o comprimento da máscara e deve ser um inteiro maior ou igual a 0. Se before for 0, o início da string não será mascarado.

  • after: O fim da string é substituído por *. O comprimento da máscara é especificado pelo parâmetro after, que deve ser um inteiro maior ou igual a 0.

  • Tipos de dados suportados: STRING, VARCHAR, CHAR e BINARY.

  • Exemplo

    -- Before masking (data type: STRING)
        +-----------------+
        | col_string      |
        +-----------------+
        | Michael Johnson |
        +-----------------+
        -- Masking policy: replace the first 3 and last 3 characters with asterisks.
        MASKED_STRING_MASKED_BA(3, 3)
        -- After masking
        +-----------------+
        | col_string      | 
        +-----------------+
        | ***hael John*** | 
        +-----------------+

Mascarar meio

MASKED_STRING_UNMASKED_BA(<before>, <after>)

Exibe o início e o fim de uma string em texto simples e mascara a parte central com asteriscos (*).

  • before: Número de caracteres a serem exibidos em texto simples no início da string. O valor deve ser um inteiro maior ou igual a 0.

  • after: Número de caracteres a serem exibidos em texto simples no fim da string. O valor deve ser um inteiro maior ou igual a 0.

  • Tipos de dados suportados: STRING, VARCHAR, CHAR e BINARY.

  • Exemplo

    -- Before masking (data type: STRING)
        +-----------------+
        | col_string      |
        +-----------------+
        | Michael Johnson |
        +-----------------+
        -- Masking policy: display the first and last characters in plaintext.
        MASKED_STRING_UNMASKED_BA(1, 1)
        -- After masking
        +-----------------+
        | col_string      | 
        +-----------------+
        | M*************n | 
        +-----------------+

Hashing

Hashing SHA-256

MASKED_SHA256(<salt>)

Mascara dados utilizando o algoritmo de hashing SHA-256.

  • salt: O salt. O valor deve ser um inteiro de 0 a 9.

  • Tipos de dados suportados: STRING, VARCHAR, CHAR e BINARY.

  • Exemplo

    -- Before masking (data type: STRING)
        +------------------------+
        | col_string             | 
        +------------------------+
        | 4562-1234-5678-9123    | 
        +------------------------+
        -- Masking policy
        MASKED_SHA256(0)
        -- After masking
        +------------------------------------------------+
        | col_string                                     | 
        +------------------------------------------------+
        | zwGMB1aCF1t705EfcwdDorql4MZb46XBqQJw/2RVx8U=    | 
        +------------------------------------------------+

Hashing SHA-512

MASKED_SHA512(<salt>)

Mascara dados utilizando o algoritmo de hashing SHA-512.

  • salt: O salt. O valor deve ser um inteiro de 0 a 9.

  • Tipos de dados suportados: STRING, VARCHAR, CHAR e BINARY.

  • Exemplo

    -- Before masking (data type: STRING)
        +------------------------+
        | col_string             | 
        +------------------------+
        | 4562-1234-5678-9123    | 
        +------------------------+
        -- Masking policy
        MASKED_SHA512(0)
        -- After masking
        +------------------------------------------------------------------------------------------+
        | col_string                                                                               | 
        +------------------------------------------------------------------------------------------+
        | 3PPywfEIp08WuTUI8FZCCfdVuRu68wZTVwWWVAf4pboACUnH6w9kFMLpl2AARaGW/mvWvg26p0EIqmE0fAEiuA== | 
        +------------------------------------------------------------------------------------------+

Hashing MD5

MASKED_MD5(<salt>)

Mascara dados utilizando o algoritmo de hashing MD5.

  • salt: O salt. O valor deve ser um inteiro de 0 a 9.

  • Tipos de dados suportados: STRING, VARCHAR, CHAR e BINARY.

  • Exemplo

    -- Before masking (data type: STRING)
        +------------------------+
        | col_string             | 
        +------------------------+
        | 4562-1234-5678-9123    | 
        +------------------------+
        -- Masking policy
        MASKED_MD5(0)
        -- After masking
        +--------------------------+
        | col_string               | 
        +--------------------------+
        | mK/o08tew5g7S3XV/BkFfw== | 
        +--------------------------+

Hashing SM3

MASKED_SM3(<salt>)

Mascara dados utilizando o algoritmo de hashing SM3.

  • salt: O salt. O valor deve ser um inteiro de 0 a 9.

  • Tipos de dados suportados: STRING, VARCHAR, CHAR e BINARY.

  • Exemplo

    -- Before masking (data type: STRING)
        +------------------------+
        | col_string             | 
        +------------------------+
        | 4562-1234-5678-9123    | 
        +------------------------+
        -- Masking policy
        MASKED_SM3(0)
        -- After masking
        +------------------------------------------------+
        | col_string                                     | 
        +------------------------------------------------+
        | Q2TfwUh4B8QQH8jPL6DfdoGysx/CXBxn2T14dDwQtQw=    | 
        +------------------------------------------------+

Substituição de caracteres

Substituição aleatória

MASKED_REPLACE_RANDOM(<position>)

Substitui dados por caracteres aleatórios, incluindo dígitos e letras. O comprimento da string permanece inalterado.

  • position: Um inteiro que especifica onde iniciar a substituição.

    • Se position = 0, toda a string é substituída por caracteres aleatórios.

    • Se position > 0, os primeiros position caracteres são substituídos por caracteres aleatórios.

    • Se position < 0, os últimos N caracteres são substituídos, onde N é o valor absoluto de position.

  • Tipos de dados suportados: STRING, VARCHAR, CHAR e BINARY.

  • Exemplo

    -- Before masking (data type: STRING)
        +-----------------+
        | col_string      |
        +-----------------+
        | Michael Johnson |
        +-----------------+
        -- Masking policy: replace the first 7 characters with random characters.
        MASKED_REPLACE_RANDOM(7)
        -- After masking
        +-----------------+
        | col_string      | 
        +-----------------+
        | 4DlJQxi Johnson | 
        +-----------------+

Substituição aleatória no início e fim

MASKED_REPLACE_RANDOM_BA(<before>, <after>)

Substitui o início e o fim de uma string por caracteres aleatórios, incluindo dígitos e letras. O comprimento da string permanece inalterado.

  • before: Número de caracteres a serem substituídos no início da string. O valor deve ser um inteiro maior ou igual a 0. Se o valor for 0, nenhum caractere será substituído no início.

  • after: Número de caracteres a serem substituídos no fim da string. O valor deve ser um inteiro maior ou igual a 0.

  • Tipos de dados suportados: STRING, VARCHAR, CHAR e BINARY.

  • Exemplo

    -- Before masking (data type: STRING)
        +-----------------+
        | col_string      |
        +-----------------+
        | Michael Johnson |
        +-----------------+
        -- Masking policy: replace the first 4 and last 4 characters with random characters.
        MASKED_REPLACE_RANDOM_BA(4,4)
        -- After masking
        +------------------+
        | col_string       | 
        +------------------+
        | r0xEael JohnWNr  | 
        +------------------+

Substituição fixa

MASKED_REPLACE_FIXED(<position>, <fixed_string>)

  • Substitui dados por uma string fixa.

  • position: Um inteiro que especifica onde ocorre a substituição.

    • Se position = 0, toda a string é substituída por fixed_string.

    • Se position > 0, os primeiros position caracteres são substituídos por fixed_string.

    • Se position < 0, os últimos N caracteres são substituídos por fixed_string, onde N é o valor absoluto de position.

  • fixed_string: A string de substituição. Pode ter até 100 caracteres e não pode conter espaços.

  • Tipos de dados suportados: STRING, VARCHAR, CHAR e BINARY.

  • Exemplo

    -- Before masking (data type: STRING)
        +-----------------+
        | col_string      |
        +-----------------+
        | Michael Johnson |
        +-----------------+
        -- Masking policy: replace the first 7 characters with the fixed string "Oli".
        MASKED_REPLACE_FIXED(7, "Oli")
        -- After masking
        +-------------+
        | col_string  | 
        +-------------+
        | Oli Johnson | 
        +-------------+

Exemplos

Mascarar informações pessoais confidenciais

Este exemplo mostra como configurar políticas de mascaramento para ocultar informações pessoais confidenciais.

  1. Prepare os dados.

    Crie uma tabela para armazenar informações pessoais e insira dados confidenciais.

    -- Create a table for sensitive information.
    CREATE TABLE if NOT EXISTS personal_info (
     id bigint COMMENT 'The unique ID of the user.',
     name string COMMENT 'The name of the user.',
     age int COMMENT 'The age of the user.',
     gender string COMMENT 'The gender of the user.',
     height float COMMENT 'The height of the user.',
     birthday date COMMENT 'The birth date of the user.',
     phone_number string COMMENT 'The phone number of the user.',
     email string COMMENT 'The email address of the user.',
     address string COMMENT 'The address of the user.',
     salary decimal(18, 2) COMMENT 'The salary of the user.',
     create_time timestamp COMMENT 'The time when the user information was created.',
     update_time timestamp COMMENT 'The time when the user information was updated.',
     is_deleted boolean COMMENT 'Indicates whether the user information is deleted.'
    );
    -- Insert sensitive data.
    INSERT INTO personal_info VALUES
     (1, 'Zhang San', 18, 'Male', 178.56, '1990-01-01', '13800000000', 'zhangsan@example.com', 'Haidian District, Beijing', 5000.00, '2023-04-19 11:32:00', '2023-04-19 11:32:00', false),
     (2, 'Li Si', 20, 'Female', 162.70, '1992-02-02', '13900000000', 'lisi@example.com', 'Pudong New Area, Shanghai', 6000.00, '2023-04-19 11:32:00', '2023-04-19 11:32:00',false),
     (3, 'Wang Wu', 22, 'Male', 185.21, '1994-03-03', '14000000000', 'wangwu@example.com', 'Nanshan District, Shenzhen', 7000.00, '2023-04-19 11:32:00', '2023-04-19 11:32:00', false);
  2. Configure as políticas de mascaramento.

    • Para nomes, mantenha apenas o primeiro caractere e substitua o restante por asteriscos (*).

      CREATE data masking policy IF NOT EXISTS masking_name
      TO USER (RAM$xxx@test.aliyunid.com:xxx)
      USING MASKED_STRING_UNMASKED_BA(1, 0);
      
      apply data masking policy masking_name bind TO
      TABLE personal_info COLUMN name;
    • Arredonde os valores de altura para o inteiro mais próximo.

      CREATE data masking policy IF NOT EXISTS masking_height
      TO USER (RAM$xxx@test.aliyunid.com:xxx)
      USING MASKED_POINT_RESERVE(0);
      
      apply data masking policy masking_height bind TO
      TABLE personal_info COLUMN height;
    • Para datas de nascimento, mantenha apenas o ano.

      CREATE data masking policy IF NOT EXISTS masking_birthday
      TO USER (RAM$xxx@test.aliyunid.com:xxx)
      USING MASKED_DATE_YEAR;
      
      apply data masking policy masking_birthday bind TO
      TABLE personal_info COLUMN birthday;
    • Para usuários padrão, aplique hash aos números de telefone usando o algoritmo SM3.

      CREATE DATA MASKING POLICY default_sm3
      TO DEFAULT
      USING MASKED_SM3(0);
      
      apply data masking policy default_sm3 bind TO
      TABLE personal_info COLUMN phone_number;
  3. Use uma conta sujeita às políticas de mascaramento para consultar os dados.

    SELECT id, name, height, birthday, phone_number FROM personal_info;
    
    -- Before masking
    +------------+-----------+--------+------------+--------------+
    | id         | name      | height | birthday   | phone_number |
    +------------+-----------+--------+------------+--------------+
    | 1          | Zhang San | 178.56 | 1990-01-01 | 13800000000  |
    | 2          | Li Si     | 162.7  | 1992-02-02 | 13900000000  |
    | 3          | Wang Wu   | 185.21 | 1994-03-03 | 14000000000  |
    +------------+-----------+--------+------------+--------------+
    
    -- After masking
    +------------+------------+------------+------------+------------------------------------------------+
    | id         | name       | height     | birthday   | phone_number                                   | 
    +------------+------------+------------+------------+------------------------------------------------+
    | 1          | Z********  | 179.0      | 1990-01-01 | lvYJaH4ElL2ilpQx/8tfMUw7xP22yblIgmfWp0/msUQ=    | 
    | 2          | L****      | 163.0      | 1992-01-01 | 9fFWacNSwCRZLAjMHqunlfwkqhTbP2ubuDOeOSh4N1c=    | 
    | 3          | W******    | 185.0      | 1994-01-01 | k/0JoQCSarJg9ATJ5tyVnhQf1jIBxHXRbB+cvUm4OmE=    | 
    +------------+------------+------------+------------+------------------------------------------------+

Mascaramento padrão

Este exemplo demonstra como funciona a prioridade de políticas quando um usuário ou função corresponde a múltiplas políticas de mascaramento.

Aplique a política MASKED_SHA256(5) aos usuários padrão.

CREATE DATA MASKING POLICY default_hash_policy
TO DEFAULT
USING MASKED_SHA256(5);

Aplique a política UNMASKED aos usuários específicos A e B.

CREATE DATA MASKING POLICY ab_unmask_policy
TO USER (A, B)
USING UNMASKED;

Resultado: Os usuários A e B podem acessar dados em texto simples. Outros usuários podem acessar apenas os dados com hash SHA-256.

Nota

Os usuários A e B correspondem tanto às políticas MASKED_SHA256(5) quanto UNMASKED. O sistema aplica UNMASKED porque ela tem prioridade mais alta. Para mais informações, consulte Policy priorities. Outros usuários correspondem apenas à política MASKED_SHA256(5).

Apêndice

Prioridades de políticas

Quando várias políticas de mascaramento se aplicam a um usuário, aquela com a maior prioridade é utilizada.

Por exemplo, um usuário chamado A acessa a coluna col_string e corresponde a duas políticas de mascaramento: MASKED_REPLACE_RANDOM(3) com nível de prioridade 3 e MASKED_SM3 com nível de prioridade 4. Como um número menor indica maior prioridade, a política MASKED_REPLACE_RANDOM(3) é aplicada. O usuário A vê os dados mascarados com caracteres aleatórios.

Prioridade

Política de mascaramento

0 (Mais alta)

UNMASKED

1

MASKED_POINT_RESERVE(num)

2

MASKED_DATE_YEAR

3

MASKED_STRING_MASKED_BA(before, after)

MASKED_STRING_UNMASKED_BA(before, after)

MASKED_REPLACE_RANDOM(position)

MASKED_REPLACE_RANDOM_BA(before, after)

MASKED_REPLACE_FIXED(position, fixed_string)

4

MASKED_SHA256

MASKED_SHA512

MASKED_MD5

MASKED_SM3

5

MASKED_DV

6 (Mais baixa)

MASKED_NULLIFY

Valores padrão para MASKED_DV

Tipo

Padrão

BIGINT

0

DOUBLE

0,0

DECIMAL

0

STRING

"" (string vazia)

DATETIME

DATETIME '1970-01-01 00:00:00' (UTC)

BOOLEAN

false

TINYINT

0

SMALLINT

0

INT

0

BINARY

'' (string binária vazia)

FLOAT

0,0

DOUBLE

0,0

DECIMAL

0

VARCHAR(n)

"" (string vazia)

CHAR(n)

" " (n espaços)

DATE

DATE '1970-01-01'

TIMESTAMP

TIMESTAMP '1970-01-01 00:00:00' (UTC)

TIMESTAMP_NTZ

TIMESTAMP '1970-01-01 00:00:00' (UTC)

ARRAY

Um array vazio.

MAP

Um mapa vazio.

JSON

"" (string vazia)

STRUCT

(valores padrão dos tipos de campo)