L'operatore Kubernetes di AlloyDB Omni automatizza il ciclo di vita dei cluster di crittografia dei dati trasparente (TDE) utilizzando la risorsa personalizzata TdeConfig. Questa risorsa archivia i dettagli di connessione di Key Management Service (KMS), consentendo all'operatore di inserire in modo sicuro le credenziali richieste nei pod del database.
Prima di iniziare
- Configura il motore di secret KV-V2 di HashiCorp Vault per assicurarti che il percorso della chiave di crittografia della chiave (KEK) e il token JWT (JSON Web Token) siano disponibili.
- Assicurati che AlloyDB Omni abbia l'autorizzazione per leggere il file del token JWT.
(Facoltativo) Per eseguire il deployment di un cluster abilitato per TDE su OpenShift, concedi il vincolo del contesto di sicurezza (SCC)
hostmount-anyuidall'account di servizioDBClusterche esegue il cluster di database.oc adm policy add-scc-to-user hostmount-anyuid -z DBCLUSTER_NAME-sa -n DBCLUSTER_NAMESPACE
Sostituisci DBCLUSTER_NAME con il nome di
DBClustere DBCLUSTER_NAMESPACE con lo spazio dei nomi in cui vuoi creare la risorsaDBCluster.
Configurare l'accesso a Vault
Crea una risorsa secret che contenga il percorso KEK e le credenziali di autenticazione.
apiVersion: v1
kind: ConfigMap
metadata:
name: CONFIG_MAP_NAME
data:
kek_url: "KEK_URL"
token_path: "JWT_TOKEN_PATH"
Sostituisci quanto segue:
CONFIG_MAP_NAME: nome della mappa di configurazione. I valori definiti inkek_urletoken_pathvengono utilizzati nella definizione della risorsaTdeConfig.KEK_URL: l'URL completo della KEK in HashiCorp Vault. Utilizzavaultcome protocollo per specificare HashiCorp Vault come provider KMS, ad esempiovault://vault.default.svc:8200/v1/secrets/data/alloydb_kek.JWT_TOKEN_PATH: percorso del token JWT sul nodo. Ad esempio,/tmp/token. Il percorso di accesso al token JWT deve essere coerente su tutti i nodi del cluster.
Creare un secret TLS
Per creare un secret TLS per archiviare i certificati, esegui i seguenti comandi:
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
Sostituisci VAULT_SECRET_NAME con un nome per il secret TLS. Utilizza questo nome secret quando crei la risorsa personalizzata TdeConfig.
Creare la CRD TdeConfig
Crea una risorsa TdeConfig che definisca il modo in cui AlloyDB Omni comunica con Vault per recuperare la KEK. L'unico tipo di autenticazione supportato è jwt. Assicurati di creare la risorsa TdeConfig nello stesso spazio dei nomi della risorsa DbCluster.
Assicurati che il percorso del token JWT sia accessibile all'utente postgres e che l'istanza di Vault sia raggiungibile tramite la rete.
Per creare la risorsa TdeConfig:
Crea e applica un manifest per la risorsa 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"
Sostituisci quanto segue:
TDE_CONFIG_NAME: nome della risorsaTdeConfig.JWT_AUTH_MOUNT_PATH: percorso in cui il motore di autenticazione è montato in HashiCorp Vault, come definito dalla configurazione. Ad esempio,auth/kms.- (Facoltativo)
VAULT_ROLE: il ruolo client definito nella configurazione di Vault. Il ruolo client convalida il JWT e riflette i diritti di accesso e l'identità specifici concessi al ruolo in HashiCorp Vault. VAULT_SECRET_NAME: nome del secret che contiene i certificati per la connessione a Vault. Ad esempio,vault-secret.
Eseguire il deployment di DBCluster
Crea e applica un manifest per creare una risorsa
DBClusterche faccia riferimento alla risorsaTdeConfig. Per ulteriori informazioni sulla creazione di un cluster di database, consulta Creare un cluster di database.apiVersion: alloydbomni.dbadmin.goog/v1 kind: DBCluster metadata: name: "DBCLUSTER_NAME" spec: databaseVersion: "18.1.0" features: transparentDataEncryption: tdeConfigRef: name: "TDE_CONFIG_NAME" [...]Sostituisci
TDE_CONFIG_NAMEcon il nome della risorsaTdeConfigeDBCLUSTER_NAMEcon il nome diDBClusterche vuoi creare.(Facoltativo) Se esegui il deployment di
DBClusterin un ambiente Openshift, devi annotare la risorsaDBClustercon l'annotazionehostmount-anyuid.kubectl annotate dbclusters.alloydbomni.dbadmin.goog `DBCLUSTER_NAME` -n `DBCLUSTER_NAMESPACE` openshift.io/scc=anyuidSostituisci
DBCLUSTER_NAMEcon il nome della risorsaDBClustereDBCLUSTER_NAMESPACEcon lo spazio dei nomi in cui vuoi creare la risrisaDBCluster.
Visualizzare le metriche TDE
Una volta inizializzato il cluster, completa i seguenti passaggi per verificare che TDE sia abilitato e visualizzare le metriche TDE correlate.
- Connettiti al database utilizzando
psqlo il client che preferisci. Per istruzioni dettagliate su come connetterti alle istanze, consulta Eseguire e connettersi ad AlloyDB Omni. Esegui questo comando:
select * FROM pgsnap.g$tde_stats;L'output mostra le metriche TDE, ad esempio se TDE è abilitato, l'URL KEK, la versione KEK e il timestamp di creazione KEK.
La tabella seguente spiega il significato di ogni metrica.
Nome Descrizione Etichetta Unità Tipo alloydb_omni_database_tde_data_blocks_decrypted_count_totalNumero di blocchi di dati decriptati. Non applicabile contatore alloydb_omni_database_tde_data_blocks_encrypted_count_totalNumero di blocchi di dati criptati. Non applicabile contatore alloydb_omni_database_tde_data_decryption_time_us_totalTempo totale trascorso nella decrittografia dei blocchi di dati. Non applicabile microsecondi contatore alloydb_omni_database_tde_data_encryption_time_us_totalTempo totale trascorso nella crittografia dei blocchi di dati. Non applicabile microsecondi contatore alloydb_omni_database_tde_enabledStato di TDE abilitato. Non applicabile misuratore alloydb_omni_database_tde_kek_infoInformazioni sulla KEK TDE. kek_version: versione della KEK
in uso per il wrapping delle chiavi.kek_url: percorso completo
della KEK in KMSkek_creation_timestamp:
ora di creazione della versione KEK in uso.
misuratore alloydb_omni_database_tde_temp_blocks_decrypted_count_totalNumero di blocchi temporanei decriptati. Non applicabile contatore alloydb_omni_database_tde_temp_blocks_encrypted_count_totalNumero di blocchi temporanei criptati. Non applicabile contatore alloydb_omni_database_tde_temp_decryption_time_us_totalTempo totale trascorso nella decrittografia dei blocchi temporanei. Non applicabile microsecondi contatore alloydb_omni_database_tde_temp_encryption_time_us_totalTempo totale trascorso nella crittografia dei blocchi temporanei. Non applicabile microsecondi contatore alloydb_omni_database_tde_wal_blocks_decrypted_count_totalNumero di blocchi WAL decriptati. Non applicabile contatore alloydb_omni_database_tde_wal_blocks_encrypted_count_totalNumero di blocchi WAL criptati. Non applicabile contatore alloydb_omni_database_tde_wal_decryption_time_us_totalTempo totale trascorso nella decrittografia dei blocchi WAL. Non applicabile microsecondi contatore alloydb_omni_database_tde_wal_encryption_time_us_totalTempo totale trascorso nella crittografia dei blocchi WAL. Non applicabile microsecondi contatore