L'operatore AlloyDB Omni Kubernetes automatizza il ciclo di vita dei cluster Transparent Data
Encryption (TDE) utilizzando la risorsa personalizzata TdeConfig. Questa risorsa
memorizza 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 dei segreti KV-V2 di HashiCorp Vault per assicurarti che il percorso della chiave di crittografia (KEK) e il JSON Web Token (JWT) 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 a TDE su OpenShift, concedi il vincolo del contesto di sicurezza (SCC)
hostmount-anyuidal 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 al 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: il 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 in tutti i nodi del cluster.
Crea 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.
Utilizzi questo nome secret quando crei la risorsa personalizzata TdeConfig.
Crea la CRD TdeConfig
Crea una risorsa TdeConfig che definisce il modo in cui AlloyDB Omni
comunica con il 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: il 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: il nome del secret che contiene i certificati per la connessione al vault. Ad esempio,vault-secret.
Esegui il deployment di DBCluster
Crea e applica un manifest per creare una risorsa
DBClusterche fa riferimento alla risorsaTdeConfig. Per saperne di più sulla creazione di un cluster di database, vedi Creare un cluster di database.apiVersion: alloydbomni.dbadmin.goog/v1 kind: DBCluster metadata: name: "DBCLUSTER_NAME" spec: databaseVersion: "18.3.0" features: transparentDataEncryption: tdeConfigRef: name: "TDE_CONFIG_NAME" [...]Sostituisci
TDE_CONFIG_NAMEcon il nome della tua risorsaTdeConfigeDBCLUSTER_NAMEcon il nome delDBClusterche 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 risorsaDBCluster.
Per abilitare TDE per la cache a colonne riversata sull'SSD, applica la patch al tuo DBCluster come segue:
kubectl patch dbcluster `DBCLUSTER_NAME` \
-n `DBCLUSTER_NAMESPACE` \
-p '{"spec":{"primarySpec":{"parameters": {"google_columnar_engine.enable_tde_for_storage_cache": "on"}}}}' \
--type=merge
Riferimenti alle metriche TDE
Puoi visualizzare tutte le metriche TDE nell'agente di monitoraggio di AlloyDB Omni. La tabella seguente spiega il significato di ciascuna metrica.
| Nome | Descrizione | Etichetta | Unità | Tipo |
|---|---|---|---|---|
alloydb_omni_database_tde_data_blocks_decrypted_count_total |
Numero di blocchi di dati decriptati. | Non applicabile | contatore | |
alloydb_omni_database_tde_data_blocks_encrypted_count_total |
Numero di blocchi di dati criptati. | Non applicabile | contatore | |
alloydb_omni_database_tde_data_decryption_time_us_total |
Tempo totale trascorso nella decriptazione del blocco di dati. | Non applicabile | microsecondi | contatore |
alloydb_omni_database_tde_data_encryption_time_us_total |
Tempo totale trascorso nella crittografia dei blocchi di dati. | Non applicabile | microsecondi | contatore |
alloydb_omni_database_tde_enabled |
Stato di TDE attivato. | Non applicabile | misuratore | |
alloydb_omni_database_tde_kek_info |
Informazioni sulla KEK TDE. |
|
misuratore | |
alloydb_omni_database_tde_temp_blocks_decrypted_count_total |
Numero di blocchi temporanei decriptati. | Non applicabile | contatore | |
alloydb_omni_database_tde_temp_blocks_encrypted_count_total |
Numero di blocchi temporanei criptati. | Non applicabile | contatore | |
alloydb_omni_database_tde_temp_decryption_time_us_total |
Tempo totale trascorso per la decriptazione del blocco temporaneo. | Non applicabile | microsecondi | contatore |
alloydb_omni_database_tde_temp_encryption_time_us_total |
Tempo totale trascorso nella crittografia del blocco temporaneo. | Non applicabile | microsecondi | contatore |
alloydb_omni_database_tde_wal_blocks_decrypted_count_total |
Numero di blocchi WAL decriptati. | Non applicabile | contatore | |
alloydb_omni_database_tde_wal_blocks_encrypted_count_total |
Numero di blocchi WAL criptati. | Non applicabile | contatore | |
alloydb_omni_database_tde_wal_decryption_time_us_total |
Tempo totale trascorso nella decrittografia del blocco WAL. | Non applicabile | microsecondi | contatore |
alloydb_omni_database_tde_wal_encryption_time_us_total |
Tempo totale trascorso nella crittografia dei blocchi WAL. | Non applicabile | microsecondi | contatore |
tde_chill_cache_blocks_encrypted |
Numero di blocchi della cache fredda criptati. | Non applicabile | contatore | |
tde_chill_cache_blocks_decrypted |
Numero di blocchi della cache fredda decriptati. | Non applicabile | contatore | |
tde_chill_cache_blocks_total_encryption_time_us |
Tempo totale trascorso nella crittografia del blocco della cache inattiva. | Non applicabile | microsecondi | contatore |
tde_chill_cache_blocks_total_decryption_time_us |
Tempo totale trascorso nella decrittografia del blocco della cache fredda. | Non applicabile | microsecondi | contatore |
tde_ce_cache_ssd_blocks_encrypted |
Numero di blocchi della cache colonnare riversati nell'archiviazione SSD che sono stati criptati. | Non applicabile | contatore | |
tde_ce_cache_ssd_blocks_decrypted |
Numero di blocchi della cache colonnare riversati nell'archiviazione SSD che sono stati decriptati. | Non applicabile | contatore | |
tde_ce_cache_ssd_blocks_total_encryption_time_us |
Tempo totale trascorso a criptare i blocchi della cache colonnare riversati nello spazio di archiviazione SSD. | Non applicabile | microsecondi | contatore |
tde_ce_cache_ssd_blocks_total_decryption_time_us |
Tempo totale trascorso a decriptare i blocchi della cache colonnare riversati nello spazio di archiviazione SSD. | Non applicabile | microsecondi | contatore |