Este artigo foi compartilhado da comunidade Huawei Cloud " Introdução aos princípios de dessensibilização de dados e métodos de uso do gerenciamento de segurança GaussDB (DWS) " por VV Yixiao.
1. Introdução
- Versões aplicáveis: 8.2.0 e superior
A função de dessensibilização de dados do produto GaussDB (DWS) é um importante avanço tecnológico para que os produtos de banco de dados internalizem e consolidem os recursos de segurança de dados. Ele fornece a função de dessensibilização de dados confidenciais em nível de coluna no escopo de usuários designados. Tem as vantagens de flexibilidade, eficiência, transparência, facilidade de uso, etc. .
A chegada da era do big data subverteu o modelo operacional das empresas tradicionais e estimulou novos potenciais de produção. Os dados tornaram-se um importante factor de produção e um portador de informação, e o fluxo de dados também esconde informações de valor de ordem superior. Para controladores e processadores de dados, como maximizar o valor do fluxo de dados é a intenção original e o significado da mineração de dados. No entanto, a exposição de uma série de incidentes de fuga de informação fez com que a segurança dos dados recebesse cada vez mais atenção. Os países e regiões estão gradualmente a estabelecer e a melhorar leis e regulamentos relacionados com a segurança dos dados e a protecção da privacidade para fornecer protecção jurídica à protecção da privacidade dos utilizadores. Como fortalecer a segurança dos dados e a proteção da privacidade no nível técnico e apresentar requisitos mais funcionais para o próprio produto de data warehouse também é a maneira mais eficaz de construir a segurança dos dados.
A versão 8.1.1 do produto GaussDB (DWS) lança o recurso de dessensibilização de dados, que fornece a função de dessensibilização para dados confidenciais em nível de coluna dentro do intervalo de usuário especificado. recursos de segurança de dados do produto.
2. O conceito de dessensibilização de dados
O mascaramento de dados, como o nome sugere, serve para proteger dados confidenciais. Quaisquer dados que possam causar sérios danos à sociedade ou aos indivíduos se vazados são dados sensíveis comuns. Informações de identificação pessoal, como nome, número de identificação, endereço, número de celular e endereço de e-mail As empresas não são adequadas para divulgar informações, como número de licença comercial, certificado de registro fiscal, salário de funcionário, informações de dispositivo, como endereço IP, MAC. endereço, número de cartão bancário, informações protegidas sobre sua saúde, direitos de propriedade intelectual, etc. são todas informações confidenciais. Estas informações sensíveis são deformadas através de regras de dessensibilização para alcançar uma proteção confiável de dados privados. As regras de dessensibilização comuns na indústria incluem substituição, reorganização, criptografia, truncamento e mascaramento. Os usuários também podem personalizar regras de dessensibilização com base no algoritmo de dessensibilização desejado.
Geralmente, uma boa implementação da dessensibilização de dados precisa seguir os dois princípios a seguir: primeiro, tentar reter informações significativas antes da dessensibilização para aplicativos, depois da dessensibilização, em segundo lugar, evitar que os hackers quebrem ao máximo;
A dessensibilização de dados é dividida em dessensibilização de dados estáticos e dessensibilização de dados dinâmica. A dessensibilização estática de dados é a “substituição de movimentação e simulação” dos dados. Após a extração e dessensibilização dos dados, eles são enviados para links downstream para livre acesso, leitura e gravação. Após a dessensibilização, os dados são isolados do ambiente de produção, o que satisfaz. atender às necessidades de negócios e, ao mesmo tempo, garantir a segurança do banco de dados de produção. A dessensibilização dinâmica de dados realiza o processamento de dessensibilização em tempo real enquanto acessa dados confidenciais. Ela pode implementar diferentes esquemas de dessensibilização para diferentes funções, diferentes permissões e diferentes tipos de dados, garantindo assim que os dados retornados estejam disponíveis e seguros.
2.1 Dessensibilização dinâmica de dados DWS
A função de dessensibilização de dados do GaussDB (DWS) abandona os pontos problemáticos de alta dependência e alto custo de dessensibilização na camada de aplicação de negócios e internaliza a dessensibilização de dados nos recursos de segurança do próprio produto de banco de dados, fornecendo uma solução completa, segura, flexível e transparente. conjunto de, uma solução amigável de dessensibilização de dados, que pertence à dessensibilização dinâmica de dados. Depois que o usuário identifica os campos confidenciais, ele pode criar uma política de mascaramento vinculando a função de mascaramento integrada com base no campo de destino. A política de redação tem um relacionamento muitos para um com o objeto da tabela. Uma estratégia de mascaramento contém três elementos principais: objeto de tabela, condição efetiva, par de funções mascaradas de coluna. É uma coleção de todas as colunas mascaradas no objeto de tabela. Diferentes campos podem usar diferentes funções de mascaramento com base em diferentes características de dados. estratégias também podem ser definidas na mesma tabela dependendo das condições efetivas e dos pares coluna de dessensibilização-função de dessensibilização. Se e somente se a condição efetiva for verdadeira, a instrução de consulta acionará a dessensibilização de dados confidenciais. O processo de dessensibilização é integrado ao mecanismo SQL e é transparente e invisível para os usuários do ambiente de produção.
Ferramenta de dessensibilização de agente terceirizado versus mecanismo de dessensibilização DWS de data warehouse
- A ferramenta proxy de terceiros é uma estação de transferência entre usuários e clusters de data warehouse. É uma ferramenta de dessensibilização de plug-in fora da base. Não pode participar diretamente do ambiente de geração e é difícil lidar com cenários complexos.
- DWS é um mecanismo de dessensibilização baseado na interação direta entre a base do data warehouse e o mecanismo de armazenamento e o mecanismo SQL. Ele realiza a dessensibilização em tempo real durante o processo de execução da consulta e os resultados da dessensibilização são retornados diretamente ao usuário.
- A ferramenta de dessensibilização do agente é a dessensibilização estática, e o mecanismo de dessensibilização DWS é a dessensibilização dinâmica.
Vantagens do mecanismo de dessensibilização dinâmica DWS
- Boa sinergia básica. O mecanismo de dessensibilização percorre muitos aspectos da base do data warehouse e participa da análise, reescrita, otimização e execução do mecanismo SQL com base em estratégias de dessensibilização predefinidas. O processo de dessensibilização é invisível para o usuário.
- As políticas são configuráveis. Os clientes podem identificar dados confidenciais com base em seus próprios cenários de negócios e predefinir de forma flexível estratégias de dessensibilização para colunas designadas de tabelas de negócios.
- As estratégias são escaláveis. O produto possui uma função de dessensibilização integrada que pode cobrir os efeitos de dessensibilização mais comuns e oferece suporte a funções de dessensibilização definidas pelo usuário.
- Disponibilidade de dados. Os dados confidenciais originais do banco de dados participam da operação e são dessensibilizados apenas no momento de sair do banco de dados (quando os resultados são retornados).
-
O acesso aos dados é controlado. Os dados confidenciais originais não serão visíveis aos usuários nas condições para que a política de dessensibilização entre em vigor.
-
Todos os dados da cena não serão vazados. A interação de base pode reduzir o risco potencial de vazamento de links de transmissão de dados confidenciais,
É mais seguro e confiável e identifica completamente vários cenários potenciais de phishing malicioso e fornece proteção eficaz.
3. Como usar a dessensibilização de dados
A dessensibilização dinâmica de dados é um processo de dessensibilização em tempo real com base no fato de as condições efetivas serem atendidas durante a execução da instrução de consulta. As condições de validação geralmente são baseadas no julgamento da função do usuário atual. A faixa visível de dados confidenciais é predefinida para diferentes usuários. O administrador do sistema tem autoridade máxima e pode ver qualquer campo de qualquer tabela a qualquer momento. Identificar funções de usuário restritas é o primeiro passo na criação de uma estratégia de dessensibilização.
As informações sensíveis dependem do cenário real do negócio e das dimensões de segurança. Tomando como exemplo as pessoas singulares, os campos sensíveis dos utilizadores individuais incluem: nome, número de identificação, número de telemóvel, endereço de e-mail, etc.; , pode envolver também número de cartão bancário, prazo de validade, senha de pagamento, etc.; no sistema da empresa, como funcionário, pode envolver também salário, escolaridade, etc.; também envolvem informações sobre tratamento médico, etc. Portanto, identificar e classificar campos sensíveis em cenários empresariais específicos é o segundo passo na criação de uma estratégia de dessensibilização.
O produto possui uma série de interfaces de função de dessensibilização comuns integradas, que podem especificar parâmetros para diferentes tipos e características de dados para obter diferentes efeitos de dessensibilização. A função de dessensibilização pode usar as três interfaces integradas a seguir e também oferece suporte a funções de dessensibilização personalizadas. As três funções de dessensibilização integradas podem cobrir os efeitos de dessensibilização na maioria dos cenários. Não é recomendado usar funções de dessensibilização personalizadas.
-
MASK_NONE: Sem dessensibilização, apenas para testes internos.
-
MASK_FULL: Dessensibilização total para um valor fixo.
-
MASK_PARTIAL: Use os caracteres de mascaramento especificados para mascarar parcialmente o conteúdo dentro do intervalo de mascaramento.
Diferentes colunas de dessensibilização podem usar diferentes funções de dessensibilização. Por exemplo, os números de telefone celular geralmente exibem os últimos quatro dígitos e substituem os números iniciais por "*", o valor é exibido uniformemente como um valor fixo de 0, etc. Determinar a função de dessensibilização que precisa ser vinculada à coluna de dessensibilização é o terceiro passo na criação de uma estratégia de dessensibilização.
Tomando como exemplo a tabela de funcionários emp de uma empresa, a usuária proprietária da tabela Alice e os usuários matu e julho, apresentaremos brevemente o processo de uso de dessensibilização de dados. Entre eles, a tabela emp contém nomes de funcionários, números de celular, e-mails, números de cartões de pagamento, salários e outros dados privados. A usuária Alice é a gerente de recursos humanos e os usuários Matu e July são funcionários comuns.
Supõe-se que a tabela, o usuário e as permissões de visualização do usuário na tabela emp estejam todas em vigor.
1. Crie uma política de dessensibilização mask_emp, que permite apenas que Alice visualize todas as informações dos funcionários. Matu e July não são visíveis para números de cartões de folha de pagamento e salários. O campo card_no é um tipo numérico e MASK_FULL é usado para dessensibilizá-lo totalmente para um valor fixo de 0; o campo card_string é um tipo de caractere e MASK_PARTIAL é usado para dessensibilizar parcialmente os dados originais de acordo com o formato de entrada e saída especificado; o campo salário é do tipo numérico e o número 9 é usado para dessensibilizá-lo parcialmente. Todos os valores dos dígitos antes do penúltimo dígito.
postgres=# CRIAR POLÍTICA DE REDIÇÃO mascara_emp ON emp WHEN (usuário_atual! = 'alice') ADICIONAR COLUNA card_no COM mask_full (card_no), ADICIONAR COLUNA card_string COM máscara_partial(card_string, 'VVVVFVVVVFVVVVFVVVV','VVVV-VVVV-VVVV-VVVV','#',1,12), ADICIONAR COLUMN salário COM máscara_partial(salário, '9', 1, comprimento(salário) - 2);
Mude para matu e julho e visualize a tabela de funcionários emp.
postgres=> SET ROLE matu PASSWORD 'Gauss@123'; postgres=> SELECIONE * FROM emp; identificação | nome | telefone_não | cartão_não | string_cartão | e-mail | salário | aniversário ----+------+-------------+---------+-------------- -------+----------------------+------------+------ --------------- 1 | anny | 13420002340 | 0 | ####-####-####-1234 | [email protected] | 99999.9990 | 02/10/1999 00:00:00 2 | bob | 18299023211 | 0 | ####-####-####-3456 | [email protected] | 9999.9990 | 12/12/1989 00:00:00 3 | cici | 15512231233 | | | [email protected] | | 06/11/1992 00:00:00 (3 linhas) postgres=> DEFINIR PAPEL julho SENHA 'Gauss@123'; postgres=> SELECIONE * FROM emp; identificação | nome | telefone_não | cartão_não | string_cartão | e-mail | salário | aniversário ----+------+-------------+---------+-------------- -------+----------------------+------------+------ --------------- 1 | anny | 13420002340 | 0 | ####-####-####-1234 | [email protected] | 99999.9990 | 02/10/1999 00:00:00 2 | bob | 18299023211 | 0 | ####-####-####-3456 | [email protected] | 9999.9990 | 12/12/1989 00:00:00 3 | cici | 15512231233 | | | [email protected] | | 06/11/1992 00:00:00 (3 linhas)
2. Por adaptação laboral, matu ingressou no departamento de recursos humanos para participar nos processos de recrutamento da empresa, ficando também visíveis todas as informações dos colaboradores, alterando as condições de vigência da política.
postgres=> ALTER REDACTION POLICY mascara_emp ON emp WHEN(user_atual NOT IN ('alice', 'matu'));
Mude para os usuários matu e julho e visualize a tabela de funcionários emp novamente.
postgres=> SET ROLE matu PASSWORD 'Gauss@123'; postgres=> SELECIONE * FROM emp; identificação | nome | telefone_não | cartão_não | string_cartão | e-mail | salário | aniversário ----+------+-------------+---------------------+----- ----------------+--------------------------+---------- --+--------------------- 1 | anny | 13420002340 | 1234123412341234 | 1234-1234-1234-1234 | [email protected] | 10.000,0000 | 02/10/1999 00:00:00 2 | bob | 18299023211 | 3456345634563456 | 3456-3456-3456-3456 | [email protected] | 9999.9900 | 12/12/1989 00:00:00 3 | cici | 15512231233 | | | [email protected] | | 06/11/1992 00:00:00 (3 linhas) postgres=> DEFINIR PAPEL julho SENHA 'Gauss@123'; postgres=> SELECIONE * FROM emp; identificação | nome | telefone_não | cartão_não | string_cartão | e-mail | salário | aniversário ----+------+-------------+---------+-------------- -------+----------------------+------------+------ --------------- 1 | anny | 13420002340 | 0 | ####-####-####-1234 | [email protected] | 99999.9990 | 02/10/1999 00:00:00 2 | bob | 18299023211 | 0 | ####-####-####-3456 | [email protected] | 9999.9990 | 12/12/1989 00:00:00 3 | cici | 15512231233 | | | [email protected] | | 06/11/1992 00:00:00 (3 linhas)
3. As informações do funcionário número_telefone, e-mail e data de nascimento também são dados privados. Atualize a política de mascaramento mask_emp e adicione três colunas de mascaramento.
postgres=> ALTER REDACTION POLICY mascara_emp ON emp ADICIONAR COLUNA phone_no COM máscara_partial(phone_no, '*', 4); postgres=> ALTER REDACTION POLICY mascara_emp ON emp ADICIONAR COLUNA email COM máscara_partial(email, '*', 1, posição('@' no email)); postgres=> ALTER REDACTION POLICY mascara_emp ON emp ADICIONAR COLUNA aniversário COM máscara_full(aniversário);
Mude para o usuário julho e visualize a tabela de funcionários emp.
postgres=> DEFINIR PAPEL julho SENHA 'Gauss@123'; postgres=> SELECIONE * FROM emp; identificação | nome | telefone_não | cartão_não | string_cartão | e-mail | salário | aniversário ----+------+-------------+---------+-------------- -------+----------------------+------------+------ --------------- 1 | anny | 134******** | 0 | ####-####-####-1234 | ********163.com | 99999.9990 | 1970-01-01 00:00:00 2 | bob | 182******** | 0 | ####-####-####-3456 | ***********qq.com | 9999.9990 | 1970-01-01 00:00:00 3| cici | 155******** | | | **************sina.com | | 01/01/1970 00:00:00 (3 linhas)
4. Considerando a facilidade de interação do usuário, o GaussDB (DWS) fornece visualizações do sistema redaction_policies e redaction_columns para facilitar aos usuários a visualização direta de mais informações de dessensibilização.
postgres=> SELECIONE * FROM redaction_policies; esquema_objeto | proprietário_objeto | nome_objeto | nome_política | expressão | habilitar | descrição_da_política ---------------+-----------------+------------+----- --------+-----------------------------------+----- ---+-------------------- público | Alice | emp | máscara_emp | ("usuário_atual"() = 'julho'::nome) | t | (1 linha) postgres=> SELECT object_name, column_name, function_info FROM redaction_columns; nome_objeto | nome_coluna | função_info -------------+-------------+---------------------- -------------------------------------------------- ------------------------------- emp | cartão_não | máscara_completa(cartão_não) emp | string_cartão | máscara_partial(card_string, 'VVVVFVVVVFVVVFVVVV'::texto, 'VVVV-VVVV-VVVV-VVVV'::texto, '#'::texto, 1, 12) emp | e-mail | máscara_partial(email, '*'::texto, 1, "posição"(email, '@'::texto)) emp | salário | máscara_partial(salário, '9'::texto, 1, (comprimento((salário)::texto) - 2)) emp | aniversário | máscara_completa(aniversário) emp | telefone_não | máscara_partial(telefone_não, '*'::texto, 4) (6 linhas)
5. De repente, um dia, quando as informações dos funcionários puderem ser compartilhadas dentro da empresa, basta excluir a política de mascaramento mask_emp da tabela emp.
postgres=> POLÍTICA DE REDIÇÃO DE DROP mask_emp ON emp;
Para obter mais detalhes de uso, consulte a documentação do produto GaussDB (DWS).
4. Dessensibilização invisível de dados
Ao usar a função de dessensibilização de dados, pode haver casos em que dados confidenciais sejam processados e calculados antes da saída. Nesse caso, se os dados dessensibilizados forem usados para cálculos no banco de dados, os próprios dados dessensibilizados terão um impacto nos resultados da consulta sob condições como funções agregadas e condições de filtro. Portanto, os dados dessensibilizados serão usados para resolver esse fenômeno. . Min introduz a capacidade de contar como invisível. O chamado invisível significa que os dados confidenciais originais são usados no banco de dados para participar do processamento de cálculos, e os dados confidenciais só são dessensibilizados quando são enviados para fora do banco de dados. Para usar a função invisível computável, você precisa definir a opção enable_redactcol_computable=on.
Atualmente, os cenários que suportam a participação direta de dados sensíveis no processamento de cálculos são os seguintes:
-
SELECT nullif(salário, 1) FROM emp expressão da coluna de projeção nullif;
-
SELECT email LIKE '%.com' FROM coluna projetada LIKE expressão;
-
SELECT to_days(birth) FROM david.emp;
-
SELECT contagem(*) FROM emp;
-
SELECT * FROM emp WHERE cardid IS NOT NULL condições de filtro;
-
SELECT nome, avg(salário) * 12 FROM emp GROUP BY nome condição de agrupamento (nome é um campo dessensibilizado)
-
SELECT (SELECT salário+10 FROM emp ORDER BY id LIMIT 1);
-
As duas tabelas usam campos confidenciais como condições de associação
-
Coluna projetada da expressão CTE
Os cenários que desencadeiam a dessensibilização de dados no momento do envio são os seguintes:
-
Consulta de tabela
-
Ver consulta
-
Cláusula DML RETURNING
-
COPYExportar
-
Exportação de tabela GDS
-
CURSOR… BUSCAR
-
A definição do procedimento armazenado usa a tabela mascarada para consultar o procedimento armazenado.
4.1 Herança da estratégia de dessensibilização
Para instruções INSERT/UPDATE/MERGE INTO/CREATE TABLE AS, quando a subconsulta for uma operação de projeção em um campo confidencial, a herança dessensibilizada será acionada, de modo que a nova tabela contendo informações confidenciais contenha as mesmas informações que a tabela de origem. A estratégia evita o problema de vazamento de dados confidenciais, inserindo dados confidenciais da tabela de origem em uma nova tabela e, em seguida, consultando a nova tabela. Além disso, a herança da política de mascaramento pertence à atividade de dimensão da tabela, e a atividade de herança não presta atenção se a política de mascaramento entra em vigor na sessão atual ou nas condições de função na parte da subconsulta.
A primeira etapa para herdar a estratégia de dessensibilização é realizar uma análise de linhagem sensível. Para qualquer usuário executar uma instrução DML, a parte da subconsulta da tabela de origem e sua coluna de projeção de destino serão percorridas assim que a estratégia de dessensibilização existir na tabela de origem e. a coluna de projeção de destino é um campo de dessensibilização. Considera-se que ao usar a tabela de origem para inserir/atualizar dados da tabela de destino, existe o risco de expor dados confidenciais da tabela de origem.
Ao herdar uma estratégia de mascaramento, primeiro gere as informações da estratégia de mascaramento e as informações do campo de mascaramento que se aplicam à tabela de destino a partir das informações confidenciais da tabela de origem marcadas na travessia. Em seguida, o sistema integrado gera uma declaração de criação de política e a grava na tabela do sistema pg_redaction_policy/pg_redaction_column. A política de dessensibilização integrada é denominada "inherited_rp". Por fim, defina o campo de marca de herança de metadados da tabela do sistema como verdadeiro.
Observe que se a sessão/usuário de execução INSERT atender às condições de acionamento, quando o resultado da inserção for impresso com a cláusula RETURNING, o resultado retornado será dessensibilizado e as informações de log "Políticas/colunas de redação pai" registrarão a origem da herança da política .
Com a introdução do comportamento de herança da política de dessensibilização, surgiram alguns cenários de conflito de políticas de dessensibilização. Por exemplo, a coluna de destino da consulta da instrução SELECT não é o campo sensível original, mas uma expressão complexa do campo sensível. A expressão é calculada primeiro e depois dessensibilizada. Os dois sub-ramos da operação do conjunto SETOP usam diferentes efeitos de dessensibilização para a mesma coluna de destino. Como definir o resultado da dessensibilização da coluna de destino da instrução externa neste momento? Na análise de linhagem sensível de múltiplas operações INSERT/UPDATE, as colunas de projeção da tabela de origem da mesma coluna de destino adotam diferentes efeitos de dessensibilização, e as condições efetivas da política da tabela de origem também podem ser diferentes. Como a política de dessensibilização deve ser herdada neste caso. ?
Para esses cenários de conflito, com base no princípio de que a proteção de qualquer dado sensível do usuário contra vazamento tem precedência sobre o efeito de dessensibilização de dados sensíveis que não possuem características originais, quando um conflito de efeito de dessensibilização é encontrado, ele é atualizado para o geral efeito de dessensibilização mask_full. mask_full é uma função de mascaramento completa que pode cobrir qualquer tipo de dados. Ela se concentra apenas no tipo de valor de retorno da expressão, o que pode garantir que os dados mascarados não serão vazados. No entanto, o resultado mascarado não será capaz de representar as características do. dados originais, tornando o resultado mascarado menos legível. Além disso, para expressões de função como comprimento e contagem, os resultados do cálculo não exporão nenhuma característica e informação original dos dados, portanto, a sintaxe ALTER FUNCTION ... [NOT] MASKED é fornecida para ajudar os usuários a configurar manualmente uma função sem dessensibilização lista branca.
4.2 Proteção contra phishing malicioso
Certas informações confidenciais são conhecidas e, por meio de múltiplas correspondências heurísticas, as informações visíveis do usuário são corroboradas inversamente, roubando assim os dados privados do usuário. Combine heuristicamente informações confidenciais usando condições de filtro ou operações de projeção que auxiliam expressões na forma de julgamentos de equivalência. Esses comportamentos de extrair dados privados do usuário por meio de valores constantes conhecidos e expressões de julgamento de equivalência/equivalência semelhante são tentativas maliciosas.
postgres=> SELECT nome FROM emp WHERE nome in('张三'); INFO: O resultado da coluna de destino {"name"} está mascarado. nome ------ abrir* (1 linha)
Conforme mostrado no exemplo acima, embora as informações do nome do usuário tenham sido dessensibilizadas, uma vez que a condição de consulta é para o usuário 'Zhang San', mesmo que esteja dessensibilizada para 'Zhang*', ainda podemos determinar facilmente a dessensibilização aqui. informações confidenciais são 'Zhang San', o que leva ao risco de vazamento das informações do usuário de Zhang San.
Em resposta a este problema, adoptámos um modelo de “pessimismo”. Qualquer julgamento de equivalência constante pode ter o risco de arbitragem maliciosa e deve ser proibido.
postgres=> SELECT nome FROM emp WHERE nome in('张三'); ERRO: A coluna de redação "nome" não pode ser referenciada em condições de equivalência com valor const. DICA: Use o comando EXPLAIN para ver mais detalhes.
Os cenários em que a arbitragem maliciosa usando constantes é proibida são resumidos a seguir:
1. Expressões de julgamento de equivalência constante, expressões compostas e expressões equivalentes para campos dessensibilizados
2. Supondo que o campo de nome seja um campo dessensibilizado e a sessão atual atenda às condições de acionamento da política, a instrução possui as seguintes características (mas não está limitada a), há risco de arbitragem maliciosa e a execução é proibida:
• nome = 'Zhang San'
• nome = 'Zhang San' OU nome = '李思'
• nome em ('Zhang San', '李思')
• Nome do CASE WHEN '张三' THEN verdadeiro…
• CASE WHEN nome em ('张三', '李思') THEN …
• Pacote avançado dbms_output.put_line
3. Um erro será relatado quando a instrução for executada: ERRO: A coluna de redação “nome” não pode ser referenciada em condições de equivalência com valor const.
5. Princípio de implementação da dessensibilização de dados
A função de dessensibilização de dados do GaussDB (DWS) é baseada na estrutura de implementação existente do mecanismo SQL e permite o processamento de dessensibilização em tempo real que é imperceptível para o mundo externo durante a execução de instruções de consulta por usuários restritos. Quanto à sua implementação interna, está mostrada na figura acima. Consideramos a política de redação como uma regra vinculada ao objeto da tabela. Durante a fase de reescrita da consulta do otimizador, cada TargetEntry da TargetList na árvore de consulta é atravessada se uma coluna de redação da tabela base estiver envolvida, e o When atual. a regra de dessensibilização entra em vigor (ou seja, as condições efetivas da política de dessensibilização são atendidas e a ativação está ativada), conclui-se que o objeto Var a ser dessensibilizado está envolvido neste TargetEntry. Neste momento, a tabela do sistema da coluna de dessensibilização. pg_redaction_column é percorrido para encontrar a ligação da coluna de dessensibilização correspondente. Uma determinada função de dessensibilização pode ser substituída pelo FuncExpr correspondente. Após a reescrita da árvore de consulta acima, o otimizador gerará automaticamente um novo plano de execução, o executor executará de acordo com o novo plano e os resultados da consulta serão dessensibilizados para dados confidenciais.
Em comparação com a instrução original, a execução da instrução com dessensibilização de dados adiciona processamento lógico de dessensibilização de dados, o que inevitavelmente trará sobrecarga adicional à consulta. Esse custo é afetado principalmente por três fatores: o tamanho dos dados da tabela, o número de colunas mascaradas envolvidas na consulta da coluna de destino e a função de mascaramento usada na coluna mascarada.
Para uma instrução de consulta simples, tome a tabela tpch customer como exemplo para testar os fatores acima, conforme mostrado na figura a seguir.
Nas Figuras (a) e (b), o cliente da tabela base usa a função de dessensibilização MASK_FULL ou a função de dessensibilização MASK_PARTIAL com base no tipo e nas características do campo. MASK_FULL apenas dessensibiliza dados originais de qualquer tamanho e tipo para um valor fixo, portanto, o resultado de saída é muito diferente dos dados originais. A Figura (a) mostra o tempo de execução de instruções de consulta simples em cenários dessensibilizados e não dessensibilizados sob diferentes escalas de dados. Os ícones sólidos representam cenários de não dessensibilização e os ícones vazios representam usuários restritos, ou seja, cenários de dessensibilização. Percebe-se que quanto maior o tamanho dos dados, maior será a diferença entre o tempo de consulta com dessensibilização e o enunciado original. A Figura (b) mostra o impacto de diferentes números de colunas mascaradas envolvidas na consulta no desempenho de execução de instruções em escala de dados de 10x. Quando uma coluna mascarada está envolvida, a consulta com mascaramento é mais lenta que a instrução original. É rastreado que esta coluna usa a função de mascaramento parcial MASK_PARTIAL. O resultado da consulta altera apenas o formato do resultado e o comprimento do conteúdo do resultado. não muda. Está de acordo com a conjectura teórica de que "a execução de instruções com dessensibilização terá degradação de desempenho correspondente". À medida que o número de colunas mascaradas envolvidas na consulta aumentava, descobrimos um fenômeno estranho. O cenário dessensibilizado, na verdade, era executado mais rapidamente do que a instrução original. Rastreando ainda mais as funções de mascaramento associadas a colunas mascaradas em cenários de múltiplas colunas, descobrimos que é precisamente por causa das colunas mascaradas usando a função de mascaramento MASK_FULL que o conjunto de resultados de saída economiza muito tempo em comparação com os dados originais, tornando assim multi Consultas de coluna mais eficientes. Consultas simples com mascaramento de dados são, na verdade, muito mais rápidas.
Para apoiar a especulação acima, ajustamos a função de mascaramento. Todas as colunas mascaradas usam MASK_PARTIAL para mascarar parcialmente os dados originais, de modo que a legibilidade externa dos dados originais possa ser mantida nos resultados do mascaramento. Portanto, conforme mostrado na Figura ©, quando todas as colunas mascaradas estão associadas a funções de mascaramento parcial, a afirmação com mascaramento de dados é cerca de 10% pior que a afirmação original. Teoricamente, essa degradação está dentro da faixa aceitável. O teste acima é apenas para instruções de consulta simples. Quando a instrução é complexa o suficiente para incluir funções agregadas ou operações de expressão complexas, essa degradação de desempenho pode ser mais óbvia.
6. Resumo
A função de dessensibilização de dados do produto GaussDB (DWS) é um importante avanço tecnológico para produtos de banco de dados para internalizar e consolidar recursos de segurança de dados. Abrange principalmente os três aspectos a seguir:
Um conjunto de sintaxe simples e fácil de usar para estratégias de dessensibilização de dados;
Uma série de funções de dessensibilização integradas configuradas de forma flexível que cobrem os efeitos comuns de dessensibilização de dados privados;
Uma solução de aplicação de estratégia de dessensibilização completa e conveniente permite a dessensibilização em tempo real, transparente e eficiente de declarações originais durante a execução.
Em suma, esta função de dessensibilização de dados pode atender plenamente aos requisitos de dessensibilização de dados dos cenários de negócios dos clientes, apoiar o efeito de dessensibilização de dados privados comuns e alcançar proteção confiável de dados confidenciais.
[Lembrete caloroso] Se você tiver alguma dúvida durante o uso, sinta-se à vontade para se comunicar e dar feedback a qualquer momento.
Clique para seguir e conhecer as novas tecnologias da Huawei Cloud o mais rápido possível~
Estudantes do ensino médio criam sua própria linguagem de programação de código aberto como uma cerimônia de maioridade - comentários contundentes de internautas: Contando com a defesa, a Apple lançou o chip M4 RustDesk Os serviços domésticos foram suspensos devido a fraude desenfreada. No futuro, ele planeja produzir um jogo independente na plataforma Windows Taobao (taobao.com) Reiniciar o trabalho de otimização da versão web, destino dos programadores, Visual Studio Code 1.89 lança Java 17, a versão Java LTS mais comumente usada, Windows 10 tem um participação de mercado de 70%, o Windows 11 continua diminuindo Open Source Daily | Google apoia Hongmeng para assumir o controle do Rabbit R1 de código aberto; a ansiedade e as ambições da Microsoft encerraram a plataforma aberta;