Vous pouvez sécuriser vos données au repos et protéger les informations sensibles en activant le chiffrement transparent des données (TDE) dans AlloyDB Omni. Ce document explique comment créer un cluster compatible avec le TDE en fournissant les variables d'environnement requises pour Key Management Service (KMS) (pour HashiCorp Vault ou Thales CipherTrust Manager) et l'indicateur --tde-kek-url dans la variable d'environnement POSTGRES_INITDB_ARGS lors de l'initialisation de la base de données.
Avant de commencer
HashiCorp Vault KMS
- Configurez le moteur de secrets KV-V2 de HashiCorp Vault pour vous assurer que le chemin d'accès à la clé de chiffrement de clé (KEK) et le jeton Web JSON (JWT) sont disponibles.
- Vérifiez qu'AlloyDB Omni est autorisé à lire le fichier de jeton Web JSON (JWT), qui est le jeton d'authentification.
Thales CipherTrust KMS
- Configurez Thales CipherTrust Manager pour vous assurer que votre clé de chiffrement de clé (KEK) secrète est créée et exportable.
- Vérifiez que vous disposez d'un compte utilisateur CipherTrust Manager (
usernameetpassword) autorisé à s'authentifier et à exporter le secret KEK.
Créer le cluster
Pour créer un cluster compatible avec le TDE, vous devez transmettre la configuration et les identifiants d'authentification nécessaires pour Key Management Service (KMS) lors de l'initialisation de la base de données. Suivez les instructions de la section
HashiCorp Vault KMS (à l'aide de l'jwt
authentification) ou de la section Thales CipherTrust KMS (à l'aide de l'authentification par nom d'utilisateur et mot de passe).
HashiCorp Vault KMS
Sélectionnez l'onglet correspondant à votre environnement d'exécution de conteneur pour initialiser AlloyDB Omni avec HashiCorp Vault.
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
Remplacez les éléments suivants :
CONTAINER_NAME: nom du conteneur à créer. Exemple :alloydb-tde.DATA_DIR: répertoire local à monter en tant que volume de données pour AlloyDB Omni. Exemple :/local/data.JWT_AUTH_ENGINE_MOUNT: chemin d'accès où le moteur d'authentification HashiCorp Vault est monté. Exemple :/auth/jwt.JWT_FILE_PATH: chemin d'accès où le JWT Vault est stocké sur vos nœuds. Exemple :/tde-tls/jwt-token.- Facultatif :
VAULT_ROLE: rôle client défini dans votre configuration Vault qui permet à HashiCorp Vault de vérifier l'authenticité du jeton JWT. VAULT_CERT_PATH_ON_DISK: chemin d'accès aux certificats Vault sur la machine hôte. Exemple :/local/vault/config.VAULT_CERT_PATH: chemin d'accès où se trouvent les certificats de la connexion Vault dans votre conteneur. Exemple :/tde-tls. Si aucune valeur n'est définie, les certificats du magasin de confiance par défaut sont utilisés.KEK_URL: URL complète de la KEK dans HashiCorp Vault. Utilisezvaultcomme protocole pour spécifier HashiCorp Vault comme fournisseur KMS. Exemple :vault://127.0.0.1:8200/v1/secret/data/alloydb_kek.IMAGE_TAG: utilisez18.4.0pour la dernière image Debian ou18.4.0-ubipour la dernière image UBI.
Thales CipherTrust KMS
Sélectionnez l'onglet correspondant à votre environnement d'exécution de conteneur pour initialiser AlloyDB Omni avec Thales CipherTrust Manager.
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
Remplacez les éléments suivants :
CONTAINER_NAME: nom du conteneur à créer. Exemple :alloydb-tde.DATA_DIR: répertoire local à monter en tant que volume de données pour AlloyDB Omni. Exemple :/local/data.CIPHERTRUST_USERNAME: nom d'utilisateur utilisé pour l'authentification auprès de Thales CipherTrust Manager.CIPHERTRUST_PASSWORD: mot de passe de l'utilisateur Thales CipherTrust Manager.CIPHERTRUST_CERT_PATH_ON_DISK: chemin d'accès aux certificats TLS CipherTrust Manager sur la machine hôte. Exemple :/local/ciphertrust/certs.CIPHERTRUST_CERT_PATH: chemin d'accès où se trouvent les certificats de la connexion CipherTrust Manager (ca.crt,tls.crtettls.key) dans votre conteneur. Exemple :/tde-tls. Si aucune valeur n'est définie, les certificats du magasin de confiance par défaut sont utilisés.KEK_URL: URL complète de la KEK dans Thales CipherTrust Manager. Utilisezciphertrustcomme protocole pour spécifier Thales CipherTrust Manager comme fournisseur KMS. Exemple :ciphertrust://10.0.0.1:443/api/v1/vault/secrets/alloydb_kek.IMAGE_TAG: utilisez18.4.0pour la dernière image Debian ou18.4.0-ubipour la dernière image UBI.
Pour activer le TDE pour les données de cache du moteur de données en colonnes déversées dans le stockage SSD, connectez-vous à votre instance de base de données et exécutez la requête suivante :
ALTER SYSTEM SET google_columnar_engine.enable_tde_for_storage_cache = 'on';
Redémarrez votre serveur de base de données pour que les modifications prennent effet.
Documentation de référence sur les métriques TDE
Vous pouvez afficher toutes les métriques TDE dans l'agent de surveillance d'AlloyDB Omni. Le tableau suivant décrit chaque métrique.
| Nom | Description | Libellé | Unité | Type |
|---|---|---|---|---|
alloydb_omni_database_tde_data_blocks_decrypted_count_total |
Nombre de blocs de données déchiffrés. | Non applicable | compteur | |
alloydb_omni_database_tde_data_blocks_encrypted_count_total |
Nombre de blocs de données chiffrés. | Non applicable | compteur | |
alloydb_omni_database_tde_data_decryption_time_us_total |
Temps total passé à déchiffrer les blocs de données. | Non applicable | microsecondes | compteur |
alloydb_omni_database_tde_data_encryption_time_us_total |
Temps total passé à chiffrer les blocs de données. | Non applicable | microsecondes | compteur |
alloydb_omni_database_tde_enabled |
État d'activation du TDE. | Non applicable | jauge | |
alloydb_omni_database_tde_kek_info |
Informations sur la KEK du TDE. |
|
jauge | |
alloydb_omni_database_tde_temp_blocks_decrypted_count_total |
Nombre de blocs temporaires déchiffrés. | Non applicable | compteur | |
alloydb_omni_database_tde_temp_blocks_encrypted_count_total |
Nombre de blocs temporaires chiffrés. | Non applicable | compteur | |
alloydb_omni_database_tde_temp_decryption_time_us_total |
Temps total passé à déchiffrer les blocs temporaires. | Non applicable | microsecondes | compteur |
alloydb_omni_database_tde_temp_encryption_time_us_total |
Temps total passé à chiffrer les blocs temporaires. | Non applicable | microsecondes | compteur |
alloydb_omni_database_tde_wal_blocks_decrypted_count_total |
Nombre de blocs WAL déchiffrés. | Non applicable | compteur | |
alloydb_omni_database_tde_wal_blocks_encrypted_count_total |
Nombre de blocs WAL chiffrés. | Non applicable | compteur | |
alloydb_omni_database_tde_wal_decryption_time_us_total |
Temps total passé à déchiffrer les blocs WAL. | Non applicable | microsecondes | compteur |
alloydb_omni_database_tde_wal_encryption_time_us_total |
Temps total passé à chiffrer les blocs WAL. | Non applicable | microsecondes | compteur |
tde_chill_cache_blocks_encrypted |
Nombre de blocs de cache chill chiffrés. | Non applicable | compteur | |
tde_chill_cache_blocks_decrypted |
Nombre de blocs de cache chill déchiffrés. | Non applicable | compteur | |
tde_chill_cache_blocks_total_encryption_time_us |
Temps total passé à chiffrer les blocs de cache chill. | Non applicable | microsecondes | compteur |
tde_chill_cache_blocks_total_decryption_time_us |
Temps total passé à déchiffrer les blocs de cache chill. | Non applicable | microsecondes | compteur |
tde_ce_cache_ssd_blocks_encrypted |
Nombre de blocs de cache en colonnes déversés dans le stockage SSD qui ont été chiffrés. | Non applicable | compteur | |
tde_ce_cache_ssd_blocks_decrypted |
Nombre de blocs de cache en colonnes déversés dans le stockage SSD qui ont été déchiffrés. | Non applicable | compteur | |
tde_ce_cache_ssd_blocks_total_encryption_time_us |
Temps total passé à chiffrer les blocs de cache en colonnes déversés dans le stockage SSD. | Non applicable | microsecondes | compteur |
tde_ce_cache_ssd_blocks_total_decryption_time_us |
Temps total passé à déchiffrer les blocs de cache en colonnes déversés dans le stockage SSD. | Non applicable | microsecondes | compteur |