TDE-fähigen Cluster erstellen

Wählen Sie eine Dokumentationsversion aus:

Sie können Ihre Daten im Ruhezustand schützen und vertrauliche Informationen sichern, indem Sie die transparente Datenverschlüsselung (Transparent Data Encryption, TDE) in AlloyDB Omni aktivieren. In diesem Dokument wird beschrieben, wie Sie einen TDE-fähigen Cluster erstellen. Dazu müssen Sie bei der Datenbankinitialisierung die erforderlichen Vault-Umgebungsvariablen und das Flag --tde-kek-url in der Umgebungsvariable POSTGRES_INITDB_ARGS angeben.

Hinweis

  • Lesen Sie den Artikel AlloyDB Omni-Installation planen.
  • Wenn Sie Ihre AlloyDB Omni-Bereitstellung mit aktivierter TDE planen, müssen Sie die zusätzliche CPU-Nutzung basierend auf der erwarteten Arbeitslast und dem Datenvolumen berücksichtigen. Verschlüsselung und Entschlüsselung sind rechenintensive Vorgänge.

Cluster erstellen

Wenn Sie einen TDE-fähigen Cluster erstellen möchten, müssen Sie bei der Initialisierung der Datenbank die erforderliche KMS-Konfiguration (Key Management Service) und die Authentifizierungsanmeldedaten übergeben. Der einzige unterstützte Authentifizierungstyp ist jwt.

  1. Installieren Sie AlloyDB Omni mit RPM um Ihre Umgebung vorzubereiten und das AlloyDB Omni-RPM-Paket zu installieren.

  2. Initialisieren Sie die Datenbank.

    HashiCorp Vault KMS

    Verwenden Sie diesen Ansatz für Produktionsarbeitslasten.

    1. Führen Sie den folgenden Befehl aus, um die Datenbank mit aktivierter TDE zu initialisieren:

      sudo PGPASSWORD=POSTGRES_PASSWORD \
      PGDATA=DATA_DIR \
      VAULT_AUTH_TYPE=jwt \
      VAULT_AUTH_MOUNT=JWT_AUTH_ENGINE_MOUNT \
      VAULT_JWT_PATH=JWT_FILE_PATH \
      VAULT_ROLE=VAULT_ROLE \
      VAULT_CERT_PATH=VAULT_CERT_PATH \
      POSTGRES_INITDB_ARGS="--tde-kek-url=KEK_URL" \
      /usr/lib/postgresql/18/bin/alloydbomniproduct_major_version_numeric-setup initdb

      Ersetzen Sie Folgendes:

      • POSTGRES_PASSWORD: das Passwort für den Datenbanknutzer.
      • DATA_DIR: das lokale Verzeichnis, das als Datenvolume für AlloyDB Omni eingebunden werden soll, z. B. /local/data.
      • JWT_AUTH_ENGINE_MOUNT: der Pfad, unter dem die HashiCorp Vault-Authentifizierungs-Engine eingebunden ist, z. B. /auth/jwt.
      • JWT_FILE_PATH: der Pfad, unter dem das Vault-JWT auf Ihren Knoten gespeichert ist, z. B. tde-tls/jwt-token.
      • (Optional) VAULT_ROLE: die in Ihrer Vault-Einrichtung definierte Clientrolle, mit der HashiCorp Vault die Authentizität des JWT-Tokens überprüfen kann.
      • VAULT_CERT_PATH: der Pfad, unter dem sich die Zertifikate für die Vault-Verbindung auf Ihren Knoten befinden, z. B. /tde-tls. Wenn nicht festgelegt, werden die Zertifikate im Standard-Trust Store verwendet.
      • KEK_URL: die vollständig qualifizierte URL zum KEK in HashiCorp Vault. Verwenden Sie vault als Protokoll, um HashiCorp Vault als KMS-Anbieter anzugeben, z. B. vault://127.0.0.1:8200/v1/secrets/data/alloydb_kek.
    2. Wenn Sie eine Überschreibungsdatei für alloydbomni18.service in /etc/systemd/system/alloydbomni18.service.d/override.conf erstellen möchten, fügen Sie der Datei override.conf Folgendes hinzu:

      [Service]
      Environment="VAULT_AUTH_TYPE=VAULT_AUTH_TYPE"
      Environment="VAULT_AUTH_MOUNT=JWT_AUTH_ENGINE_MOUNT"
      Environment="VAULT_JWT_PATH=JWT_FILE_PATH"
      Environment="VAULT_ROLE=VAULT_ROLE"
      Environment="VAULT_CERT_PATH=VAULT_CERT_PATH"

      Ersetzen Sie Folgendes:

      • VAULT_AUTH_TYPE: der Authentifizierungstyp, der für die Vault-Verbindung verwendet werden soll. Nur jwt wird unterstützt.
      • JWT_AUTH_ENGINE_MOUNT: der Pfad, unter dem die HashiCorp Vault-Authentifizierungs-Engine eingebunden ist, z. B. /auth/jwt.
      • JWT_FILE_PATH: der Pfad, unter dem das Vault-JWT auf Ihren Knoten gespeichert ist, z. B. tde-tls/jwt-token.
      • (Optional) VAULT_ROLE: die in Ihrer Vault-Einrichtung definierte Clientrolle, mit der HashiCorp Vault die Authentizität des JWT-Tokens überprüfen kann.
      • VAULT_CERT_PATH: der Pfad, unter dem sich die Zertifikate für die Vault-Verbindung auf Ihren Knoten befinden, z. B. /tde-tls. Wenn nicht festgelegt, werden die Zertifikate im Standard-Trust Store verwendet.
    3. Laden Sie den systemd-Daemon neu, um die Änderungen zu übernehmen.

      sudo systemctl daemon-reload

    Dateibasiertes KMS

    Verwenden Sie diesen Ansatz nur zu Testzwecken.

    Wenn Sie TDE lokal mit einem dateibasierten Schlüssel testen möchten, müssen Sie zuerst einen 32-Byte-KEK auf Ihrem Computer generieren.

    1. Erstellen Sie das Verzeichnis, generieren Sie den Schlüssel und legen Sie die entsprechenden Berechtigungen fest.

      KEK_DIR=KEK_DIR
      mkdir -p $KEK_DIR
      sudo chown 999:999 $KEK_DIR
      openssl rand -base64 32 | sudo tee $KEK_DIR/key
      sudo chmod 0755 $KEK_DIR/key
    2. Initialisieren Sie die Datenbank, indem Sie die lokale Datei-URI als KEK-URL übergeben.

      sudo PGPASSWORD=POSTGRES_PASSWORD \
      PGDATA=DATA_DIR \
      POSTGRES_INITDB_ARGS="--tde-kek-url=file:///$KEK_DIR/key" \
      /usr/lib/postgresql/18/bin/alloydbomniproduct_major_version_numeric-setup initdb

      Ersetzen Sie Folgendes:

      • POSTGRES_PASSWORD: das Passwort für den Datenbanknutzer.
      • DATA_DIR: das lokale Verzeichnis, das als Datenvolume für AlloyDB Omni eingebunden werden soll, z. B. /local/data.
      • KEK_DIR: das Verzeichnis, in dem der lokale dateibasierte KEK gespeichert ist, z. B. /tmp/alloydb/kms.
  3. Nachdem die Datenbank initialisiert wurde, folgen Sie der Anleitung unter AlloyDB Omni mit RPM installieren, um die Datenbank vorzubereiten, den Host einzurichten und den systemd Dienst zu starten.

  4. Wenn Sie TDE für Spaltencache-Daten aktivieren möchten, die in den SSD-Speicher ausgelagert wurden, stellen Sie eine Verbindung zu Ihrer Datenbankinstanz her und führen Sie die folgende Abfrage aus:

    ALTER SYSTEM SET google_columnar_engine.enable_tde_for_storage_cache = 'on';
    
  5. Starten Sie den Datenbankserver neu, damit die Änderungen wirksam werden.

Referenzen zu TDE-Messwerten

Alle TDE-Messwerte können im Monitoring-Agent von AlloyDB Omni angezeigt werden. 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 aktivierten TDE. 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 in den SSD-Speicher ausgelagert wurden. Nicht zutreffend Zähler
tde_ce_cache_ssd_blocks_decrypted Anzahl der entschlüsselten spaltenbasierten Cache-Blöcke, die in den 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 in den 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 in den SSD-Speicher ausgelagert wurden. Nicht zutreffend Mikrosekunden Zähler