O operador do Kubernetes do AlloyDB Omni automatiza o ciclo de vida dos clusters de criptografia de dados transparente (TDE) usando o recurso personalizado TdeConfig. Esse recurso
armazena detalhes da conexão do Key Management Service (KMS), permitindo que o operador
insira com segurança as credenciais necessárias nos pods de banco de dados.
Antes de começar
- Configure o mecanismo de secrets KV-V2 do HashiCorp Vault para garantir que o caminho da chave de criptografia de chaves (KEK) 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.
Opcional: para implantar um cluster com TDE no OpenShift, conceda a restrição de contexto de segurança (SCC)
hostmount-anyuidà conta de serviçoDBClusterque executa o cluster de banco de dados.oc adm policy add-scc-to-user hostmount-anyuid -z DBCLUSTER_NAME-sa -n DBCLUSTER_NAMESPACE
Substitua DBCLUSTER_NAME pelo nome do
DBClustere DBCLUSTER_NAMESPACE pelo namespace em que você quer criar o recursoDBCluster.
Configurar o acesso ao cofre
Crie um recurso secreto que contenha o caminho da KEK e as credenciais de autenticação.
apiVersion: v1
kind: ConfigMap
metadata:
name: CONFIG_MAP_NAME
data:
kek_url: "KEK_URL"
token_path: "JWT_TOKEN_PATH"
Substitua:
CONFIG_MAP_NAME: nome do mapa de configuração. Os valores definidos emkek_urletoken_pathsão usados na definição do recursoTdeConfig.KEK_URL: o URL totalmente qualificado da KEK no HashiCorp Vault. Usevaultcomo o protocolo para especificar o HashiCorp Vault como o provedor de KMS. Por exemplo,vault://vault.default.svc:8200/v1/secrets/data/alloydb_kek.JWT_TOKEN_PATH: caminho para o token JWT no nó. Por exemplo,/tmp/token. O caminho de acesso do token JWT precisa ser consistente em todos os nós do cluster.
Criar um secret TLS
Para criar um secret do TLS e armazenar seus certificados, execute os seguintes comandos:
kubectl create secret tls VAULT_SECRET_NAME \
--cert=vault.crt \
--key=vault.key
kubectl patch secret VAULT_SECRET_NAME \
-p '{"data":{"ca.crt":"'$(base64 -w 0 vault.crt)'"}}' \
--type=merge
Substitua VAULT_SECRET_NAME por um nome para o secret do TLS.
Você usa esse nome secreto ao criar o recurso personalizado TdeConfig.
Criar o CRD TdeConfig
Crie um recurso TdeConfig que defina como o AlloyDB Omni
se comunica com o cofre para recuperar a KEK. O único tipo de autenticação compatível é jwt. Crie o recurso TdeConfig no mesmo namespace que o recurso DbCluster.
Verifique se o caminho para o token JWT está acessível ao usuário postgres e se a instância do cofre pode ser acessada pela rede.
Para criar o recurso TdeConfig, siga estas etapas:
Crie e aplique um manifesto para o recurso TdeConfig.
apiVersion: alloydbomni.dbadmin.goog/v1
kind: TdeConfig
metadata:
name: TDE_CONFIG_NAME
spec:
kekUrlRef:
name: CONFIG_MAP_NAME
key: kek_url
kmsProvider:
vault:
authType: "jwt"
authMount: "JWT_AUTH_MOUNT_PATH"
jwt:
pathRef:
name: "CONFIG_MAP_NAME"
key: "token_path"
role: "VAULT_ROLE"
tls:
certSecret:
name: "VAULT_SECRET_NAME"
Substitua:
TDE_CONFIG_NAME: nome do recursoTdeConfig.JWT_AUTH_MOUNT_PATH: caminho em que o mecanismo de autenticação é montado no HashiCorp Vault, conforme definido na sua configuração. Por exemplo,auth/kms.- (Opcional)
VAULT_ROLE: a função do cliente definida na configuração do Vault. A função do cliente valida o JWT e reflete os direitos de acesso e a identidade específicos concedidos à função no HashiCorp Vault. VAULT_SECRET_NAME: nome do secret que contém os certificados para a conexão do cofre. Por exemplo,vault-secret.
Implante o DBCluster
Crie e aplique um manifesto para criar um recurso
DBClusterque faça referência ao recursoTdeConfig. Para mais informações sobre como criar um cluster de banco de dados, consulte Criar um cluster de banco de dados.apiVersion: alloydbomni.dbadmin.goog/v1 kind: DBCluster metadata: name: "DBCLUSTER_NAME" spec: databaseVersion: "18.3.0" features: transparentDataEncryption: tdeConfigRef: name: "TDE_CONFIG_NAME" [...]Substitua
TDE_CONFIG_NAMEpelo nome do recursoTdeConfigeDBCLUSTER_NAMEpelo nome doDBClusterque você quer criar.Opcional: se você estiver implantando
DBClusterem um ambiente OpenShift, anote o recursoDBClustercom a anotaçãohostmount-anyuid.kubectl annotate dbclusters.alloydbomni.dbadmin.goog `DBCLUSTER_NAME` -n `DBCLUSTER_NAMESPACE` openshift.io/scc=anyuidSubstitua
DBCLUSTER_NAMEpelo nome do recursoDBClustereDBCLUSTER_NAMESPACEpelo namespace em que você quer criar o recursoDBCluster.
Para ativar a TDE no cache colunar transferido para SSD, adicione um patch ao DBCluster da seguinte maneira:
kubectl patch dbcluster `DBCLUSTER_NAME` \
-n `DBCLUSTER_NAMESPACE` \
-p '{"spec":{"primarySpec":{"parameters": {"google_columnar_engine.enable_tde_for_storage_cache": "on"}}}}' \
--type=merge
Referências de métricas do TDE
É possível conferir 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 do bloco 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 da KEK da TDE. |
|
medidor | |
alloydb_omni_database_tde_temp_blocks_decrypted_count_total |
Número de bloqueios 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 bloqueio temporário. | 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 de 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 de resfriamento criptografados. | Não relevante | Contador | |
tde_chill_cache_blocks_decrypted |
Número de blocos de cache de resfriamento descriptografados. | Não relevante | Contador | |
tde_chill_cache_blocks_total_encryption_time_us |
Tempo total gasto na criptografia de blocos de cache frio. | Não relevante | microssegundos | Contador |
tde_chill_cache_blocks_total_decryption_time_us |
Tempo total gasto na descriptografia do bloco de cache frio. | Não relevante | microssegundos | Contador |
tde_ce_cache_ssd_blocks_encrypted |
Número de blocos de cache colunares transferidos para o armazenamento SSD que foram criptografados. | Não relevante | Contador | |
tde_ce_cache_ssd_blocks_decrypted |
Número de blocos de cache colunares transferidos 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 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 |