Gerenciamento de mudanças de comportamento

Este documento explica como verificar se um determinado pacote de mudança de comportamento está habilitado em sua conta e como habilitá-lo ou desabilitá-lo.

Visão geral

Snowflake implementa mudanças de comportamento mensalmente em pacotes incluídos versões regulares. Durante o período de teste e o período de recusa para cada pacote de mudança de comportamento, você pode ativar ou desativar o pacote em sua conta. Este documento explica como verificar se um determinado pacote está habilitado em sua conta e como habilitá-lo ou desabilitá-lo.

Neste documento, o nome do pacote de mudança de comportamento está no formato YYYY_NN. Para obter os nomes dos pacotes de mudança de comportamento disponíveis atualmente, consulte Log de mudança de comportamento.

Nota

Mudanças de comportamento em pacotes não podem ser habilitadas/desabilitadas individualmente. Para ativar/desativar uma mudança de comportamento, você deve ativar/desativar o pacote que contém a mudança.

Verificação do status de um pacote de mudança de comportamento em sua conta

Para verificar se um pacote de mudança de comportamento específico está ativado em sua conta, chame a função SYSTEM$BEHAVIOR_CHANGE_BUNDLE_STATUS. Por exemplo, para verificar o status do pacote denominado 2024_02:

SELECT SYSTEM$BEHAVIOR_CHANGE_BUNDLE_STATUS('2024_02');
Copy
+-------------------------------------------------+
| SYSTEM$BEHAVIOR_CHANGE_BUNDLE_STATUS('2024_02') |
|-------------------------------------------------|
| DISABLED                                        |
+-------------------------------------------------+

Para verificar o status de todos os pacotes de mudança de comportamento disponíveis atualmente, chame a função SYSTEM$SHOW_ACTIVE_BEHAVIOR_CHANGE_BUNDLES:

SELECT SYSTEM$SHOW_ACTIVE_BEHAVIOR_CHANGE_BUNDLES();
Copy
+--------------------------------------------------------------------------------------------------------------+
| SYSTEM$SHOW_ACTIVE_BEHAVIOR_CHANGE_BUNDLES()                                                                 |
|--------------------------------------------------------------------------------------------------------------|
| [{"name":"2023_08","isDefault":true,"isEnabled":true},{"name":"2024_01","isDefault":false,"isEnabled":true}] |
+--------------------------------------------------------------------------------------------------------------+

Habilitação de um pacote de mudança de comportamento em sua conta

Para ativar uma mudança de comportamento específica na sua conta, chame a função SYSTEM$ENABLE_BEHAVIOR_CHANGE_BUNDLE. Por exemplo, para ativar o pacote denominado 2024_02:

SELECT SYSTEM$ENABLE_BEHAVIOR_CHANGE_BUNDLE('2024_02');
Copy
+-------------------------------------------------+
| SYSTEM$ENABLE_BEHAVIOR_CHANGE_BUNDLE('2024_02') |
|-------------------------------------------------|
| ENABLED                                         |
+-------------------------------------------------+

Desabilitação de um pacote de mudança de comportamento em sua conta

Para desativar uma mudança de comportamento específica em sua conta, chame SYSTEM$DISABLE_BEHAVIOR_CHANGE_BUNDLE. Por exemplo, para desativar o pacote denominado 2024_02:

SELECT SYSTEM$DISABLE_BEHAVIOR_CHANGE_BUNDLE('2024_02');
Copy
+-------------------------------------------------+
| SYSTEM$DISABLE_BEHAVIOR_CHANGE_BUNDLE('2024_02')|
|-------------------------------------------------|
| DISABLED                                        |
+-------------------------------------------------+

Determinação da versão atual da sua conta

Para verificar a versão atual do Snowflake que está em sua conta, chame a função CURRENT_VERSION. Por exemplo:

SELECT CURRENT_VERSION();
Copy
+-------------------+
| CURRENT_VERSION() |
|-------------------|
| 8.5.1             |
+-------------------+

Mitigação de atualizações de valores de retorno da política de mascaramento

No pacote 2024_04, há alterações nos valores de precisão e escala nas condições da política de mascaramento (coletivamente: “atualizações de valor de retorno”). Uma consulta em uma coluna protegida por uma política de mascaramento falha quando o seguinte é verdadeiro:

  • O pacote está ativado.

  • As condições da política de mascaramento retornam um valor cuja precisão é maior que a precisão da coluna à qual a política de mascaramento é atribuída.

Se a escala do valor de retorno for maior que a escala da coluna, o valor será truncado para corresponder à escala da coluna.

Se quiser aplicar o novo comportamento a uma política preexistente, crie uma nova política de mascaramento e substitua a política preexistente usando a palavra-chave FORCE.

Quando o pacote estiver habilitado, você poderá testar o comportamento da seguinte maneira:

  1. Criar uma política:

    CREATE MASKING POLICY MP AS (s string)
    RETURNS STRING -> 'abcdef';
    
    Copy
  2. Atribuir a política:

    CREATE TABLE t(col1 string(2));
    
    ALTER TABLE t MODIFY COLUMN col1 SET MASKING POLICY mp;
    
    Copy
  3. Consultar a coluna (falha):

    SELECT * FROM t;
    
    Copy

Para determinar o impacto dessa alteração e dar tempo suficiente para atualizar as condições da política de mascaramento para proteger os dados, consulte a exibição SNOWFLAKE.BCR_ROLLOUT.BCR_2024_03_DDM_ROLLOUT para entender como as futuras atualizações do valor de retorno afetarão sua conta.

A exibição BCR_2024_03_DDM_ROLLOUT é temporária. A Snowflake removerá a exibição quando as atualizações de valores de retorno estiverem geralmente ativadas em um pacote futuro de mudança de comportamento. Nesse momento, você não conseguirá consultar a exibição para determinar as colunas e políticas afetadas, ou evitar a consulta de colunas ou falhas nas operações de atribuição da política de mascaramento devido a atualizações dos valores de retorno.

A exibição registra dados a partir de março de 2024. Se uma consulta na exibição demorar muito para ser concluída, você poderá especificar as variáveis de sessão de data de início e data de término usando um comando SET. Essas variáveis ajudam a reduzir o número de linhas a serem avaliadas ao consultar a exibição. Por exemplo:

SET DDM_CASTING_BCR_START_DATE = '2024-03-01';
SET DDM_CASTING_BCR_END_DATE = '2024-04-03';
Copy

Identificação da política de mascaramento e associações de colunas

Para consultar a exibição e mitigar as próximas alterações dos valores de retorno, faça o seguinte:

  1. Consulte a exibição SNOWFLAKE.BCR_ROLLOUT.BCR_2024_03_DDM_ROLLOUT. Por exemplo:

    USE ROLE ACCOUNTADMIN;
    SET DDM_CASTING_BCR_START_DATE = '2024-03-01';
    SET DDM_CASTING_BCR_END_DATE = '2024-04-03';
    SELECT * FROM SNOWFLAKE.BCR_ROLLOUT.BCR_2024_03_DDM_ROLLOUT;
    
    Copy
  2. Avalie a coluna REASON na seção Referência da exibição BCR_2024_03_DDM_ROLLOUT para determinar que atualização precisa ser feita nas condições da política de mascaramento.

  3. Atualize as condições da política de mascaramento com uma instrução ALTER MASKING POLICY para garantir que os dados da coluna permaneçam protegidos e que as operações de atribuição de políticas ou consultas de colunas protegidas não falhem.

  4. Teste as novas condições da política consultando as colunas da tabela às quais são atribuídas as políticas de mascaramento.

Referência da exibição BCR_2024_03_DDM_ROLLOUT

A exibição BCR_2024_03_DDM_ROLLOUT (no esquema SNOWFLAKE.BCR_ROLLOUT) registra informações a partir de 15 de julho de 2022 e contém as seguintes colunas:

Coluna

Tipo de dados

Descrição

policy_name

VARCHAR

O nome da política.

policy_id

NUMBER

Identificador interno/gerado pelo sistema para a política.

policy_schema

VARCHAR

O esquema principal da política.

policy_database

VARCHAR

O banco de dados principal da política.

policy_body

VARIANT

As condições da política para mascarar ou desmascarar os dados da coluna.

column_name

VARCHAR

O nome da coluna que tem a política.

COLUMN_TYPE

VARCHAR

O tipo de dados da coluna.

COLUMN_LENGTH

NUMBER

O comprimento da coluna que contém a política ou [NULL] se não estiver definido para a coluna.

COLUMN_PRECISION

NUMBER

A precisão da coluna que contém a política ou [NULL] se não estiver definido para a coluna.

COLUMN_SCALE

NUMBER

A escala da coluna que contém a política ou [NULL] se não estiver definido para a coluna.

TABLE_NAME

VARCHAR

O nome da tabela.

table_id

NUMBER

Identificador interno/gerado pelo sistema para a tabela.

table_schema

VARCHAR

O esquema principal da tabela.

table_database

VARCHAR

O banco de dados principal da tabela.

table_kind

VARCHAR

O tipo de tabela. Uma das seguintes opções: TABLE, LOCAL TEMPORARY, VIEW, MATERIALIZED VIEW, EXTERNAL TABLE ou DYNAMIC TABLE.

reason

VARCHAR

Possível motivo da incompatibilidade. Uma das seguintes opções: precision ou scale.

LARGEST_MASKED_SIZE

NUMBER

O comprimento, escala ou precisão máximos que um valor mascarado pode ter com base na política de mascaramento atribuída à coluna.