Antes de começar
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 de token JWT.
Crie o cluster
Para criar um cluster ativado para TDE, é necessário transmitir a configuração e as credenciais de autenticação do Key Management Service (KMS) necessárias 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 seu 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 o TDE ativado:
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/alloydbomni18-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.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 é 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 no contêiner. 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
alloydbomni.service in /etc/systemd/system/alloydbomni18.service.d/override.conf, adicione o seguinte ao arquivooverride.conf:[Service] Environment="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"
Para aplicar as mudanças, recarregue o daemon do systemd.
sudo systemctl daemon-reload
KMS baseado em arquivo
Use essa abordagem apenas para fins de teste.
Para testar o 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/alloydbomni18-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 é 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.
Ver métricas de TDE
Depois que o cluster for inicializado, conclua as etapas a seguir para verificar se o TDE está ativado e ver as métricas relacionadas.
- Conecte-se ao banco de dados usando
psqlou o cliente de sua preferência. Para instruções detalhadas sobre como se conectar às instâncias, consulte Executar e conectar-se ao AlloyDB Omni. Execute este comando:
select * FROM pgsnap.g$tde_stats;A saída mostra métricas de TDE, como se o TDE está ativado, o URL do KEK, a versão do KEK e o carimbo de data/hora de criação do KEK.
A tabela a seguir explica o que cada métrica significa.
Nome Descrição Rótulo Unidade Tipo alloydb_omni_database_tde_data_blocks_decrypted_count_totalNúmero de blocos de dados descriptografados. Não relevante Contador alloydb_omni_database_tde_data_blocks_encrypted_count_totalNúmero de blocos de dados criptografados. Não relevante Contador alloydb_omni_database_tde_data_decryption_time_us_totalTempo total gasto na descriptografia do bloco de dados. Não relevante microssegundos Contador alloydb_omni_database_tde_data_encryption_time_us_totalTempo total gasto na criptografia do bloco de dados. Não relevante microssegundos Contador alloydb_omni_database_tde_enabledStatus ativado do TDE. Não relevante medidor alloydb_omni_database_tde_kek_infoInformações do KEK do TDE. kek_version: versão do KEK
em uso para encapsulamento de chaves.kek_url: caminho totalmente qualificado
para o KEK no KMSkek_creation_timestamp:
hora de criação da versão do KEK em uso.
medidor alloydb_omni_database_tde_temp_blocks_decrypted_count_totalNúmero de blocos temporários descriptografados. Não relevante Contador alloydb_omni_database_tde_temp_blocks_encrypted_count_totalNúmero de blocos temporários criptografados. Não relevante Contador alloydb_omni_database_tde_temp_decryption_time_us_totalTempo total gasto na descriptografia do bloco temporário. Não relevante microssegundos Contador alloydb_omni_database_tde_temp_encryption_time_us_totalTempo total gasto na criptografia do bloco temporário. Não relevante microssegundos Contador alloydb_omni_database_tde_wal_blocks_decrypted_count_totalNúmero de blocos WAL descriptografados. Não relevante Contador alloydb_omni_database_tde_wal_blocks_encrypted_count_totalNúmero de blocos WAL criptografados. Não relevante Contador alloydb_omni_database_tde_wal_decryption_time_us_totalTempo total gasto na descriptografia do bloco WAL. Não relevante microssegundos Contador alloydb_omni_database_tde_wal_encryption_time_us_totalTempo total gasto na criptografia do bloco WAL. Não relevante microssegundos Contador