Criptografe dados em repouso no Hologres com chaves gerenciadas pelo KMS para proteger informações armazenadas e atender a requisitos de conformidade.
Visão geral
O Key Management Service (KMS) é um serviço da Alibaba Cloud que cria, armazena e gerencia chaves de criptografia para proteger dados confidenciais em repouso e em trânsito.
O Hologres usa o KMS para criptografar dados na camada de armazenamento. Somente a chave correspondente pode descriptografá-los. Isso fortalece a segurança contra ataques externos e ajuda a cumprir requisitos de conformidade corporativa. Ativar a criptografia em repouso pode reduzir o desempenho de consultas e gravações em 20% a 40%, dependendo das características da consulta.
Observações de uso
Somente o Hologres V1.1 e versões posteriores oferecem suporte à criptografia em repouso. Se sua instância executar uma versão anterior, atualize sua instância ou obtenha suporte online.
Instâncias anteriores à V1.3.31 exigem configurações de backend para criptografia em repouso. Recomendamos atualizar sua instância.
Operações em chaves do KMS, como desativar ou excluir uma chave BYOK (Bring Your Own Key), afetam a criptografia e a descriptografia no Hologres. Devido ao cache, as alterações entram em vigor em até 24 horas.
A criptografia em repouso aplica-se apenas a tabelas criadas após a ativação do recurso. Tabelas existentes não são criptografadas.
Mesmo após ativar a criptografia, você ainda pode mapear tabelas para o MaxCompute para leitura e gravação de dados.
-
Desativar a criptografia não descriptografa dados existentes. Apenas tabelas criadas após a desativação permanecem sem criptografia.
ALTER DATABASE <database_name> set hg_experimental_encryption_options=''; Se a chave do KMS de uma tabela criptografada for desativada ou tornar-se inválida, a tabela ficará ilegível e não aceitará gravações.
O Hologres V2.0 e versões posteriores oferecem suporte a configurações de criptografia por tabela.
A criptografia em repouso aplica-se a tabelas colunares e às partes colunares de tabelas com armazenamento híbrido linha-coluna. Você ainda pode criar tabelas externas no MaxCompute, mas apenas os tipos de tabela compatíveis são criptografados.
Como funciona
O mecanismo de criptografia funciona da seguinte forma:
O Hologres criptografa e descriptografa dados por banco de dados usando chaves gerenciadas pelo KMS. O KMS deve estar ativado na sua região.
O KMS gera, gerencia e protege suas chaves de criptografia.
O Hologres oferece suporte aos algoritmos de criptografia AES256, AESCTR, RC4 e SM4.
-
O Hologres usa o modelo BYOK. Você pode usar material de Customer Master Key (CMK) gerado pelo KMS ou importar seu próprio material de chave.
Crie uma chave BYOK no KMS e selecione-a no Hologres para criptografar um banco de dados. Criar uma chave.
O Hologres chama APIs do KMS durante operações de dados e armazena informações de chave em cache por 24 horas. Esse recurso gera taxas do KMS. Consulte Faturamento do KMS 1.0.
Procedimento
-
Crie uma chave.
Para mais detalhes, consulte Guia de início rápido de gerenciamento de chaves.
ImportanteO Hologres oferece suporte apenas a chaves simétricas do tipo
Aliyun_AES_256. -
Ative a criptografia para um banco de dados.
Conecte-se ao banco de dados do Hologres no qual deseja ativar a criptografia em repouso. Para mais informações, consulte Fazer logon em um banco de dados.
-
Escolha SQL Editor no menu superior. Na página Ad-hoc Query, defina Instance Name e Database, insira a instrução a seguir e clique em Run.
ALTER DATABASE <db_name> SET hg_experimental_encryption_options='<encryption_type>,<cmk_id>,<ram_role>,<uid>';Parâmetros:
Parâmetro
Descrição
db_name
Nome do banco de dados.
encryption_type
Algoritmo de criptografia. Valores válidos:
AES256,AESCTReRC4.cmk_id
ID da chave obtido no console do KMS.
ram_role
Nome da função RAM criada.
uid
ID da sua conta Alibaba Cloud. Visualizar o ID da conta.
Exemplo:
-
Ative a criptografia em repouso para o banco de dados
hoxxxx.ALTER DATABASE hoxxxx set hg_experimental_encryption_options= 'AES256,623c26ee-xxxx-xxxx-xxxx-91d323cc4855,AliyunHologresEncryptionDefaultRole,187xxxxxxxxxxxxx'; -
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 query result immediately. -
Consulte os dados.
SELECT * FROM a;O resultado a seguir é retornado.

Se você desativar a chave e reiniciar a instância ou consultar a tabela
aapós 24 horas, ocorrerá um erro.
Configurações de criptografia no nível da tabela
A partir do Hologres V2.0, você pode definir políticas de criptografia distintas para tabelas individuais em um banco de dados criptografado. As tabelas podem permanecer sem criptografia ou usar uma chave do KMS diferente do padrão do banco de dados.
Definir criptografia no nível da tabela
-
Observações:
Por padrão, a configuração de criptografia de uma tabela herda a do banco de dados, especificada por
hg_experimental_encryption_options.Para configurar uma definição de criptografia independente para uma tabela, especifique-a durante a criação da tabela. Não é possível modificar essa configuração posteriormente.
-
Sintaxe:
CALL SET_TABLE_PROPERTY('<table_name>', 'encryption_options', '<encryption_type>,<cmk_id>,<ram_role>,<uid>'); -
Parâmetros:
Parâmetro
Descrição
table_name
Nome da tabela.
encryption_type
Algoritmo de criptografia. Valores válidos:
AES256,AESCTReRC4.cmk_id
ID da chave obtido no console do Key Management Service.
ram_role
Nome da função RAM.
uid
ID da sua conta Alibaba Cloud. Visualizar o ID da conta.
-
Exemplo:
Crie uma tabela chamada
lineiteme criptografe-a usando o algoritmo AES256 e a CMK com o ID623c26ee-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 as regras de criptografia no nível da tabela.
SELECT
*
FROM
hologres.hg_table_properties
WHERE
property_key = 'encryption_options';
Resultado de exemplo: