Todos os produtos
Search
Central de documentação

Hologres:Criptografar dados em repouso

Última atualização: Aug 31, 2026

Criptografe dados em repouso no Hologres usando chaves gerenciadas pelo KMS para proteger os dados armazenados e atender a requisitos de conformidade. Este tópico descreve o funcionamento da criptografia em repouso, seus limites, como ativá-la no nível do banco de dados e da tabela, e como substituir uma chave do KMS migrando os dados para um novo banco de dados.

Por que criptografar dados em repouso com o KMS

O Key Management Service (KMS) é um service da Alibaba Cloud que cria, armazena e gerencia chaves de criptografia para proteger dados confidenciais em repouso e em trânsito.

O Hologres utiliza chaves do KMS para criptografar os dados armazenados em um banco de dados. A criptografia em repouso protege os dados na camada de armazenamento contra ataques externos e ajuda a atender aos requisitos regulatórios e de conformidade corporativa.

Como funciona

O Hologres criptografa e descriptografa dados com chaves gerenciadas pelo KMS. O mecanismo de criptografia funciona da seguinte forma:

  • O Hologres criptografa e descriptografa os dados armazenados por banco de dados por meio do KMS. Os dados são criptografados em texto cifrado na camada de armazenamento, e apenas a chave correspondente pode descriptografá-los.

  • O KMS gera e gerencia suas chaves, mantendo-as seguras.

  • O Hologres oferece suporte aos algoritmos de criptografia AES256, AESCTR e RC4.

  • O Hologres criptografa e descriptografa dados apenas com uma chave própria (BYOK). Dois tipos de material de chave têm suporte: o material gerado pelo KMS quando você cria uma chave mestra do cliente (CMK) e o material importado por você.

    Crie uma chave BYOK no KMS e selecione-a no Hologres para criptografar um banco de dados. Para obter mais informações sobre como criar uma chave BYOK no KMS, consulte Create a key.

  • Durante as operações de leitura e gravação de dados, o Hologres chama operações da API do KMS para obter informações da chave e armazena essas informações em cache por 24 horas, por padrão.

Observações de uso

  • Escopo da criptografia — A criptografia em repouso aplica-se apenas às tabelas criadas após a ativação do recurso. Tabelas criadas antes da ativação não são criptografadas.

  • Tipos de tabela com suporte — Apenas tabelas orientadas a colunas e a parte orientada a colunas de tabelas híbridas linha-coluna são criptografadas. Outros tipos de tabela não recebem criptografia. Após ativar a criptografia em repouso, você ainda pode criar tabelas externas do Hologres no MaxCompute para ler e gravar dados.

  • Chaves no nível da tabela — O Hologres V2.0 e versões posteriores permitem uma configuração de criptografia separada para cada tabela, possibilitando o uso de diferentes chaves do KMS para tabelas distintas. Para mais detalhes, consulte Configurações de criptografia no nível da tabela.

  • Desempenho — Os processos de criptografia e descriptografia adicionam sobrecarga de processamento. A criptografia em repouso reduz o desempenho de consultas e gravações em cerca de 20% a 40%, dependendo das características da consulta.

  • Operações de chave — Operações em chaves do KMS, como desativar ou excluir uma BYOK, afetam a criptografia e descriptografia no Hologres. Como o Hologres armazena informações da chave em cache, essas alterações entram em vigor dentro de 24 horas.

  • Disponibilidade da chave — Se a chave do KMS usada por uma tabela criptografada for desativada ou tornar-se inválida, a tabela ficará ilegível e não poderá receber gravações.

  • Substituição de chave — O Hologres não permite alterar a chave do KMS de um banco de dados já criptografado. Para criptografar dados com uma chave diferente, crie um novo banco de dados e migre os dados para ele. Para mais informações, consulte Rotacionar a chave do KMS e migrar dados.

  • Desativação da criptografia — Desativar a criptografia em repouso para um banco de dados não descriptografa os dados que já foram criptografados. Para mais detalhes, consulte Desativar a criptografia em repouso para um banco de dados.

Faturamento

A criptografia em repouso gera taxas do KMS, pois o Hologres chama operações da API do KMS para obter informações da chave. Para detalhes de preços, consulte KMS billing.

Pré-requisitos

  • Sua instância do Hologres deve estar executando a versão V1.1 ou posterior. Apenas o Hologres V1.1 e versões posteriores oferecem suporte à criptografia em repouso. Caso sua instância execute uma versão anterior, faça o upgrade. Para erros de preparação de upgrade, consulte Troubleshooting upgrade preparation errors ou entre no grupo DingTalk do Hologres para obter suporte. Para mais informações, consulte How do I get more online support?.

  • Instâncias anteriores à V1.3.31 exigem configurações de backend para a criptografia em repouso. Instâncias V1.3.31 e posteriores não precisam dessa configuração. (Recomendado) Upgrade your instance.

  • O KMS deve estar ativado na sua região.

  • Crie uma função do RAM. Você especificará o nome dessa função na configuração de criptografia.

Ativar a criptografia em repouso para um banco de dados

  1. Crie uma política personalizada que conceda ao Hologres as permissões necessárias no KMS.

    1. Faça login no console do RAM. No painel de navegação à esquerda, escolha Permissions > Policies. Na página Policies, clique em Create Policy.

      权限策略

    2. Na página Create Policy, clique em JSON. No editor de código, insira a seguinte política e defina o campo Name como AliyunHologresEncryptionDefaultRolePolicy.

      创建权限策略

      Esta política concede ao Hologres as permissões do KMS necessárias para obter e descriptografar chaves de dados ao consultar dados criptografados do MaxCompute.

      {
          "Version": "1",
          "Statement": [
              {
                  "Action": [
                      "kms:Encrypt",
                      "kms:Decrypt",
                      "kms:GenerateDataKey",
                      "kms:DescribeKey"
                  ],
                  "Resource": "acs:kms:*:*:*/*",
                  "Effect": "Allow"
              }
          ]
      }
    3. Clique em OK. A política personalizada será criada.

  2. Crie uma função do RAM para o Hologres e anexe a política.

    O Hologres precisa de uma função do RAM para chamar as APIs do KMS em seu nome. Crie a função e anexe a política criada na etapa 1.

    1. Faça login no console do RAM. No painel de navegação à esquerda, escolha Identities > Roles.

    2. Na página Roles, clique em Create Role. Defina Principal Type como Cloud Service e Principal Name como Hologres.

    3. Clique em OK. Na caixa de diálogo, insira AliyunHologresEncryptionDefaultRole no campo Role Name e clique em OK.

      创建角色

    4. Na página de detalhes da função, clique em Grant Permission.

    5. No painel Grant Permission, defina Resource Scope como Account. Em Policy, selecione AliyunHologresEncryptionDefaultRolePolicy.

      添加权限

    6. Clique em OK. Na página de detalhes da função, clique na aba Trust Policy para verificar a política de confiança.

  3. Crie uma chave.

    Para mais detalhes, consulte Create a key.

    O Hologres oferece suporte apenas a chaves simétricas do tipo Aliyun_AES_256.

  4. Configure a definição de criptografia.

    1. Conecte-se à instância do banco de dados para a qual deseja ativar a criptografia em repouso. Para instruções, consulte Connect to a database instance.

    2. Na página Ad-hoc Query, defina Instance Name e Database, insira a seguinte instrução no editor de consultas SQL e clique em Run.

ALTER DATABASE <db_name> SET hg_experimental_encryption_options='<encryption_type>,<cmk_id>,<ram_role>,<uid>';

A tabela a seguir descreve os parâmetros.

Parâmetro

Descrição

db_name

Nome do banco de dados que você deseja criptografar.

encryption_type

Algoritmo de criptografia. Valores válidos: AES256, AESCTR e RC4.

cmk_id

ID da chave. Faça login no console do Key Management Service e obtenha o ID na página de detalhes da chave.

ram_role

Nome da função do RAM que você criou.

uid

ID da sua conta Alibaba Cloud. Para saber como obtê-lo, consulte View the account ID.

O exemplo a seguir configura uma definição de criptografia e, em seguida, consulta os dados.

  1. Ative a criptografia em repouso para o banco de dados.

    ALTER DATABASE hoxxxx set hg_experimental_encryption_options=
    'AES256,623c26ee-xxxx-xxxx-xxxx-91d323cc4855,AliyunHologresEncryptionDefaultRole,187xxxxxxxxxxxxx';
  2. Crie uma tabela e insira dados.

    DROP TABLE IF EXISTS a;
    
    CREATE TABLE a(id int);
    
    INSERT INTO a values(1);
    
    SELECT hg_admin_command('flush'); -- For testing only. This lets you see the result immediately.
  3. Consulte os dados.

    SELECT * FROM a;

Se você desativar a chave no KMS, um erro será reportado ao consultar a tabela a após a reinicialização da instância ou após 24 horas.

No Hologres V2.0 e versões posteriores, também é possível visualizar a configuração de criptografia aplicada a cada tabela. Para instruções, consulte Visualizar configurações de criptografia.

Desativar a criptografia em repouso para um banco de dados

Ao executar a instrução abaixo para desativar a criptografia em repouso de um banco de dados, os dados nas tabelas criadas antes da desativação permanecem criptografados. Apenas as tabelas criadas após a desativação ficarão sem criptografia.

ALTER DATABASE <database_name> set hg_experimental_encryption_options='';

Configurações de criptografia no nível da tabela

A partir do Hologres V2.0, após ativar a criptografia em repouso para um banco de dados, é possível configurar uma política de criptografia diferente para tabelas individuais. As tabelas podem permanecer sem criptografia ou usar uma chave do KMS diferente daquela padrão do banco de dados.

Configure uma definição de criptografia no nível da tabela quando tabelas no mesmo banco de dados precisarem usar chaves do KMS diferentes, ou quando tabelas específicas devam permanecer sem criptografia.

Definir uma configuração de criptografia no nível da tabela

Observe os pontos a seguir antes de definir uma configuração de criptografia no nível da tabela:

  • Caso nenhuma configuração de criptografia separada seja definida para uma tabela, ela usará a configuração especificada por hg_experimental_encryption_options.

  • Defina a configuração durante a criação da tabela. Não é possível configurá-la após a criação.

Execute a seguinte instrução para definir a configuração de criptografia de uma tabela:

CALL SET_TABLE_PROPERTY('<table_name>', 'encryption_options', '<encryption_type>,<cmk_id>,<ram_role>,<uid>');

A tabela a seguir descreve os parâmetros. Exceto por table_name, estes parâmetros são idênticos aos da configuração de criptografia no nível do banco de dados.

Parâmetro

Descrição

table_name

Nome da tabela que você deseja criptografar.

encryption_type

Algoritmo de criptografia. Valores válidos: AES256, AESCTR e RC4.

cmk_id

ID da chave. Faça login no console do Key Management Service e obtenha o ID na página de detalhes da chave.

ram_role

Nome da função do RAM que você criou.

uid

ID da sua conta Alibaba Cloud. Para saber como obtê-lo, consulte View the account ID.

O exemplo a seguir cria uma tabela chamada lineitem e a criptografa com o algoritmo AES256 e a chave 623c26ee-xxxx-xxxx-xxxx-91d323cc4855.

BEGIN;
CREATE TABLE LINEITEM
(
    L_ORDERKEY      BIGINT      NOT NULL,
    L_PARTKEY       INT         NOT NULL,
    L_SUPPKEY       INT         NOT NULL,
    L_LINENUMBER    INT         NOT NULL,
    L_QUANTITY      DECIMAL(15,2) NOT NULL,
    L_EXTENDEDPRICE DECIMAL(15,2) NOT NULL,
    L_DISCOUNT      DECIMAL(15,2) NOT NULL,
    L_TAX           DECIMAL(15,2) NOT NULL,
    L_RETURNFLAG    TEXT        NOT NULL,
    L_LINESTATUS    TEXT        NOT NULL,
    L_SHIPDATE      TIMESTAMPTZ NOT NULL,
    L_COMMITDATE    TIMESTAMPTZ NOT NULL,
    L_RECEIPTDATE   TIMESTAMPTZ NOT NULL,
    L_SHIPINSTRUCT  TEXT        NOT NULL,
    L_SHIPMODE      TEXT        NOT NULL,
    L_COMMENT       TEXT        NOT NULL,
    PRIMARY KEY (L_ORDERKEY,L_LINENUMBER)
);
CALL SET_TABLE_PROPERTY('LINEITEM', 'encryption_options', 'AES256,623c26ee-xxxx-xxxx-xxxx-91d323cc4855,AliyunHologresEncryptionDefaultRole,153xxxxxxxxxxxxx');
COMMIT;

Visualizar configurações de criptografia

No Hologres V2.0 e versões posteriores, execute a seguinte instrução SQL para visualizar a configuração de criptografia de cada tabela:

SELECT
    *
FROM
    hologres.hg_table_properties
WHERE
    property_key = 'encryption_options';

Exemplo de resultado:

O resultado contém quatro colunas: table_namespace, table_name, property_key e property_value. A coluna property_value registra o algoritmo de criptografia (por exemplo, AES256), o ID da CMK, a função do RAM (por exemplo, AliyunHologresEncryptionDefaultRole) e o UID.

Rotacionar a chave do KMS e migrar dados

O Hologres não permite alterar a chave do KMS de um banco de dados já criptografado. Dados criptografados com uma chave só podem ser descriptografados por essa mesma chave, e um banco de dados pode ter apenas uma configuração de criptografia efetiva no nível do banco de dados. Se você executar ALTER DATABASE em um banco de dados criptografado para apontar para uma nova chave, a instrução pode retornar sucesso sem erros, mas a chave não será alterada e os dados existentes continuarão sendo descriptografados com a chave original.

Para substituir a chave do KMS, por exemplo, quando a chave atual estiver prestes a ser desativada, crie um banco de dados com a nova configuração de criptografia e migre os dados para ele. Este procedimento aplica-se à configuração de criptografia no nível do banco de dados.

Aviso

Não desative nem exclua a chave original até que a migração seja concluída. Se a chave do KMS usada por uma tabela criptografada for desativada ou tornar-se inválida, a tabela ficará ilegível e não poderá receber gravações.

Importante

Configure a definição de criptografia para o novo banco de dados antes de migrar os dados. A criptografia em repouso aplica-se apenas às tabelas criadas após a ativação da criptografia. Se você migrar os dados primeiro e configurar a criptografia depois, as tabelas criadas durante a migração não serão criptografadas.

Migre os dados na seguinte ordem:

  1. Crie um novo banco de dados.

  2. Configure a nova definição de criptografia do KMS para o novo banco de dados. Use a mesma sintaxe descrita em Ativar a criptografia em repouso para um banco de dados.

    ALTER DATABASE <db_name> SET hg_experimental_encryption_options='<encryption_type>,<cmk_id>,<ram_role>,<uid>';
  3. Utilize uma tarefa de sincronização de dados, como uma tarefa do Flink ou DataWorks, para migrar os dados do banco de dados antigo para o novo.