Rotazione della chiave di crittografia di ThingWorx Flow
I dati sensibili, quali autorizzazioni e azioni del workflow, vengono crittografati in ThingWorx Flow. È possibile modificare la chiave di crittografia utilizzata per crittografare i dati sensibili senza perdere i dati crittografati in precedenza. Nelle sezioni riportate di seguito vengono fornite informazioni sull'impostazione di una nuova chiave di crittografia nei seguenti ambienti:
In locale
1. Generare una nuova coppia di chiavi con nome della chiave e segreto.
◦ È possibile impostare qualsiasi nome di chiave.
◦ La lunghezza del segreto deve essere un multiplo di 16. Per creare il segreto, è possibile utilizzare il generatore GUID. Il GUID non deve contenere trattini (-).
2. Viene utilizzato il valore del parametro secret per decrittografare il file keyfile-key. Per ottenere il valore del parametro secret, avviare il prompt dei comandi come amministratore nel computer su cui è installato ThingWorx Flow ed eseguire i comandi seguenti:
a. pm2 ls
Annotare il valore dell'ID di un servizio ThingWorx Flow qualsiasi.
b. pm2 env <ID>
, dove <id> è l'ID di un servizio ThingWorx Flow qualsiasi, ad esempio l'ID del servizio flow-api.
c. Copiare il valore della variabile CONFIG_IMAGE. Questo è il valore del parametro secret. Si tratta del valore del parametro secret che è necessario specificare al passo 3.
3. Per decrittografare il file della chiave, eseguire i comandi seguenti:
a. Passare a <Percorso_Installazione_ThingWorx_Flow>.
b. Eseguire i comandi seguenti:
cd <Percorso_Installazione_ThingWorx_Flow>\cryptography\tw-security-common-nodejs
Windows: npm link o Linux: sudo npm link
c. Eseguire il comando seguente per decrittografare keyfile-key in un file temporaneo:
PtcOrchKeyFileTool --secret <Valore IMMAGINE_CONFIG> --keyfile-location <Percorso_Installazione_ThingWorx_Flow>\misc\keyfile-key --plaintext <Percorso_Installazione_ThingWorx_Flow>\cryptography\keys.dec --encrypted <Percorso_Installazione_ThingWorx_Flow>\cryptography\keys.enc decrypt
Questo comando crea un nuovo file keys.dec decrittografato nella cartella <Percorso_Installazione_ThingWorx_Flow>\cryptography\.
d. Aggiornare il file keys.dec per aggiungere la nuova chiave.
Ad esempio: "newkey": "0EE0D33AC67E4389AB2B46123729B875",
e. Creare un backup del file <Percorso_Installazione_ThingWorx_Flow>\cryptography\keys.enc.
f. Eliminare il file <Percorso_Installazione_ThingWorx_Flow>\cryptography\keys.enc.
g. Per creare il nuovo file keys.enc crittografato, eseguire il comando seguente:
PtcOrchKeyFileTool --secret <Valore IMMAGINE_CONFIG> --keyfile-location <Percorso_Installazione_ThingWorx_Flow>\misc\keyfile-key --plaintext <Percorso_Installazione_ThingWorx_Flow>\cryptography\keys.dec --encrypted <Percorso_Installazione_ThingWorx_Flow>\cryptography\keys.enc encrypt
h. Eliminare il file keys.dec decrittografato.
4. Nei file riportati di seguito impostare il valore della proprietà activeKeyName sul nuovo nome della chiave per configurare la nuova chiave di crittografia.
◦ <Percorso_Installazione_ThingWorx_Flow>\modules\engine\config\security-common\config.json
◦ <Percorso_Installazione_ThingWorx_Flow>\modules\exchange\config\security-common\config.json
◦ <Percorso_Installazione_ThingWorx_Flow>\modules\lookup\config\security-common\config.json
◦ <Percorso_Installazione_ThingWorx_Flow>\modules\oauth\config\security-common\config.json
◦ <Percorso_Installazione_ThingWorx_Flow>\modules\trigger\config\security-common\config.json
◦ <Percorso_Installazione_ThingWorx_Flow>\modules\ux\config\security-common\config.json
Ad esempio per il nome della chiave, newkey, impostare quanto riportato di seguito.
{"
activeKeyName": "newkey"
}
5. Riavviare i servizi di ThingWorx Flow.
Cloud o cloud privato virtuale
1. Generare una nuova coppia di chiavi con nome della chiave e segreto.
◦ È possibile impostare qualsiasi nome di chiave.
◦ La lunghezza del segreto deve essere un multiplo di 16. Per creare il segreto, è possibile utilizzare il generatore GUID. Il GUID non deve contenere trattini (-).
2. La distribuzione di ThingWorx Flow include un file chiave-segreto denominato <nome release>-keys. Questo file chiave-segreto contiene la chiave di crittografia attiva e le chiavi di crittografia obsolete in formato JSON memorizzate in oldEncKeys.json. Per trovare il file chiave-segreto corretto, eseguire il comando seguente:
kubectl get secrets
3. Per aprire il file segreto per la modifica, eseguire il comando seguente:
kubectl edit secret <release name>-keys
Il file segreto contiene le voci riportate di seguito.
◦ ENCRYPTION_KEY:QVNERkdISktMMTIzNDU2Nw==
◦ ACTIVE_ENCRYPTION_KEY_NAME:bXlrZXk=
◦ oldEncKeys.json:e30=
4. Base64 decodifica i valori correnti di ENCRYPTION_KEY, ACTIVE_ENCRYPTION_KEY_NAME e oldEncKeys.json. In questo esempio si verifica quanto indicato di seguito.
◦ Per ENCRYPTION_KEY, il valore QVNERkdISktMMTIzNDU2Nw== viene decodificato in ASDFGHJKL1234567.
◦ Per ACTIVE_ENCRYPTION_KEY_NAME, il valore bXlrZXk= viene decodificato in mykey.
◦ Per oldEncKeys.json, il valore e30= viene decodificato in {}.
5. Base64 codifica i nuovi valori di ENCRYPTION_KEY,, ACTIVE_ENCRYPTION_KEY_NAME e oldEncKeys.json. In questo esempio si verifica quanto indicato di seguito.
◦ Per ENCRYPTION_KEY, il valore 0EE0D33AC67E4389AB2B46123729B875 viene codificato in MEVFMEQzM0FDNjdFNDM4OUFCMkI0NjEyMzcyOUI4NzU=.
◦ Per ACTIVE_ENCRYPTION_KEY_NAME, il valore newkey viene codificato in bmV3a2V5.
◦ Per oldEncKeys.json la coppia di chiavi precedente nel formato JSON {"mykey":"ASDFGHJKL1234567"} viene codificata in eyAibXlrZXkiOiAiQVNERkdISktMMTIzNDU2NyJ9
6. Immettere i nuovi valori nel file chiave-segreto, quindi salvare il file.
◦ ENCRYPTION_KEY:MEVFMEQzM0FDNjdFNDM4OUFCMkI0NjEyMzcyOUI4NzU=
◦ ACTIVE_ENCRYPTION_KEY_NAME:bmV3a2V5
◦ oldEncKeys.json:eyAibXlrZXkiOiAiQVNERkdISktMMTIzNDU2NyJ9
7. Riavviare tutti i contenitori ThingWorx Flow.