TDE-fähigen Cluster erstellen

Wählen Sie eine Dokumentationsversion aus:

Der AlloyDB Omni Kubernetes-Operator automatisiert den Lebenszyklus von Clustern mit transparenter Datenverschlüsselung (Transparent Data Encryption, TDE) mithilfe der benutzerdefinierten Ressource TdeConfig. In dieser Ressource werden die Verbindungsdetails für den Key Management Service (KMS) gespeichert, sodass der Operator die erforderlichen Anmeldedaten sicher in Datenbank-Pods einfügen kann.

Hinweis

  • Optional: Wenn Sie einen TDE-fähigen Cluster in OpenShift bereitstellen möchten, gewähren Sie dem DBCluster-Dienstkonto, auf dem der Datenbankcluster ausgeführt wird, die Sicherheitskontexteinschränkung (Security Context Constraint, SCC) hostmount-anyuid.

    oc adm policy add-scc-to-user hostmount-anyuid -z DBCLUSTER_NAME-sa -n DBCLUSTER_NAMESPACE

    Ersetzen Sie DBCLUSTER_NAME durch den Namen des DBCluster und DBCLUSTER_NAMESPACE durch den Namespace, in dem Sie die DBCluster-Ressource erstellen möchten.

Vault-Zugriff konfigurieren

Erstellen Sie eine Secret-Ressource, die den KEK-Pfad und die Authentifizierungsanmeldedaten enthält.

apiVersion: v1
kind: ConfigMap
metadata:
  name: CONFIG_MAP_NAME
data:
  kek_url: "KEK_URL"
  token_path: "JWT_TOKEN_PATH"

Ersetzen Sie Folgendes:

  • CONFIG_MAP_NAME: Name der ConfigMap. Die in kek_url und token_path definierten Werte werden in der TdeConfig-Ressourcendefinition verwendet.
  • KEK_URL: Die vollständig qualifizierte URL zum KEK in HashiCorp Vault. Verwenden Sie vault als Protokoll, um HashiCorp Vault als den KMS-Anbieter anzugeben, z. B. vault://vault.default.svc:8200/v1/secrets/data/alloydb_kek.
  • JWT_TOKEN_PATH: Pfad zum JWT-Token auf dem Knoten. Beispiel: /tmp/token. Der Zugriffspfad für das JWT-Token muss auf allen Knoten im Cluster gleich sein.

TLS-Secret erstellen

Führen Sie die folgenden Befehle aus, um ein TLS-Secret zum Speichern Ihrer Zertifikate zu erstellen:

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

Ersetzen Sie VAULT_SECRET_NAME durch einen Namen für das TLS-Secret. Sie verwenden diesen Secret-Namen, wenn Sie die benutzerdefinierte Ressource TdeConfig erstellen.

TdeConfig CRD erstellen

Erstellen Sie eine TdeConfig-Ressource, die definiert, wie AlloyDB Omni mit dem Vault kommuniziert, um den KEK abzurufen. Der einzige unterstützte Authentifizierungstyp ist jwt. Achten Sie darauf, dass Sie die TdeConfig-Ressource im selben Namespace wie die DbCluster-Ressource erstellen.

Prüfen Sie, ob der Pfad zu Ihrem JWT-Token für den postgres-Nutzer zugänglich ist und Ihre Vault-Instanz über das Netzwerk erreichbar ist.

So erstellen Sie die TdeConfig-Ressource:

Erstellen und wenden Sie ein Manifest für die TdeConfig-Ressource an.

  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"

Ersetzen Sie Folgendes:

  • TDE_CONFIG_NAME: Name der TdeConfig-Ressource.
  • JWT_AUTH_MOUNT_PATH: Pfad, in dem die Authentifizierungs Engine in HashiCorp Vault eingebunden ist, wie in Ihrer Konfiguration definiert. Beispiel: auth/kms.
  • VAULT_ROLE: Die in Ihrer Vault-Einrichtung definierte Clientrolle. Die Clientrolle validiert das JWT und spiegelt die spezifischen Zugriffsrechte und die Identität wider, die der Rolle in HashiCorp Vault gewährt werden.
  • VAULT_SECRET_NAME: Name des Secrets, das die Zertifikate für die Vault-Verbindung enthält. Beispiel: vault-secret.

DBCluster bereitstellen

  1. Erstellen und wenden Sie ein Manifest an, um eine DBCluster-Ressource zu erstellen, die auf Ihre TdeConfig-Ressource verweist. Weitere Informationen zum Erstellen eines Datenbank clusters finden Sie unter Datenbankcluster erstellen.

    apiVersion: alloydbomni.dbadmin.goog/v1
    kind: DBCluster
    metadata:
      name: "DBCLUSTER_NAME"
    spec:
      databaseVersion: "18.3.0"
      features:
        transparentDataEncryption:
          tdeConfigRef:
            name: "TDE_CONFIG_NAME"
    
    [...]
    

    Ersetzen Sie TDE_CONFIG_NAME durch den Namen Ihrer TdeConfig-Ressource und DBCLUSTER_NAME durch den Namen des DBCluster, den Sie erstellen möchten.

  2. Optional: Wenn Sie DBCluster in einer OpenShift-Umgebung bereitstellen, müssen Sie die DBCluster-Ressource mit der Annotation hostmount-anyuid versehen.

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

    Ersetzen Sie DBCLUSTER_NAME durch den Namen Ihrer DBCluster Ressource und DBCLUSTER_NAMESPACE durch den Namespace , in dem Sie die DBCluster Ressource erstellen möchten.

Wenn Sie TDE für den spaltenbasierten Cache aktivieren möchten, der auf SSD ausgelagert wird, patchen Sie Ihren DBCluster so:

kubectl patch dbcluster `DBCLUSTER_NAME` \
  -n `DBCLUSTER_NAMESPACE` \
  -p '{"spec":{"primarySpec":{"parameters": {"google_columnar_engine.enable_tde_for_storage_cache": "on"}}}}' \
  --type=merge

Referenzen zu TDE-Messwerten

Sie können alle TDE-Messwerte im Monitoring-Agent von AlloyDB Omni ansehen. In der folgenden Tabelle werden die einzelnen Messwerte beschrieben.

Name Beschreibung Label Einheit Typ
alloydb_omni_database_tde_data_blocks_decrypted_count_total Anzahl der entschlüsselten Datenblöcke. Nicht zutreffend Zähler
alloydb_omni_database_tde_data_blocks_encrypted_count_total Anzahl der verschlüsselten Datenblöcke. Nicht zutreffend Zähler
alloydb_omni_database_tde_data_decryption_time_us_total Gesamtzeit für die Entschlüsselung von Datenblöcken. Nicht zutreffend Mikrosekunden Zähler
alloydb_omni_database_tde_data_encryption_time_us_total Gesamtzeit für die Verschlüsselung von Datenblöcken. Nicht zutreffend Mikrosekunden Zähler
alloydb_omni_database_tde_enabled Status „TDE aktiviert“. Nicht zutreffend Gauge
alloydb_omni_database_tde_kek_info TDE-KEK-Informationen.
  • kek_version: Version des KEK
    , der für die Schlüsselverschlüsselung verwendet wird.
  • kek_url: Vollständig qualifizierter Pfad
    zum KEK in KMS
  • kek_creation_timestamp:
    Erstellungszeit des verwendeten KEK.
Gauge
alloydb_omni_database_tde_temp_blocks_decrypted_count_total Anzahl der entschlüsselten temporären Blöcke. Nicht zutreffend Zähler
alloydb_omni_database_tde_temp_blocks_encrypted_count_total Anzahl der verschlüsselten temporären Blöcke. Nicht zutreffend Zähler
alloydb_omni_database_tde_temp_decryption_time_us_total Gesamtzeit für die Entschlüsselung temporärer Blöcke. Nicht zutreffend Mikrosekunden Zähler
alloydb_omni_database_tde_temp_encryption_time_us_total Gesamtzeit für die Verschlüsselung temporärer Blöcke. Nicht zutreffend Mikrosekunden Zähler
alloydb_omni_database_tde_wal_blocks_decrypted_count_total Anzahl der entschlüsselten WAL-Blöcke. Nicht zutreffend Zähler
alloydb_omni_database_tde_wal_blocks_encrypted_count_total Anzahl der verschlüsselten WAL-Blöcke. Nicht zutreffend Zähler
alloydb_omni_database_tde_wal_decryption_time_us_total Gesamtzeit für die Entschlüsselung von WAL-Blöcken. Nicht zutreffend Mikrosekunden Zähler
alloydb_omni_database_tde_wal_encryption_time_us_total Gesamtzeit für die Verschlüsselung von WAL-Blöcken. Nicht zutreffend Mikrosekunden Zähler
tde_chill_cache_blocks_encrypted Anzahl der verschlüsselten Chill-Cache-Blöcke. Nicht zutreffend Zähler
tde_chill_cache_blocks_decrypted Anzahl der entschlüsselten Chill-Cache-Blöcke. Nicht zutreffend Zähler
tde_chill_cache_blocks_total_encryption_time_us Gesamtzeit für die Verschlüsselung von Chill-Cache-Blöcken. Nicht zutreffend Mikrosekunden Zähler
tde_chill_cache_blocks_total_decryption_time_us Gesamtzeit für die Entschlüsselung von Chill-Cache-Blöcken. Nicht zutreffend Mikrosekunden Zähler
tde_ce_cache_ssd_blocks_encrypted Anzahl der verschlüsselten spaltenbasierten Cache-Blöcke, die auf SSD-Speicher ausgelagert wurden. Nicht zutreffend Zähler
tde_ce_cache_ssd_blocks_decrypted Anzahl der entschlüsselten spaltenbasierten Cache-Blöcke, die auf SSD-Speicher ausgelagert wurden. Nicht zutreffend Zähler
tde_ce_cache_ssd_blocks_total_encryption_time_us Gesamtzeit für die Verschlüsselung von spaltenbasierten Cache-Blöcken, die auf SSD-Speicher ausgelagert wurden. Nicht zutreffend Mikrosekunden Zähler
tde_ce_cache_ssd_blocks_total_decryption_time_us Gesamtzeit für die Entschlüsselung von spaltenbasierten Cache-Blöcken, die auf SSD-Speicher ausgelagert wurden. Nicht zutreffend Mikrosekunden Zähler