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 Umgebungsvariablen für den Key Management Service (KMS) (für HashiCorp Vault oder Thales CipherTrust Manager) und das Flag --tde-kek-url in der Umgebungsvariable POSTGRES_INITDB_ARGS angeben.
Hinweis
HashiCorp Vault KMS
- 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. Ver- und Entschlüsselung sind rechenintensive Vorgänge.
- Konfigurieren Sie die KV-V2-Secrets-Engine von HashiCorp Vault, um sicherzustellen, dass der Pfad des Schlüsselverschlüsselungsschlüssels (Key Encryption Key, KEK) und das JSON-Webtoken (JWT) verfügbar sind.
- Prüfen Sie, ob AlloyDB Omni die Berechtigung zum Lesen der JSON-Webtoken-Datei (JWT) hat, die das Authentifizierungstoken ist.
Thales CipherTrust KMS
- 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. Ver- und Entschlüsselung sind rechenintensive Vorgänge.
- Konfigurieren Sie Thales CipherTrust Manager so, dass Ihr Secret Key Encryption Key (KEK) erstellt und exportiert werden kann.
- Prüfen Sie, ob Sie ein CipherTrust Manager-Nutzerkonto (
usernameundpassword) mit der Berechtigung zum Authentifizieren und Exportieren des KEK-Secrets haben.
Cluster erstellen
Wenn Sie einen TDE-fähigen Cluster erstellen möchten, müssen Sie bei der Initialisierung der Datenbank die erforderliche Key Management Service (KMS)-Konfiguration und die Authentifizierungsdaten übergeben. Sie können HashiCorp Vault (mit jwt-Authentifizierung) oder Thales CipherTrust Manager (mit Authentifizierung per Nutzername und Passwort) konfigurieren.
Installieren Sie AlloyDB Omni mit RPM um Ihre Umgebung vorzubereiten und das AlloyDB Omni-RPM-Paket zu installieren.
Initialisieren Sie die Datenbank.
HashiCorp Vault KMS
Verwenden Sie diesen Ansatz für Produktionsarbeitslasten mit HashiCorp Vault.
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/alloydbomni18-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 Sievaultals Protokoll, um HashiCorp Vault als KMS-Anbieter anzugeben, z. B.vault://127.0.0.1:8200/v1/secret/data/alloydb_kek.
Wenn Sie eine Überschreibungsdatei für
alloydbomni18.servicein/etc/systemd/system/alloydbomni18.service.d/override.conferstellen möchten, fügen Sie der Dateioverride.confFolgendes hinzu:[Service] Environment="VAULT_AUTH_TYPE=jwt" 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:
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.
Laden Sie den systemd-Daemon neu, um die Änderungen zu übernehmen.
sudo systemctl daemon-reload
Thales CipherTrust KMS
Verwenden Sie diesen Ansatz für Produktionsarbeitslasten mit Thales CipherTrust Manager.
Führen Sie den folgenden Befehl aus, um die Datenbank mit aktivierter TDE zu initialisieren:
sudo PGPASSWORD=POSTGRES_PASSWORD \ PGDATA=DATA_DIR \ CIPHERTRUST_USER=CIPHERTRUST_USERNAME \ CIPHERTRUST_PASSWORD=CIPHERTRUST_PASSWORD \ CIPHERTRUST_CERT_PATH=CIPHERTRUST_CERT_PATH \ POSTGRES_INITDB_ARGS="--tde-kek-url=KEK_URL" \ /usr/lib/postgresql/18/bin/alloydbomni18-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.CIPHERTRUST_USERNAME: Der Nutzername, der für die Authentifizierung bei Thales CipherTrust Manager verwendet wird.CIPHERTRUST_PASSWORD: Das Passwort für den Thales CipherTrust Manager-Nutzer.CIPHERTRUST_CERT_PATH: Der Pfad, unter dem sich die Zertifikate (ca.crt,tls.crtundtls.key) für die CipherTrust Manager-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 Thales CipherTrust Manager. Verwenden Sieciphertrustals Protokoll, um Thales CipherTrust Manager als KMS-Anbieter anzugeben, z. B.ciphertrust://10.0.0.1:443/api/v1/vault/secrets/alloydb_kek.
Wenn Sie eine Überschreibungsdatei für
alloydbomni18.servicein/etc/systemd/system/alloydbomni18.service.d/override.conferstellen möchten, fügen Sie der Dateioverride.confFolgendes hinzu:[Service] Environment="CIPHERTRUST_USER=CIPHERTRUST_USERNAME" Environment="CIPHERTRUST_PASSWORD=CIPHERTRUST_PASSWORD" Environment="CIPHERTRUST_CERT_PATH=CIPHERTRUST_CERT_PATH"
Ersetzen Sie Folgendes:
CIPHERTRUST_USERNAME: Der Nutzername, der für die Authentifizierung bei Thales CipherTrust Manager verwendet wird.CIPHERTRUST_PASSWORD: Das Passwort für den Thales CipherTrust Manager-Nutzer.CIPHERTRUST_CERT_PATH: Der Pfad, unter dem sich die Zertifikate (ca.crt,tls.crtundtls.key) für die CipherTrust Manager-Verbindung auf Ihren Knoten befinden, z. B./tde-tls. Wenn nicht festgelegt, werden die Zertifikate im Standard-Trust Store verwendet.
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.
Erstellen Sie das Verzeichnis, generieren Sie den Schlüssel und legen Sie die entsprechenden Berechtigungen fest.
KEK_DIR=KEK_DIR sudo mkdir -p $KEK_DIR openssl rand -base64 32 | sudo tee $KEK_DIR/key >/dev/null sudo chown -R postgres:postgres $KEK_DIR sudo chmod 0700 $KEK_DIR sudo chmod 0600 $KEK_DIR/key
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/alloydbomni18-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.
Nachdem die Datenbank initialisiert wurde, folgen Sie der Anleitung unter AlloyDB Omni mit RPM installieren, um die Datenbank vorzubereiten, den Host einzurichten und den
systemdDienst zu starten.Wenn Sie TDE für Spaltencache-Daten aktivieren möchten, die auf 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';Starten Sie den Datenbankserver neu, damit die Änderungen wirksam werden.
Referenz 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 aktivierten TDE. | Nicht zutreffend | Gauge | |
alloydb_omni_database_tde_kek_info |
TDE-KEK-Informationen. |
|
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 Spaltencache-Blöcken, die auf SSD-Speicher ausgelagert wurden. | Nicht zutreffend | Mikrosekunden | Zähler |