Crea un cluster abilitato alla TDE

Seleziona una versione della documentazione:

L'operatore Kubernetes di AlloyDB Omni automatizza il ciclo di vita dei cluster di crittografia trasparente dei dati (TDE) utilizzando la risorsa personalizzata TdeConfig. Questa risorsa archivia i dettagli della connessione Key Management Service (KMS) per HashiCorp Vault o Thales CipherTrust Manager, consentendo all'operatore di inserire in modo sicuro le credenziali richieste nei pod del database.

Prima di iniziare

KMS di HashiCorp Vault

  • 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.
  • (Facoltativo) Verifica che AlloyDB Omni abbia l'autorizzazione per leggere il file del token JWT (JSON Web Token), che è il token di autenticazione.
  • (Facoltativo) Per eseguire il deployment di un cluster abilitato per TDE su OpenShift, concedi il vincolo del contesto di sicurezza (SCC) hostmount-anyuid al account di servizio DBCluster che 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 DBCluster e DBCLUSTER_NAMESPACE con lo spazio dei nomi in cui vuoi creare la risorsa DBCluster.

KMS di Thales CipherTrust

  • Configura Thales CipherTrust Manager per assicurarti che la chiave di crittografia della chiave (KEK) del secret sia stata creata ed esportabile.
  • Verifica di avere un account utente di CipherTrust Manager (username e password) con l'autorizzazione per autenticare ed esportare il secret KEK.
  • (Facoltativo) Per eseguire il deployment di un cluster abilitato per TDE su OpenShift, concedi il vincolo del contesto di sicurezza (SCC) hostmount-anyuid al account di servizio DBCluster che 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 DBCluster e DBCLUSTER_NAMESPACE con lo spazio dei nomi in cui vuoi creare la risorsa DBCluster.

Configurare l'accesso a KMS

Crea le risorse ConfigMap e Secret di Kubernetes che contengono il percorso KEK e le credenziali di autenticazione KMS. Assicurati di creare queste risorse nello stesso spazio dei nomi in cui prevedi di eseguire il deployment di DBCluster.

KMS di HashiCorp Vault

Crea una risorsa ConfigMap che contenga l'URL KEK e il percorso host del token JWT:

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 di ConfigMap. I valori definiti in kek_url e token_path vengono utilizzati nella definizione della risorsa TdeConfig.
  • KEK_URL: l'URL completo della KEK in HashiCorp Vault. Utilizza vault come protocollo per specificare HashiCorp Vault come provider KMS, ad esempio vault://vault.default.svc:8200/v1/secret/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.

KMS di Thales CipherTrust

Crea una risorsa ConfigMap che contenga l'URL KEK e una risorsa Secret che contenga le credenziali di autenticazione di Thales CipherTrust Manager:

apiVersion: v1
kind: ConfigMap
metadata:
  name: CONFIG_MAP_NAME
data:
  kek_url: "KEK_URL"
---
apiVersion: v1
kind: Secret
metadata:
  name: CREDENTIALS_SECRET_NAME
type: Opaque
stringData:
  username: "CIPHERTRUST_USERNAME"
  password: "CIPHERTRUST_PASSWORD"

Sostituisci quanto segue:

  • CONFIG_MAP_NAME: nome di ConfigMap. Il valore definito in kek_url viene utilizzato nella definizione della risorsa TdeConfig.
  • KEK_URL: l'URL completo della KEK in Thales CipherTrust Manager. Utilizza ciphertrust come protocollo per specificare Thales CipherTrust Manager come provider KMS, ad esempio ciphertrust://ciphertrust.default.svc:443/api/v1/vault/secrets/alloydb_kek.
  • CREDENTIALS_SECRET_NAME: nome del secret Kubernetes che memorizza le credenziali di CipherTrust Manager, ad esempio ciphertrust-credentials.
  • CIPHERTRUST_USERNAME: il nome utente utilizzato per l'autenticazione con Thales CipherTrust Manager.
  • CIPHERTRUST_PASSWORD: la password per l'utente di Thales CipherTrust Manager.

Creare un secret TLS

Per creare un secret TLS per archiviare i certificati per la verifica della connessione al server KMS (HashiCorp Vault o Thales CipherTrust Manager), esegui i seguenti comandi:

kubectl create secret tls TLS_SECRET_NAME \
    --cert=CLIENT_CERT_FILE \
    --key=CLIENT_KEY_FILE

kubectl patch secret TLS_SECRET_NAME \
    -p '{"data":{"ca.crt":"'$(base64 -w 0 CA_CERT_FILE)'"}}' \
    --type=merge

Sostituisci quanto segue:

  • TLS_SECRET_NAME: un nome per il secret TLS (ad esempio vault-secret o ciphertrust-tls-secret). Utilizza questo nome del secret quando crei la risorsa personalizzata TdeConfig.
  • CLIENT_CERT_FILE: il percorso del file del certificato TLS del client (memorizzato come tls.crt nel secret).
  • CLIENT_KEY_FILE: il percorso del file della chiave privata TLS del client (memorizzato come tls.key nel secret).
  • CA_CERT_FILE: il percorso del file del certificato dell'autorità di certificazione (CA) utilizzato per verificare il certificato del server KMS (memorizzato come ca.crt nel secret).

Creare la risorsa personalizzata TdeConfig

Crea una risorsa TdeConfig che definisca il modo in cui AlloyDB Omni comunica con il provider KMS esterno per recuperare la KEK. Assicurati di creare la risorsa TdeConfig nello stesso spazio dei nomi della risorsa DBCluster.

Assicurati che l'istanza KMS sia raggiungibile tramite la rete dai pod del database.

KMS di HashiCorp Vault

Assicurati che il percorso del token JWT sul nodo host sia accessibile all'utente postgres. 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: "TLS_SECRET_NAME"

Sostituisci quanto segue:

  • TDE_CONFIG_NAME: nome della risorsa TdeConfig.
  • CONFIG_MAP_NAME: nome di ConfigMap creato nel passaggio precedente.
  • JWT_AUTH_MOUNT_PATH: percorso in cui il motore di autenticazione è montato all'interno di 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 all'interno di HashiCorp Vault.
  • TLS_SECRET_NAME: nome del secret che contiene i certificati TLS per la connessione Vault, ad esempio vault-secret.

KMS di Thales CipherTrust

Crea e applica un manifest per la risorsa TdeConfig utilizzando il provider ciphertrust:

apiVersion: alloydbomni.dbadmin.goog/v1
kind: TdeConfig
metadata:
  name: TDE_CONFIG_NAME
spec:
  kekUrlRef:
    name: CONFIG_MAP_NAME
    key: kek_url
  kmsProvider:
    ciphertrust:
      authType: "password"
      credentialsSecretRef:
        name: "CREDENTIALS_SECRET_NAME"
  tls:
    certSecret:
      name: "TLS_SECRET_NAME"

Sostituisci quanto segue:

  • TDE_CONFIG_NAME: nome della risorsa TdeConfig.
  • CONFIG_MAP_NAME: nome di ConfigMap contenente kek_url.
  • CREDENTIALS_SECRET_NAME: nome del secret Kubernetes contenente le chiavi username e password di CipherTrust Manager, ad esempio ciphertrust-credentials.
  • TLS_SECRET_NAME: nome del secret che contiene i certificati TLS per la connessione CipherTrust Manager, ad esempio ciphertrust-tls-secret.

Eseguire il deployment di DBCluster

  1. Crea e applica un manifest per creare una risorsa DBCluster che faccia riferimento alla risorsa TdeConfig. 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.4.0"
      primarySpec:
        features:
          transparentDataEncryption:
            tdeConfigRef:
              name: "TDE_CONFIG_NAME"
    
    [...]
    

    Sostituisci TDE_CONFIG_NAME con il nome della risorsa TdeConfig e DBCLUSTER_NAME con il nome di DBCluster che vuoi creare.

  2. (Facoltativo) Se esegui il deployment di DBCluster in un ambiente OpenShift, devi annotare la risorsa DBCluster con l'annotazione hostmount-anyuid.

    kubectl annotate dbclusters.alloydbomni.dbadmin.goog DBCLUSTER_NAME -n DBCLUSTER_NAMESPACE openshift.io/scc=anyuid
    

    Sostituisci DBCLUSTER_NAME con il nome della risorsa DBCluster e DBCLUSTER_NAMESPACE con lo spazio dei nomi in cui vuoi creare la risorsa DBCluster.

Per abilitare TDE per la cache colonnare riversata su SSD, applica la patch a 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

Riferimento alle metriche TDE

Puoi visualizzare tutte le metriche TDE nell'agente di monitoraggio di AlloyDB Omni. La tabella seguente descrive ogni 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 decrittografia dei blocchi 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 abilitato. Non applicabile misuratore
alloydb_omni_database_tde_kek_info Informazioni sulla KEK di TDE.
  • kek_version: versione della KEK in uso per il wrapping delle chiavi.
  • kek_url: percorso completo della KEK in KMS.
  • kek_creation_timestamp: ora di creazione della versione KEK in uso.
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 nella decrittografia dei blocchi temporanei. Non applicabile microsecondi contatore
alloydb_omni_database_tde_temp_encryption_time_us_total Tempo totale trascorso nella crittografia dei blocchi temporanei. 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 dei blocchi 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 di raffreddamento criptati. Non applicabile contatore
tde_chill_cache_blocks_decrypted Numero di blocchi della cache di raffreddamento decriptati. Non applicabile contatore
tde_chill_cache_blocks_total_encryption_time_us Tempo totale trascorso nella crittografia dei blocchi della cache di raffreddamento. Non applicabile microsecondi contatore
tde_chill_cache_blocks_total_decryption_time_us Tempo totale trascorso nella decrittografia dei blocchi della cache di raffreddamento. Non applicabile microsecondi contatore
tde_ce_cache_ssd_blocks_encrypted Numero di blocchi della cache colonnare riversati sullo spazio di archiviazione SSD criptati. Non applicabile contatore
tde_ce_cache_ssd_blocks_decrypted Numero di blocchi della cache colonnare riversati sullo spazio di archiviazione SSD decriptati. Non applicabile contatore
tde_ce_cache_ssd_blocks_total_encryption_time_us Tempo totale trascorso nella crittografia dei blocchi della cache colonnare riversati sullo spazio di archiviazione SSD. Non applicabile microsecondi contatore
tde_ce_cache_ssd_blocks_total_decryption_time_us Tempo totale trascorso nella decrittografia dei blocchi della cache colonnare riversati sullo spazio di archiviazione SSD. Non applicabile microsecondi contatore