Créer un cluster compatible avec le chiffrement TDE

Sélectionnez une version de la documentation :

Avant de commencer

Créer le cluster

Pour créer un cluster compatible avec le chiffrement TDE, vous devez transmettre la configuration KMS (Key Management Service) et les identifiants d'authentification nécessaires lors de l'initialisation de la base de données. Le seul type d'authentification accepté 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.

    HashiCorp Vault KMS

    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/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 à installer en tant que volume de données pour AlloyDB Omni (par exemple, /local/data).
      • VAULT_AUTH_TYPE : type d'authentification à utiliser pour la connexion au coffre. Seule la région jwt est compatible.
      • JWT_AUTH_ENGINE_MOUNT : chemin d'accès où le moteur d'authentification HashiCorp Vault est installé (par exemple, /auth/jwt).
      • JWT_FILE_PATH : chemin d'accès où le jeton JWT du coffre-fort est stocké sur vos nœuds (par exemple, tde-tls/jwt-token).
      • (Facultatif) VAULT_ROLE : rôle client défini dans la configuration de votre coffre-fort qui permet à HashiCorp Vault de vérifier l'authenticité du jeton JWT.
      • VAULT_CERT_PATH : chemin d'accès aux certificats de la connexion au coffre-fort dans votre conteneur (par exemple, /tde-tls). Si ce paramètre n'est pas défini, les certificats du magasin de confiance par défaut sont utilisés.
      • KEK_URL : URL complète de la clé 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 alloydbomni.service in /etc/systemd/system/alloydbomni18.service.d/override.conf, ajoutez les éléments suivants au fichier override.conf :

      [Service]
      Environment="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"
    3. Pour appliquer les modifications, rechargez le daemon systemd.

      sudo systemctl daemon-reload

    KMS basé sur un fichier

    N'utilisez cette approche qu'à des fins de test.

    Pour tester le TDE en local à l'aide d'une clé basée sur un fichier, vous devez d'abord générer une clé 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 la clé de chiffrement de clé.

      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 à installer en tant que volume de données pour AlloyDB Omni (par exemple, /local/data).
      • KEK_DIR : répertoire dans lequel la clé 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.

Afficher les métriques TDE

Une fois le cluster initialisé, suivez les étapes ci-dessous pour vérifier que le TDE est activé et afficher les métriques TDE associées.

  1. Connectez-vous à votre base de données à l'aide de psql ou du client de votre choix. Pour obtenir des instructions détaillées sur la connexion à vos instances, consultez Exécuter AlloyDB Omni et s'y connecter.
  2. Exécutez la commande suivante :

    select * FROM pgsnap.g$tde_stats;
    

    Si le chiffrement TDE est activé, le résultat affiche des métriques TDE telles que l'état d'activation du chiffrement TDE, l'URL de la clé KEK, la version de la clé KEK et le code temporel de création de la clé KEK.

    Le tableau suivant explique la signification de 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 chiffrement transparent des données (TDE). Non applicable jauge
    alloydb_omni_database_tde_kek_info Informations sur le KEK TDE.
    • kek_version : version de la KEK
      utilisée pour l'encapsulation de clé.
    • kek_url : chemin d'accès complet
      à la clé KEK dans KMS
    • kek_creation_timestamp :
      Heure de création de la version de la clé 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é dans le chiffrement de bloc temporaire. 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