ThingWorx Flow > ThingWorx Flow のインストールと管理 > ThingWorx Flow の管理 > ThingWorx Flow 暗号化キーの入れ替え
ThingWorx Flow 暗号化キーの入れ替え
ThingWorx Flow 内で接続、承認、ワークフロー操作などの機密データは暗号化されます。このために使用されている暗号化キーを、以前に暗号化されたデータを引き続き使用できるようにしたまま、変更する必要が生じることがあります。以下のステップで、新しい暗号化キーの設定方法について概要を説明します。
オンプレミス展開での手順
1. キー名とシークレットなど、新しいキーペアを生成します。
キー名は何でも構いません。
シークレットの長さは 16 の倍数でなければなりません。最も簡単な方法としては、GUID ジェネレータを使用してシークレットを作成します。
* 
この GUID にハイフン (-) が含まれていてはなりません。
この例では、キーは newkey、値は 0EE0D33AC67E4389AB2B46123729B875 です
2. KeyFile を復号化します。
a. flow-installer ディレクトリに移動し、settings.json ファイルから sec_key をコピーします。これは後から KeyTool で使用されます。
b. ThingWorxFlow ディレクトリに移動します。
c. 以下のコマンドを実行することで KeyTool をリンクします。
cd /d C:\ThingWorxFlow\cryptography\tw-security-common-nodejs
npm link
d. 以下のコマンドを実行することで、テンポラリファイルに KeyFile を復号化します。
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. 新しいキーをプレーンテキストファイル (この例では keys.dec) に追加します。このファイルには RabbitMQ と Postgres の接続情報が保存されています。
f. 以下のコマンドを実行することで、テンポラリファイルを KeyFile に暗号化します。
C:\ThingWorxFlow> PtcOrchKeyFileTool --secret "<value from sec_key>" --keyfile-location "misc\keyfile-key" --plaintext"keys.dec"--encrypted "cryptography\keys.enc" encrypt
g. テンポラリファイル keys.dec を削除します。
3. Flow サービスごとに、以下のステップを使用して、暗号化キーの名前と値を設定します。
a. ファイル deploymentConfig.json を編集します。
b. プロパティ ACTIVE_ENCRYPTION_KEY を新しいキー名に設定します。
たとえば、新しいキー名が "newkey" であるとした場合、deploymentConfig.json には以下が含まれている必要があります。
{
"ACTIVE_ENCRYPTION_KEY": "newkey"
}
4. ThingWorx Flow サービスを再起動します。
クラウドまたは仮想プライベートクラウドでの手順
1. キー名とシークレットなど、新しいキーペアを生成します。
キー名は何でも構いません。
シークレットの長さは 16 の倍数でなければなりません。最も簡単な方法としては、GUID ジェネレータを使用してシークレットを作成します。
* 
この GUID にハイフン (-) が含まれていてはなりません
この例では、キーは newkey、値は 0EE0D33AC67E4389AB2B46123729B875 です
2. キーシークレットファイルを見つけます。ThingWorx Flow の展開にはキーシークレット (<リリース名>-keys というタイトル) が含まれています。このシークレットには、アクティブな暗号化キーと、JSON 構造で oldEncKeys.json に保存されている古い暗号化キーの両方が含まれています。正しいシークレットを見つけるには、以下のコマンドを実行します。
kubectl get secrets
3. 以下のコマンドを実行することで、編集するシークレットファイルを開きます。
kubectl edit secret <release name>-keys
シークレットファイルには、以下のような各種エントリが含まれています。
ENCRYPTION_KEY:QVNERkdISktMMTIzNDU2Nw==
ACTIVE_ENCRYPTION_KEY_NAME:bXlrZXk=
oldEncKeys.json:e30=
4. ENCRYPTION_KEYACTIVE_ENCRYPTION_KEY_NAME、および oldEncKeys.json の各エントリの現在の値を Base64 デコードします。この例では、
ENCRYPTION_KEY で、値 QVNERkdISktMMTIzNDU2Nw==ASDFGHJKL1234567 にデコードされます
ACTIVE_ENCRYPTION_KEY_NAME で、値 bXlrZXk=mykey にデコードされます
oldEncKeys.json で、値 e30={} にデコードされます
5. ENCRYPTION_KEY, ACTIVE_ENCRYPTION_KEY_NAME および oldEncKeys.json の各エントリの新しい値を Base64 エンコードします。この例では、
ENCRYPTION_KEY で、値 0EE0D33AC67E4389AB2B46123729B875MEVFMEQzM0FDNjdFNDM4OUFCMkI0NjEyMzcyOUI4NzU= にエンコードされます
ACTIVE_ENCRYPTION_KEY_NAME で、値 newkeybmV3a2V5 にエンコードされます。
oldEncKeys.json で、JSON フォーマットの古いキーペア {"mykey":"ASDFGHJKL1234567"}eyAibXlrZXkiOiAiQVNERkdISktMMTIzNDU2NyJ9 にエンコードされます
6. 新しい値をシークレットファイルに入力し、ファイルを保存します。
ENCRYPTION_KEY:MEVFMEQzM0FDNjdFNDM4OUFCMkI0NjEyMzcyOUI4NzU=
ACTIVE_ENCRYPTION_KEY_NAME:bmV3a2V5
oldEncKeys.json:eyAibXlrZXkiOiAiQVNERkdISktMMTIzNDU2NyJ9
7. すべての Flow コンテナを再起動します。