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.
| Mode | Entrée du workflow | E/S activité | Stocké dans notre base de données |
|---|---|---|---|
| Par défaut | clair | clair | oui (clair) |
| Chiffrement | chiffré | chiffré | oui (chiffré) |
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
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é 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
Deux modes sont disponibles :
full: chaque charge utile est chiffrée.partial: seuls les champs typés commeEncryptedStrFieldsont 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
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.