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. Diese Ressource speichert die Details der Key Management Service-Verbindung (KMS), 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 identisch 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 wurde, patchen Sie Ihren DBCluster wie folgt:

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 wird jeder Messwert 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 der TDE-Aktivierung. 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:
    Erstellungszeitpunkt der verwendeten KEK-Version.
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 Spaltencache-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