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 Umgebungsvariablen POSTGRES_INITDB_ARGS angeben.
Hinweis
HashiCorp Vault KMS
- Konfigurieren Sie die KV-V2-Secrets-Engine von HashiCorp Vault, um sicherzustellen, dass der Pfad des Key Encryption Key (KEK) und das JSON Web Token (JWT) verfügbar sind.
- Prüfen Sie, ob AlloyDB Omni die Berechtigung hat, die JWT-Datei (JSON Web Token) zu lesen, die das Authentifizierungstoken ist.
Thales CipherTrust KMS
- Konfigurieren Sie Thales CipherTrust Manager so, dass Ihr geheimer 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 KMS-Konfiguration (Key Management Service) und die Authentifizierungsdaten übergeben. Folgen Sie der Anleitung im
Abschnitt HashiCorp Vault KMS (mit jwt
Authentifizierung) oder im Abschnitt Thales CipherTrust KMS (mit Authentifizierung per Nutzername und Passwort).
HashiCorp Vault KMS
Wählen Sie den Tab für Ihre Containerlaufzeit aus, um AlloyDB Omni mit HashiCorp Vault zu initialisieren.
Docker
docker run -d --name CONTAINER_NAME \ --network host \ -v DATA_DIR:/var/lib/postgresql/data \ -v VAULT_CERT_PATH_ON_DISK:VAULT_CERT_PATH \ -e VAULT_AUTH_TYPE=jwt \ -e VAULT_AUTH_MOUNT=JWT_AUTH_ENGINE_MOUNT \ -e VAULT_JWT_PATH=JWT_FILE_PATH \ -e VAULT_ROLE=VAULT_ROLE \ -e VAULT_CERT_PATH=VAULT_CERT_PATH \ -e POSTGRES_INITDB_ARGS=" \ --tde-kek-url=KEK_URL" \ google/alloydbomni:IMAGE_TAG
Docker
docker run -d --name CONTAINER_NAME \ --network host \ -v DATA_DIR:/var/lib/postgresql/data \ -v VAULT_CERT_PATH_ON_DISK:VAULT_CERT_PATH \ -e VAULT_AUTH_TYPE=jwt \ -e VAULT_AUTH_MOUNT=JWT_AUTH_ENGINE_MOUNT \ -e VAULT_JWT_PATH=JWT_FILE_PATH \ -e VAULT_ROLE=VAULT_ROLE \ -e VAULT_CERT_PATH=VAULT_CERT_PATH \ -e POSTGRES_INITDB_ARGS=" \ --tde-kek-url=KEK_URL" \ google/alloydbomni:IMAGE_TAG
Podman
podman run -d --name CONTAINER_NAME \ --network host \ -v DATA_DIR:/var/lib/postgresql/data \ -v VAULT_CERT_PATH_ON_DISK:VAULT_CERT_PATH \ -e VAULT_AUTH_TYPE=jwt \ -e VAULT_AUTH_MOUNT=JWT_AUTH_ENGINE_MOUNT \ -e VAULT_JWT_PATH=JWT_FILE_PATH \ -e VAULT_ROLE=VAULT_ROLE \ -e VAULT_CERT_PATH=VAULT_CERT_PATH \ -e POSTGRES_INITDB_ARGS=" \ --tde-kek-url=KEK_URL" \ google/alloydbomni:IMAGE_TAG
Podman
podman run -d --name CONTAINER_NAME \ --network host \ -v DATA_DIR:/var/lib/postgresql/data \ -v VAULT_CERT_PATH_ON_DISK:VAULT_CERT_PATH \ -e VAULT_AUTH_TYPE=jwt \ -e VAULT_AUTH_MOUNT=JWT_AUTH_ENGINE_MOUNT \ -e VAULT_JWT_PATH=JWT_FILE_PATH \ -e VAULT_ROLE=VAULT_ROLE \ -e VAULT_CERT_PATH=VAULT_CERT_PATH \ -e POSTGRES_INITDB_ARGS=" \ --tde-kek-url=KEK_URL" \ google/alloydbomni:IMAGE_TAG
Ersetzen Sie Folgendes:
CONTAINER_NAME: der Name des zu erstellenden Containers. Beispiel:alloydb-tde.DATA_DIR: das lokale Verzeichnis, das als Datenvolume für AlloyDB Omni eingebunden werden soll. Beispiel:/local/data.JWT_AUTH_ENGINE_MOUNT: Pfad, unter dem die HashiCorp Vault-Authentifizierungs-Engine eingebunden ist. Beispiel:/auth/jwt.JWT_FILE_PATH: Pfad, unter dem das Vault-JWT auf Ihren Knoten gespeichert ist. Beispiel:/tde-tls/jwt-token.- Optional:
VAULT_ROLE: die in Ihrer Vault-Konfiguration definierte Clientrolle, mit der HashiCorp Vault die Authentizität des JWT-Tokens überprüfen kann. VAULT_CERT_PATH_ON_DISK: Pfad zu Vault-Zertifikaten auf dem Host. Beispiel:/local/vault/config.VAULT_CERT_PATH: Pfad, unter dem sich die Zertifikate für die Vault-Verbindung in Ihrem Container befinden. Beispiel:/tde-tls. Wenn nichts festgelegt ist, werden die Zertifikate im Standard-Trust Store verwendet.KEK_URL: die voll 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.IMAGE_TAG: Verwenden Sie18.4.0für das neueste Debian-Image oder18.4.0-ubifür das neueste UBI-Image.
Thales CipherTrust KMS
Wählen Sie den Tab für Ihre Containerlaufzeit aus, um AlloyDB Omni mit Thales CipherTrust Manager zu initialisieren.
Docker
docker run -d --name CONTAINER_NAME \ --network host \ -v DATA_DIR:/var/lib/postgresql/data \ -v CIPHERTRUST_CERT_PATH_ON_DISK:CIPHERTRUST_CERT_PATH \ -e CIPHERTRUST_USER=CIPHERTRUST_USERNAME \ -e CIPHERTRUST_PASSWORD=CIPHERTRUST_PASSWORD \ -e CIPHERTRUST_CERT_PATH=CIPHERTRUST_CERT_PATH \ -e POSTGRES_INITDB_ARGS=" \ --tde-kek-url=KEK_URL" \ google/alloydbomni:IMAGE_TAG
Docker
docker run -d --name CONTAINER_NAME \ --network host \ -v DATA_DIR:/var/lib/postgresql/data \ -v CIPHERTRUST_CERT_PATH_ON_DISK:CIPHERTRUST_CERT_PATH \ -e CIPHERTRUST_USER=CIPHERTRUST_USERNAME \ -e CIPHERTRUST_PASSWORD=CIPHERTRUST_PASSWORD \ -e CIPHERTRUST_CERT_PATH=CIPHERTRUST_CERT_PATH \ -e POSTGRES_INITDB_ARGS=" \ --tde-kek-url=KEK_URL" \ google/alloydbomni:IMAGE_TAG
Podman
podman run -d --name CONTAINER_NAME \ --network host \ -v DATA_DIR:/var/lib/postgresql/data \ -v CIPHERTRUST_CERT_PATH_ON_DISK:CIPHERTRUST_CERT_PATH \ -e CIPHERTRUST_USER=CIPHERTRUST_USERNAME \ -e CIPHERTRUST_PASSWORD=CIPHERTRUST_PASSWORD \ -e CIPHERTRUST_CERT_PATH=CIPHERTRUST_CERT_PATH \ -e POSTGRES_INITDB_ARGS=" \ --tde-kek-url=KEK_URL" \ google/alloydbomni:IMAGE_TAG
Podman
podman run -d --name CONTAINER_NAME \ --network host \ -v DATA_DIR:/var/lib/postgresql/data \ -v CIPHERTRUST_CERT_PATH_ON_DISK:CIPHERTRUST_CERT_PATH \ -e CIPHERTRUST_USER=CIPHERTRUST_USERNAME \ -e CIPHERTRUST_PASSWORD=CIPHERTRUST_PASSWORD \ -e CIPHERTRUST_CERT_PATH=CIPHERTRUST_CERT_PATH \ -e POSTGRES_INITDB_ARGS=" \ --tde-kek-url=KEK_URL" \ google/alloydbomni:IMAGE_TAG
Ersetzen Sie Folgendes:
CONTAINER_NAME: der Name des zu erstellenden Containers. Beispiel:alloydb-tde.DATA_DIR: das lokale Verzeichnis, das als Datenvolume für AlloyDB Omni eingebunden werden soll. Beispiel:/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_ON_DISK: Pfad zu CipherTrust Manager-TLS-Zertifikaten auf dem Host. Beispiel:/local/ciphertrust/certs.CIPHERTRUST_CERT_PATH: Pfad, unter dem sich die Zertifikate für die CipherTrust Manager-Verbindung (ca.crt,tls.crtundtls.key) in Ihrem Container befinden. Beispiel:/tde-tls. Wenn nichts festgelegt ist, werden die Zertifikate im Standard-Trust Store verwendet.KEK_URL: die voll 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.IMAGE_TAG: Verwenden Sie18.4.0für das neueste Debian-Image oder18.4.0-ubifür das neueste UBI-Image.
Wenn Sie TDE für spaltenbasierte Engine-Cache-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 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. |
|
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 Spalten-Cache-Blöcke, die auf SSD-Speicher ausgelagert wurden. | Nicht zutreffend | Zähler | |
tde_ce_cache_ssd_blocks_decrypted |
Anzahl der entschlüsselten Spalten-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 Spalten-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 |