É possível proteger os dados em repouso e as informações sensíveis ativando a criptografia de dados transparente (TDE, na sigla em inglês) no AlloyDB Omni. Este documento descreve como criar um cluster ativado para TDE fornecendo as variáveis de ambiente necessárias do Vault e a flag --tde-kek-url na variável de ambiente POSTGRES_INITDB_ARGS durante a inicialização do banco de dados.
Antes de começar
- Leia Planejar a instalação do AlloyDB Omni.
- Ao planejar a implantação do AlloyDB Omni com a TDE ativada, considere o uso adicional da CPU com base na carga de trabalho e no volume de dados previstos. A criptografia e a descriptografia são operações com uso intenso de computação.
- Configure o mecanismo de secrets KV-V2 do HashiCorp Vault para garantir que o caminho da chave de criptografia de chave (KEK, na sigla em inglês) e o JSON Web Token (JWT) estejam disponíveis.
- Verifique se o AlloyDB Omni tem permissão para ler o arquivo JSON Web Token (JWT), que é o token de autenticação.
Crie o cluster
Para criar um cluster ativado para TDE, transmita a configuração e as credenciais de autenticação necessárias do Key Management Service (KMS) durante a inicialização do banco de dados. O único tipo de autenticação compatível é jwt.
Instale o AlloyDB Omni usando o RPM para preparar o ambiente e instalar o pacote RPM do AlloyDB Omni.
Inicialize o banco de dados.
KMS do HashiCorp Vault
Use essa abordagem para cargas de trabalho de produção.
Execute o comando a seguir para inicializar o banco de dados com a TDE ativada:
sudo PGPASSWORD=POSTGRES_PASSWORD \ PGDATA=DATA_DIR \ VAULT_AUTH_TYPE=jwt \ VAULT_AUTH_MOUNT=JWT_AUTH_ENGINE_MOUNT \ VAULT_JWT_PATH=JWT_FILE_PATH \ VAULT_ROLE=VAULT_ROLE \ VAULT_CERT_PATH=VAULT_CERT_PATH \ POSTGRES_INITDB_ARGS="--tde-kek-url=KEK_URL" \ /usr/lib/postgresql/18/bin/alloydbomniproduct_major_version_numeric-setup initdb
Substitua:
POSTGRES_PASSWORD: a senha do usuário do banco de dados.DATA_DIR: o diretório local a ser montado como o volume de dados do AlloyDB Omni. Por exemplo,/local/data.JWT_AUTH_ENGINE_MOUNT: o caminho em que o mecanismo de autenticação do HashiCorp Vault está montado. Por exemplo,/auth/jwt.JWT_FILE_PATH: o caminho em que o JWT do Vault está armazenado nos nós. Por exemplo,tde-tls/jwt-token.- (Opcional)
VAULT_ROLE: o papel do cliente definido na configuração do Vault que permite que o HashiCorp Vault verifique a autenticidade do token JWT. VAULT_CERT_PATH: o caminho em que os certificados da conexão do Vault estão localizados nos nós. Por exemplo,/tde-tls. Se não estiver definido, os certificados no repositório de confiança padrão serão usados.KEK_URL: o URL totalmente qualificado para o KEK no HashiCorp Vault. Usevaultcomo o protocolo para especificar o HashiCorp Vault como o provedor de KMS. Por exemplo,vault://127.0.0.1:8200/v1/secrets/data/alloydb_kek.
Para criar um arquivo de substituição para
alloydbomni18.serviceem/etc/systemd/system/alloydbomni18.service.d/override.conf, adicione o seguinte ao arquivooverride.conf:[Service] Environment="VAULT_AUTH_TYPE=VAULT_AUTH_TYPE" Environment="VAULT_AUTH_MOUNT=JWT_AUTH_ENGINE_MOUNT" Environment="VAULT_JWT_PATH=JWT_FILE_PATH" Environment="VAULT_ROLE=VAULT_ROLE" Environment="VAULT_CERT_PATH=VAULT_CERT_PATH"
Substitua:
VAULT_AUTH_TYPE: o tipo de autenticação a ser usado para a conexão do Vault. Somentejwté compatível.JWT_AUTH_ENGINE_MOUNT: o caminho em que o mecanismo de autenticação do HashiCorp Vault está montado. Por exemplo,/auth/jwt.JWT_FILE_PATH: o caminho em que o JWT do Vault está armazenado nos nós. Por exemplo,tde-tls/jwt-token.- (Opcional)
VAULT_ROLE: o papel do cliente definido na configuração do Vault que permite que o HashiCorp Vault verifique a autenticidade do token JWT. VAULT_CERT_PATH: o caminho em que os certificados da conexão do Vault estão localizados nos nós. Por exemplo,/tde-tls. Se não estiver definido, os certificados no repositório de confiança padrão serão usados.
Para aplicar as alterações, recarregue o daemon do systemd.
sudo systemctl daemon-reload
KMS baseado em arquivos
Use essa abordagem apenas para fins de teste.
Para testar a TDE localmente usando uma chave baseada em arquivo, primeiro gere um KEK de 32 bytes na sua máquina.
Crie o diretório, gere a chave e defina as permissões apropriadas.
KEK_DIR=KEK_DIR mkdir -p $KEK_DIR sudo chown 999:999 $KEK_DIR openssl rand -base64 32 | sudo tee $KEK_DIR/key sudo chmod 0755 $KEK_DIR/key
Inicialize o banco de dados transmitindo o URI do arquivo local como o URL do KEK.
sudo PGPASSWORD=POSTGRES_PASSWORD \ PGDATA=DATA_DIR \ POSTGRES_INITDB_ARGS="--tde-kek-url=file:///$KEK_DIR/key" \ /usr/lib/postgresql/18/bin/alloydbomniproduct_major_version_numeric-setup initdb
Substitua:
POSTGRES_PASSWORD: a senha do usuário do banco de dados.DATA_DIR: o diretório local a ser montado como o volume de dados do AlloyDB Omni. Por exemplo,/local/data.KEK_DIR: o diretório em que o KEK local baseado em arquivo está armazenado. Por exemplo,/tmp/alloydb/kms.
Depois que o banco de dados for inicializado, siga as instruções em Instalar o AlloyDB Omni usando o RPM para preparar o banco de dados, configurar o host e iniciar o serviço
systemd.Para ativar a TDE para dados de cache do mecanismo colunar distribuídos para o armazenamento SSD, conecte-se à instância do banco de dados e execute a seguinte consulta:
ALTER SYSTEM SET google_columnar_engine.enable_tde_for_storage_cache = 'on';Reinicie o servidor de banco de dados para que as alterações entrem em vigor.
Referências de métricas de TDE
É possível visualizar todas as métricas de TDE no agente de monitoramento do AlloyDB Omni. A tabela a seguir descreve cada métrica.
| Nome | Descrição | Rótulo | Unidade | Tipo |
|---|---|---|---|---|
alloydb_omni_database_tde_data_blocks_decrypted_count_total |
Número de blocos de dados descriptografados. | Não relevante | Contador | |
alloydb_omni_database_tde_data_blocks_encrypted_count_total |
Número de blocos de dados criptografados. | Não relevante | Contador | |
alloydb_omni_database_tde_data_decryption_time_us_total |
Tempo total gasto na descriptografia de blocos de dados. | Não relevante | microssegundos | Contador |
alloydb_omni_database_tde_data_encryption_time_us_total |
Tempo total gasto na criptografia de blocos de dados. | Não relevante | microssegundos | Contador |
alloydb_omni_database_tde_enabled |
Status da TDE ativada. | Não relevante | medidor | |
alloydb_omni_database_tde_kek_info |
Informações do KEK da TDE. |
|
medidor | |
alloydb_omni_database_tde_temp_blocks_decrypted_count_total |
Número de blocos temporários descriptografados. | Não relevante | Contador | |
alloydb_omni_database_tde_temp_blocks_encrypted_count_total |
Número de blocos temporários criptografados. | Não relevante | Contador | |
alloydb_omni_database_tde_temp_decryption_time_us_total |
Tempo total gasto na descriptografia de blocos temporários. | Não relevante | microssegundos | Contador |
alloydb_omni_database_tde_temp_encryption_time_us_total |
Tempo total gasto na criptografia de blocos temporários. | Não relevante | microssegundos | Contador |
alloydb_omni_database_tde_wal_blocks_decrypted_count_total |
Número de blocos WAL descriptografados. | Não relevante | Contador | |
alloydb_omni_database_tde_wal_blocks_encrypted_count_total |
Número de blocos WAL criptografados. | Não relevante | Contador | |
alloydb_omni_database_tde_wal_decryption_time_us_total |
Tempo total gasto na descriptografia de blocos WAL. | Não relevante | microssegundos | Contador |
alloydb_omni_database_tde_wal_encryption_time_us_total |
Tempo total gasto na criptografia de blocos WAL. | Não relevante | microssegundos | Contador |
tde_chill_cache_blocks_encrypted |
Número de blocos de cache inativos criptografados. | Não relevante | Contador | |
tde_chill_cache_blocks_decrypted |
Número de blocos de cache inativos descriptografados. | Não relevante | Contador | |
tde_chill_cache_blocks_total_encryption_time_us |
Tempo total gasto na criptografia de blocos de cache inativos. | Não relevante | microssegundos | Contador |
tde_chill_cache_blocks_total_decryption_time_us |
Tempo total gasto na descriptografia de blocos de cache inativos. | Não relevante | microssegundos | Contador |
tde_ce_cache_ssd_blocks_encrypted |
Número de blocos de cache colunares distribuídos para o armazenamento SSD que foram criptografados. | Não relevante | Contador | |
tde_ce_cache_ssd_blocks_decrypted |
Número de blocos de cache colunares distribuídos para o armazenamento SSD que foram descriptografados. | Não relevante | Contador | |
tde_ce_cache_ssd_blocks_total_encryption_time_us |
Tempo total gasto na criptografia de blocos de cache colunares distribuídos para o armazenamento SSD. | Não relevante | microssegundos | Contador |
tde_ce_cache_ssd_blocks_total_decryption_time_us |
Tempo total gasto na descriptografia de blocos de cache colunares distribuídos para o armazenamento SSD. | Não relevante | microssegundos | Contador |