Rotation de la clé de cryptage ThingWorx Flow
Les données sensibles, notamment les connexions, les autorisations et les actions de processus, sont cryptées dans ThingWorx Flow. Il peut être nécessaire de modifier la clé de cryptage utilisée sans perdre la possibilité d'utiliser des données précédemment chiffrées. La procédure suivante décrit la définition d'une nouvelle clé de cryptage.
Processus de déploiement sur site
1. Générez une nouvelle paire de clés (nom de la clé et clé secrète).
Vous pouvez définir n'importe quel nom pour la clé.
La longueur de la clé secrète doit être un multiple de 16. Pour la créer, la méthode la plus simple consiste à utiliser un générateur de GUID.
* 
Le GUID ne doit contenir aucun trait d'union (-).
Dans cet exemple, le nom de la clé est newkey et sa valeur 0EE0D33AC67E4389AB2B46123729B875.
2. Déchiffrez le fichier de clé.
a. Accédez au répertoire flow-installer, puis copiez sec_key à partir du fichier settings.json. Cet élément sera utilisé ultérieurement dans l'outil de clé.
b. Accédez au répertoire ThingWorxFlow.
c. Liez l'outil de clé en exécutant la commande suivante :
cd /d C:\ThingWorxFlow\cryptography\tw-security-common-nodejs
npm link
d. Déchiffrez le fichier de clé dans un fichier temporaire en exécutant les commandes suivantes :
cd /d C:\ThingWorxFlow
C:\ThingWorxFlow> PtcOrchKeyFileTool --secret "<value from sec_key>" --keyfile-location "misc\keyfile-key" --plaintext "keys.dec" --encrypted "cryptography\keys.enc" decrypt
e. Ajoutez une nouvelle clé au fichier de texte en clair, comme keys.dec dans cet exemple. Les informations de connexion pour RabbitMQ et Postgres sont stockées dans ce fichier.
f. Chiffrez le fichier temporaire dans le fichier de clé en exécutant la commande suivante :
C:\ThingWorxFlow> PtcOrchKeyFileTool --secret "<value from sec_key>" --keyfile-location "misc\keyfile-key" --plaintext"keys.dec"--encrypted "cryptography\keys.enc" encrypt
g. Supprimez le fichier temporaire (keys.dec).
3. Pour chaque service de flux, configurez le nom et la valeur de la clé de cryptage en procédant comme suit :
a. Modifiez le fichier deploymentConfig.json.
b. Définissez la propriété ACTIVE_ENCRYPTION_KEY sur le nouveau nom de clé.
Par exemple, si le nouveau nom de clé est "newkey", le fichier deploymentConfig.json doit contenir les éléments suivants :
{
"ACTIVE_ENCRYPTION_KEY": "newkey"
}
4. Redémarrez les services ThingWorx Flow.
Procédure de déploiement dans le Cloud ou un Cloud privé virtuel
1. Générez une nouvelle paire de clés (nom de la clé et clé secrète).
Vous pouvez définir n'importe quel nom pour la clé.
La longueur de la clé secrète doit être un multiple de 16. Pour la créer, la méthode la plus simple consiste à utiliser un générateur de GUID.
* 
Le GUID ne doit contenir aucun trait d'union (-).
Dans cet exemple, le nom de la clé est newkey et sa valeur 0EE0D33AC67E4389AB2B46123729B875.
2. Recherchez le fichier du secret de la clé. Le déploiement ThingWorx Flow inclut un secret de clé (intitulé <nom version>-keys). Ce secret contient la clé de cryptage active et les anciennes clés de cryptage (dans une structure JSON stockée dans oldEncKeys.json). Pour trouver le secret approprié, exécutez la commande suivante :
kubectl get secrets
3. Ouvrez le fichier de secret à modifier en exécutant la commande suivante :
kubectl edit secret <release name>-keys
Le fichier de secret contient plusieurs entrées, y compris la suivante :
ENCRYPTION_KEY:QVNERkdISktMMTIzNDU2Nw==
ACTIVE_ENCRYPTION_KEY_NAME:bXlrZXk=
oldEncKeys.json:e30=
4. Base64 décode les valeurs actuelles des entrées ENCRYPTION_KEY, ACTIVE_ENCRYPTION_KEY_NAME et oldEncKeys.json. Dans cet exemple, les résultats sont les suivants :
Pour ENCRYPTION_KEY, le décodage de la valeur QVNERkdISktMMTIzNDU2Nw== donne ASDFGHJKL1234567.
Pour ACTIVE_ENCRYPTION_KEY_NAME, le décodage de la valeur bXlrZXk= donne mykey.
Pour oldEncKeys.json, le décodage de la valeur e30= donne {}.
5. Base64 code les nouvelles valeurs des entrées ENCRYPTION_KEY, ACTIVE_ENCRYPTION_KEY_NAME et oldEncKeys.json. Dans cet exemple, les résultats sont les suivants :
Pour ENCRYPTION_KEY, le codage de la valeur 0EE0D33AC67E4389AB2B46123729B875 donne MEVFMEQzM0FDNjdFNDM4OUFCMkI0NjEyMzcyOUI4NzU=.
Pour ACTIVE_ENCRYPTION_KEY_NAME, le codage de la valeur newkey donne bmV3a2V5.
Pour oldEncKeys.json, le codage de l'ancienne paire de clés au format JSON {"mykey":"ASDFGHJKL1234567"} donne eyAibXlrZXkiOiAiQVNERkdISktMMTIzNDU2NyJ9.
6. Entrez les nouvelles valeurs dans le fichier de secret, puis enregistrez-le.
ENCRYPTION_KEY:MEVFMEQzM0FDNjdFNDM4OUFCMkI0NjEyMzcyOUI4NzU=
ACTIVE_ENCRYPTION_KEY_NAME:bmV3a2V5
oldEncKeys.json:eyAibXlrZXkiOiAiQVNERkdISktMMTIzNDU2NyJ9
7. Redémarrez tous les conteneurs de flux.