1. Introdução
Este codelab demonstra como configurar e ativar a criptografia transparente de dados (TDE, na sigla em inglês) no AlloyDB Omni usando pacotes RPM. A TDE criptografa arquivos de dados, registros prévios de escrita (WAL) e arquivos de dados temporários em repouso, oferecendo proteção de dados contra acesso não autorizado a mídias de armazenamento físico subjacentes.
Neste codelab, você vai aprender a provisionar volumes de armazenamento, inicializar e executar um cluster do AlloyDB Omni ativado para TDE usando o File KMS e verificar a criptografia de dados em repouso em arquivos de disco.
Pré-requisitos
- Acesso a um projeto do Google Cloud e ao Cloud Shell no console do Google Cloud.
- SDK Google Cloud (
gcloud) instalado e configurado. Para mais detalhes sobre a instalação do gcloud, consulte gcloud-install (link em inglês).
O que você vai aprender
- Como criar uma VM do Compute Engine com banco de dados dedicado, backup e discos de troca.
- Como formatar volumes de armazenamento (XFS), configurar
/etc/fstabe preparar caminhos de dados. - Como gerar e gerenciar chaves de criptografia de chaves (KEK) usando o File KMS.
- Como instalar pacotes RPM do AlloyDB Omni e utilitários de cliente do PostgreSQL.
- Como inicializar um cluster do AlloyDB Omni ativado para TDE usando ferramentas de configuração do RPM (
alloydbomni18-setup) e--tde-kek-url. - Como verificar a criptografia no disco usando a inspeção de arquivos brutos (
grep).
O que é necessário
- Receba um link de URL para RPMs do AlloyDB Omni preenchendo o formulário de inscrição do RPM do AlloyDB Omni ou consultando a visão geral do AlloyDB Omni no Linux. A URL do repositório será enviada para seu endereço de e-mail registrado.
- Um terminal funcional com acesso ao Google Cloud (recomendamos o Cloud Shell).
2. Configuração e requisitos
Configuração do projeto
Criar um projeto do Google Cloud
- No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto na nuvem do Google Cloud.
- Verifique se o faturamento está ativado para seu projeto na nuvem. Saiba como verificar se o faturamento está ativado em um projeto.
Iniciar Cloud Shell
Embora seja possível operar o Google Cloud remotamente no seu laptop, neste codelab você vai usar o Google Cloud Shell, um ambiente de linha de comando executado na nuvem.

- Abra o console do Google Cloud e clique no ícone do Cloud Shell na barra de ferramentas superior à direita. Você também pode abrir o Cloud Shell pressionando
GeSno console ou acessando shell.cloud.google.com. - Normalmente, leva alguns instantes para provisionar e se conectar ao ambiente. Quando concluído, você verá um prompt de terminal pronto para entrada.

3. Criar a VM do Compute Engine
Nesta seção, você vai criar uma máquina virtual (VM) do Compute Engine (GCE) executando o Rocky Linux 9 com discos permanentes dedicados para dados do banco de dados (/data1), backups/observabilidade (/obs) e espaço de troca.
- Defina variáveis de ambiente para o ID do projeto, o nome da VM, a zona e a região.
export PROJECT="your-project-id" export INSTANCE_NAME="alloydb-omni-tde-vm" export ZONE="us-central1-c" export REGION="us-central1" - Configure o projeto padrão.
gcloud config set project $PROJECT - Crie regras de firewall de rede para tráfego SSH.
gcloud compute firewall-rules create allow-ssh-alloydb-omni-tde \ --project=$PROJECT \ --direction=INGRESS \ --action=allow \ --rules=tcp:22 \ --source-ranges="0.0.0.0/0" - Como a VM é criada sem um endereço IP público, configure um Cloud Router e um gateway do Cloud NAT para fornecer acesso à Internet de saída para fazer o download de pacotes RPM. Se um Cloud NAT já existir na região do projeto, você poderá continuar.
Observação: se um gateway do Cloud NAT já existir na sua região, o GCP vai retornar uma mensagem indicando que o NAT já está configurado para todas as sub-redes. Você pode ignorar esse erro e continuar.gcloud compute routers create alloydb-omni-tde-router \ --project=$PROJECT \ --network=default \ --region=$REGION 2>/dev/null || true gcloud compute routers nats create alloydb-omni-tde-nat \ --project=$PROJECT \ --router=alloydb-omni-tde-router \ --region=$REGION \ --nat-all-subnet-ip-ranges \ --auto-allocate-nat-external-ips 2>/dev/null || true - Crie outros discos permanentes para dados do banco de dados, backups e espaço de troca.
gcloud compute disks create $INSTANCE_NAME-data \ --project=$PROJECT --zone=$ZONE --size=50GB --type=pd-balanced gcloud compute disks create $INSTANCE_NAME-obs \ --project=$PROJECT --zone=$ZONE --size=50GB --type=pd-balanced gcloud compute disks create $INSTANCE_NAME-swap \ --project=$PROJECT --zone=$ZONE --size=10GB --type=pd-balanced - Provisione a instância de VM do Rocky Linux 9 com os volumes de armazenamento anexados.
gcloud compute instances create $INSTANCE_NAME \ --project=$PROJECT \ --zone=$ZONE \ --machine-type=n2-highmem-16 \ --image-family=rocky-linux-9 \ --image-project=rocky-linux-cloud \ --boot-disk-size=30GB \ --boot-disk-type=pd-balanced \ --disk=name=$INSTANCE_NAME-data,device-name=db-data,mode=rw \ --disk=name=$INSTANCE_NAME-obs,device-name=obs,mode=rw \ --disk=name=$INSTANCE_NAME-swap,device-name=swap,mode=rw \ --no-address
4. Preparar discos, ajuste do sistema e chave do File KMS
Nesta seção, você vai se conectar à VM, formatar e montar os volumes de armazenamento permanente, configurar a troca, ajustar o SELinux e gerar a chave de criptografia de chaves (KEK) da TDE usando o File KMS.
- Execute SSH na VM pelo Identity-Aware Proxy (IAP).
gcloud compute ssh $INSTANCE_NAME --zone=$ZONE --project=$PROJECT --tunnel-through-iap - Formate e monte o volume de dados (
/data1) e o volume de observabilidade/backup (/obs).sudo mkdir -p /data1 /obs sudo parted /dev/disk/by-id/google-db-data mklabel gpt sudo parted /dev/disk/by-id/google-db-data mkpart primary 0% 100% sudo parted /dev/disk/by-id/google-obs mklabel gpt sudo parted /dev/disk/by-id/google-obs mkpart primary 0% 100% sleep 3 sudo mkfs.xfs -L data /dev/disk/by-id/google-db-data-part1 sudo mkfs.xfs -L obs /dev/disk/by-id/google-obs-part1 echo -e "LABEL=data\t/data1\txfs\tdefaults\t0 0" | sudo tee -a /etc/fstab echo -e "LABEL=obs\t/obs\txfs\tdefaults\t0 0" | sudo tee -a /etc/fstab sudo systemctl daemon-reload sudo mount /data1 sudo mount /obs - Crie e ative o espaço de troca no disco de troca dedicado.
SWAP_UUID=$(sudo mkswap /dev/disk/by-id/google-swap 2>/dev/null | awk '$0 ~ "UUID" {print $NF}') echo -e "${SWAP_UUID}\tswap\tswap\tdefaults\t0 0" | sudo tee -a /etc/fstab sudo swapon -a - Defina variáveis de ambiente para o diretório do banco de dados e o arquivo de chave do File KMS.
export PGDATA="/data1/18" export KMS_DIR="/data1/kms" export KEK_FILE="$KMS_DIR/tde_key" export ALLOYDB_OMNI_REPOSITORY_URL="<your-repository-url>" - Crie diretórios de armazenamento para o banco de dados e o armazenamento de chaves do File KMS.
sudo mkdir -p $PGDATA sudo mkdir -p $KMS_DIR - Gere uma chave de criptografia de chaves (KEK) criptograficamente segura de 32 bytes usando o OpenSSL para o File KMS.
sudo openssl rand -base64 32 | sudo tee $KEK_FILE sudo chmod 700 $KMS_DIR sudo chmod 600 $KEK_FILE - Instale os utilitários de gerenciamento do SELinux necessários.
sudo dnf install -y policycoreutils-python-utils
5. Instalar pacotes RPM do AlloyDB Omni
Configure repositórios de pacotes e instale o servidor de banco de dados do AlloyDB Omni junto com as ferramentas padrão do PostgreSQL 18.
Observação:substitua $ALLOYDB_OMNI_REPOSITORY_URL pela URL do repositório recebida por e-mail após preencher o formulário de inscrição do RPM do AlloyDB Omni. Para mais informações, consulte a visão geral do AlloyDB Omni no Linux.
- Crie o arquivo de configuração do repositório YUM para o AlloyDB Omni.
sudo tee /etc/yum.repos.d/alloydbomni.repo << EOF [alloydbomni] name=alloydbomni baseurl=$ALLOYDB_OMNI_REPOSITORY_URL enabled=1 repo_gpgcheck=0 gpgcheck=1 gpgkey=https://dl.google.com/linux/linux_signing_key.pub EOF - Atualize o cache do repositório YUM e instale os pacotes RPM do servidor do AlloyDB Omni 18.
sudo yum makecache sudo dnf install -y alloydbomni18 - Instale o repositório RPM oficial do PGDG do PostgreSQL e instale o pacote de cliente padrão do PostgreSQL 18 (
psql).sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm sudo dnf install -y postgresql18 - Atribua a propriedade de
/data1e do diretório de chaves do KMS ao usuáriopostgres.sudo chown -R postgres:postgres /data1 $KMS_DIR sudo chmod 755 /data1 $PGDATA
6. Inicializar um cluster ativado para TDE
Configure cotas de recursos, abra portas de firewall de host e inicialize o cluster do AlloyDB Omni com a criptografia transparente de dados ativada pela chave do File KMS (POSTGRES_INITDB_ARGS="--tde-kek-url=file://$KEK_FILE").
- Defina o SELinux para o modo permissivo e configure regras de firewall de host para o PostgreSQL.
sudo setenforce 0 sudo firewall-cmd --add-port=5432/tcp --permanent sudo firewall-cmd --reload - Configure os parâmetros de substituição do serviço systemd para atribuir limites de recursos de memória e CPU.
sudo mkdir -p /etc/systemd/system/alloydbomni18.service.d sudo tee /etc/systemd/system/alloydbomni18.service.d/override.conf << EOF [Service] CPUQuota=90% MemoryMax=80% EOF sudo chown root:root /etc/systemd/system/alloydbomni18.service.d/override.conf sudo chmod 644 /etc/systemd/system/alloydbomni18.service.d/override.conf sudo systemctl daemon-reload - Defina variáveis de ambiente do administrador e inicialize o cluster de banco de dados TDE usando
alloydbomni18-setup initdb.export PGPASSWORD="YourStrongPassword123!" export POSTGRES_INITDB_ARGS="--tde-kek-url=file://$KEK_FILE" sudo POSTGRES_INITDB_ARGS="$POSTGRES_INITDB_ARGS" PGPASSWORD="$PGPASSWORD" PGDATA="$PGDATA" \ /usr/lib/postgresql/18/bin/alloydbomni18-setup initdb - Configure a porta do servidor 5432 em
postgresql.conf.sudo sed -i "s/^#*[[:space:]]*port[[:space:]]*=[[:space:]]*[0-9]*/port = 5432/" $PGDATA/postgresql.conf - Prepare catálogos e extensões do sistema usando
alloydbomni18-setup preparedb.sudo PGPORT=5432 PGPASSWORD="$PGPASSWORD" PGDATA="$PGDATA" \ /usr/lib/postgresql/18/bin/alloydbomni18-setup preparedb - Ative e inicie o serviço systemd
alloydbomni18. Verifique se a saída mostrasudo systemctl enable alloydbomni18 sudo systemctl start alloydbomni18 sudo systemctl status alloydbomni18Active: active (running).
7. Operações de banco de dados e verificação de criptografia de disco TDE
Conecte-se ao banco de dados TDE, insira registros de amostra, execute um CHECKPOINT para forçar a gravação de dados no disco e execute verificações diretas de disco (grep) para comprovar a criptografia de dados em repouso.
- Conecte-se ao banco de dados
alloydbadminusandopsql.PGPASSWORD="YourStrongPassword123!" /usr/lib/postgresql/18/bin/psql -h localhost -p 5432 -U postgres -d alloydbadmin - Crie uma tabela de teste, insira uma string confidencial e acione um ponto de verificação para gravar buffers sujos no armazenamento.
CREATE TABLE customer_credentials ( id SERIAL PRIMARY KEY, username TEXT, secret_passcode TEXT ); INSERT INTO customer_credentials (username, secret_passcode) VALUES ('alice_user', 'UNENCRYPTED_DEMO_SECRET_98765'); CHECKPOINT; - Consulte a visualização de estatísticas internas do AlloyDB TDE
pgsnap.g$tde_statspara verificar o status de criptografia ativa, o local da KEK e as métricas de bloco. Exemplo de saída confirmando a TDE ativa (SELECT is_tde_enabled, tde_kek_url, tde_data_blocks_encrypted, tde_wal_blocks_encrypted FROM pgsnap.g$tde_stats;is_tde_enabled = t), o caminho do arquivo KEK e os contadores de blocos criptografados:is_tde_enabled | tde_kek_url | tde_data_blocks_encrypted | tde_wal_blocks_encrypted ----------------+---------------------------+---------------------------+-------------------------- t | file:///data1/kms/tde_key | 2023 | 2717 (1 row) - Saia do
psql.\q - Pesquise arquivos de armazenamento de banco de dados brutos em
/data1/18/base/para a string de senha para verificar a proteção TDE no disco.sudo grep -a -rn "UNENCRYPTED_DEMO_SECRET_98765" /data1/18/base/
Aprendizado importante da verificação de chaves :
- Em uma instância de banco de dados não TDE, a execução de
grepem arquivos de relação de tabela mostra a string de texto simples no disco. - Em uma instância de banco de dados ativada para TDE ,
grepretorna zero correspondências porque todos os arquivos de dados, índices, registros prévios de escrita (WAL) e dados temporários são totalmente criptografados com cifras de bloco AES em repouso.
8. Revisão dos dados
Depois de concluir os exercícios, limpe os recursos para evitar cobranças de computação indesejadas.
- Desconecte-se da sessão SSH da VM.
exit - Remova a máquina virtual do GCE e os discos permanentes anexados.
gcloud compute instances delete $INSTANCE_NAME --zone=$ZONE --project=$PROJECT --quiet gcloud compute disks delete $INSTANCE_NAME-data $INSTANCE_NAME-obs $INSTANCE_NAME-swap --zone=$ZONE --project=$PROJECT --quiet - Exclua as regras de firewall e os recursos do gateway do Cloud NAT.
gcloud compute firewall-rules delete allow-ssh-alloydb-omni-tde --project=$PROJECT --quiet gcloud compute routers nats delete alloydb-omni-tde-nat --router=alloydb-omni-tde-router --region=$REGION --project=$PROJECT --quiet gcloud compute routers delete alloydb-omni-tde-router --region=$REGION --project=$PROJECT --quiet
9. Parabéns
Parabéns! Você concluiu o codelab da TDE no AlloyDB Omni RPM.
O que vimos
- Como provisionar discos de armazenamento (
/data1,/obs), configurar a troca e formatar sistemas de arquivos XFS. - Como gerar e gerenciar chaves de criptografia de chaves usando o File KMS.
- Como inicializar e iniciar um cluster do AlloyDB Omni ativado para TDE usando ferramentas RPM.
- Como verificar a criptografia de dados em repouso usando a inspeção direta de disco bruto (
grep).
Para mais informações, consulte a documentação do AlloyDB Omni.