Créer un cluster compatible avec le chiffrement TDE

Sélectionnez une version de la documentation :

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 Vault requises et le flag --tde-kek-url dans la variable d'environnement POSTGRES_INITDB_ARGS lors de l'initialisation de la base de données.

Avant de commencer

  • Consultez Planifier l'installation d'AlloyDB Omni.
  • Lorsque vous planifiez votre déploiement AlloyDB Omni avec le TDE activé, veillez à tenir 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.

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 du service de gestion des clés (KMS) lors de l'initialisation de la base de données. Le seul type d'authentification compatible est jwt.

  1. Installez AlloyDB Omni à l'aide de RPM pour préparer votre environnement et installer le package RPM AlloyDB Omni.

  2. Initialisez la base de données.

    KMS HashiCorp Vault

    Utilisez cette approche pour les charges de travail de production.

    1. 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/alloydbomniproduct_major_version_numeric-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 cette option n'est pas 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. Utilisez vault comme protocole pour spécifier HashiCorp Vault comme fournisseur KMS (par exemple, vault://127.0.0.1:8200/v1/secrets/data/alloydb_kek).
    2. Pour créer un fichier de remplacement pour alloydbomni18.service dans /etc/systemd/system/alloydbomni18.service.d/override.conf, ajoutez les éléments suivants au fichier override.conf :

      [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"

      Remplacez les éléments suivants :

      • VAULT_AUTH_TYPE : type d'authentification à utiliser pour la connexion Vault. Seul jwt est compatible.
      • 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 cette option n'est pas définie, les certificats du magasin de confiance par défaut sont utilisés.
    3. Pour appliquer les modifications, rechargez le daemon 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 machine.

    1. Créez le répertoire, générez la clé et définissez les autorisations appropriées.

      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. 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/alloydbomniproduct_major_version_numeric-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).
  3. 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.

  4. 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';
    
  5. 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 du TDE. Non applicable jauge
alloydb_omni_database_tde_kek_info Informations sur la KEK du TDE.
  • kek_version: version de la KEK
    utilisée pour l'encapsulation de clé.
  • kek_url: Chemin d'accès complet
    à la KEK dans le KMS
  • kek_creation_timestamp :
    heure de création de la version de la KEK utilisée.
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