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 Key Management Service (KMS) requises (pour HashiCorp Vault ou Thales CipherTrust Manager) et l'option --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
- Consultez Planifier l'installation d'AlloyDB Omni.
- Lorsque vous planifiez votre déploiement AlloyDB Omni avec le TDE activé, tenez compte de l'utilisation supplémentaire du processeur en fonction de la charge de travail et du volume de données prévus. Le chiffrement et le déchiffrement sont des opérations gourmandes en ressources de calcul.
- 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
- Consultez Planifier l'installation d'AlloyDB Omni.
- Lorsque vous planifiez votre déploiement AlloyDB Omni avec le TDE activé, tenez compte de l'utilisation supplémentaire du processeur en fonction de la charge de travail et du volume de données prévus. Le chiffrement et le déchiffrement sont des opérations gourmandes en ressources de calcul.
- 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 Key Management Service (KMS) et les identifiants d'authentification nécessaires lors de l'initialisation de la base de données. Vous pouvez configurer HashiCorp Vault (à l'aide de l'authentification jwt) ou Thales CipherTrust Manager (à l'aide de l'authentification par nom d'utilisateur et mot de passe).
Installez AlloyDB Omni à l'aide de RPM pour préparer votre environnement et installer le package RPM AlloyDB Omni.
Initialisez la base de données.
HashiCorp Vault KMS
Utilisez cette approche pour les charges de travail de production avec HashiCorp Vault.
Exécutez la commande suivante pour initialiser la base de données avec le TDE activé :
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
Remplacez les éléments suivants :
POSTGRES_PASSWORD: mot de passe de l'utilisateur de la base de données.DATA_DIR: répertoire local à monter en tant que volume de données pour AlloyDB Omni (par exemple,/local/data).JWT_AUTH_ENGINE_MOUNT: chemin d'accès au point de montage du moteur d'authentification HashiCorp Vault (par exemple,/auth/jwt).JWT_FILE_PATH: chemin d'accès au JWT Vault stocké sur vos nœuds (par 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: chemin d'accès aux certificats de la connexion Vault sur vos nœuds (par 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 (par exemple,vault://127.0.0.1:8200/v1/secret/data/alloydb_kek).
Pour créer un fichier de remplacement pour
alloydbomni18.servicedans/etc/systemd/system/alloydbomni18.service.d/override.conf, ajoutez les éléments suivants au fichieroverride.conf:[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"
Remplacez les éléments suivants :
JWT_AUTH_ENGINE_MOUNT: chemin d'accès au point de montage du moteur d'authentification HashiCorp Vault (par exemple,/auth/jwt).JWT_FILE_PATH: chemin d'accès au JWT Vault stocké sur vos nœuds (par 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: chemin d'accès aux certificats de la connexion Vault sur vos nœuds (par exemple,/tde-tls). Si aucune valeur n'est définie, les certificats du magasin de confiance par défaut sont utilisés.
Pour appliquer les modifications, rechargez le démon systemd.
sudo systemctl daemon-reload
Thales CipherTrust KMS
Utilisez cette approche pour les charges de travail de production avec Thales CipherTrust Manager.
Exécutez la commande suivante pour initialiser la base de données avec le TDE activé :
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
Remplacez les éléments suivants :
POSTGRES_PASSWORD: mot de passe de l'utilisateur de la base de données.DATA_DIR: répertoire local à monter en tant que volume de données pour AlloyDB Omni (par 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: chemin d'accès aux certificats (ca.crt,tls.crtettls.key) de la connexion CipherTrust Manager sur vos nœuds (par 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 (par exemple,ciphertrust://10.0.0.1:443/api/v1/vault/secrets/alloydb_kek).
Pour créer un fichier de remplacement pour
alloydbomni18.servicedans/etc/systemd/system/alloydbomni18.service.d/override.conf, ajoutez les éléments suivants au fichieroverride.conf:[Service] Environment="CIPHERTRUST_USER=CIPHERTRUST_USERNAME" Environment="CIPHERTRUST_PASSWORD=CIPHERTRUST_PASSWORD" Environment="CIPHERTRUST_CERT_PATH=CIPHERTRUST_CERT_PATH"
Remplacez les éléments suivants :
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: chemin d'accès aux certificats (ca.crt,tls.crtettls.key) de la connexion CipherTrust Manager sur vos nœuds (par exemple,/tde-tls). Si aucune valeur n'est définie, les certificats du magasin de confiance par défaut sont utilisés.
Pour appliquer les modifications, rechargez le démon systemd.
sudo systemctl daemon-reload
KMS basé sur des fichiers
Utilisez cette approche uniquement à des fins de test.
Pour tester le TDE localement à l'aide d'une clé basée sur un fichier, vous devez d'abord générer une KEK de 32 octets sur votre ordinateur.
Créez le répertoire, générez la clé et définissez les autorisations appropriées.
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
Initialisez la base de données en transmettant l'URI du fichier local en tant qu'URL de votre KEK.
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
Remplacez les éléments suivants :
POSTGRES_PASSWORD: mot de passe de l'utilisateur de la base de données.DATA_DIR: répertoire local à monter en tant que volume de données pour AlloyDB Omni (par exemple,/local/data).KEK_DIR: répertoire dans lequel la KEK locale basée sur un fichier est stockée (par exemple,/tmp/alloydb/kms).
Une fois la base de données initialisée, suivez les instructions de la section Installer AlloyDB Omni à l'aide de RPM pour préparer la base de données, configurer l'hôte et démarrer le service
systemd.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 froid chiffrés. | Non applicable | compteur | |
tde_chill_cache_blocks_decrypted |
Nombre de blocs de cache froid déchiffrés. | Non applicable | compteur | |
tde_chill_cache_blocks_total_encryption_time_us |
Temps total passé à chiffrer les blocs de cache froid. | Non applicable | microsecondes | compteur |
tde_chill_cache_blocks_total_decryption_time_us |
Temps total passé à déchiffrer les blocs de cache froid. | 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 |