Chiffrement

Chiffrez toutes les charges utiles (entrées de workflow, E/S d'activité, données de signal) avant qu'elles ne quittent votre worker. La plateforme stocke les données chiffrées, et seuls vos workers peuvent les déchiffrer.

ModeEntrée du workflowE/S activitéStocké dans notre base de données
Par défautclairclairoui (clair)
Chiffrementchiffréchiffréoui (chiffré)
i
Information

Le chiffrement peut être combiné avec l’externalisation des payloads et la compression. Les payloads sont compressés et externalisés avant le chiffrement, qui intervient en dernier, si bien que l’orchestrateur ne voit jamais qu’une référence chiffrée.

Prérequis

Prérequis

Installez l'extra de chiffrement :

uv add "mistralai[workflow-payload-encryption]"

Cela installe cryptography, utilisé par le SDK pour le chiffrement AES-GCM.

Générez une clé

Générez une clé

Générez une clé AES-GCM 256 bits :

from cryptography.hazmat.primitives.ciphers.aead import AESGCM

key = AESGCM.generate_key(bit_length=256)
print(key.hex())

Enregistrez la clé dans votre gestionnaire de secrets. Toute personne ayant cette clé pourra lire les données de votre workflow.

Configurez vos workers

Configurez vos workers

Deux modes sont disponibles :

  • full : chaque charge utile est chiffrée.
  • partial : seuls les champs typés comme EncryptedStrField sont chiffrés.
TEMPORAL_PAYLOAD_ENCRYPTION__MODE=full
TEMPORAL_PAYLOAD_ENCRYPTION__MAIN_KEY=<your_hex_key>

Les charges utiles chiffrées apparaissent sous forme de <encrypted> dans les traces d'exécution et l'interface Studio.

Rotation des clés

Rotation des clés

Pour effectuer une rotation sans coupure, procédez ainsi :

  • Générez une nouvelle clé avec la méthode ci-dessus.

  • Promouvez la nouvelle clé et conservez l'ancienne comme clé secondaire pour que les workers puissent encore déchiffrer les exécutions en cours :

    TEMPORAL_PAYLOAD_ENCRYPTION__MAIN_KEY=<new_key>
    TEMPORAL_PAYLOAD_ENCRYPTION__SECONDARY_KEY=<old_key>
  • Attendez que les workflows démarrés avant la rotation soient terminés. Ce délai dépend de votre rétention plus la durée des workflows (30 jours par défaut).

  • Retirez l'ancienne clé en supprimant la variable SECONDARY_KEY.