Ротация ключа шифрования ThingWorx Flow
Конфиденциальные данные, в том числе авторизации и действия рабочего процесса, шифруются в ThingWorx Flow. Можно изменить ключ шифрования, используемый для шифрования конфиденциальных данных, без потери ранее зашифрованных данных. В следующих разделах представлена информация о настройке нового ключа шифрования в следующих средах:
Локально
1. Создайте новую пару ключей с именем и секретом ключа.
Можно задать любое имя ключа.
Длина ключа должна быть кратна 16. Для создания секрета можно использовать генератор GUID. GUID не должен содержать дефис (-).
2. Значение параметра secret используется для расшифровки keyfile-key. Чтобы получить значение параметра secret, запустите командную строку как администратор на компьютере, на котором установлено приложение ThingWorx Flow, и выполните следующие команды.
a. pm2 ls
Запишите значение идентификатора любого сервиса ThingWorx Flow.
b. pm2 env <ИД>
, где <ИД> - идентификатор любого сервиса ThingWorx Flow. Например: идентификатор сервиса flow-api.
c. Скопируйте значение переменной CONFIG_IMAGE. Это значение параметра secret. Это значение параметра secret, которое необходимо предоставить на шаге 3.
3. Выполните следующие команды, чтобы расшифровать файл ключей:
a. Перейдите в папку <каталог установки ThingWorx Flow>.
b. Выполните команды:
cd <каталог установки ThingWorx Flow>\cryptography\tw-security-common-nodejs
Windows: npm link или Linux: sudo npm link
c. Выполните следующую команду, чтобы расшифровать keyfile-key во временный файл:
PtcOrchKeyFileTool --secret <значение CONFIG_IMAGE> --keyfile-location <каталог установки ThingWorx Flow>\misc\keyfile-key --plaintext <каталог установки ThingWorx Flow>\cryptography\keys.dec --encrypted <каталог установки ThingWorx Flow>\cryptography\keys.enc decrypt
Эта команда создает новый расшифрованный файл keys.dec в папке <каталог установки ThingWorx Flow>\cryptography\.
d. Обновите файл keys.dec, чтобы добавить новый ключ.
Например: "newkey": "0EE0D33AC67E4389AB2B46123729B875",
e. Создайте резервную копию файла <каталог установки ThingWorx Flow>\cryptography\keys.enc.
f. Удалите файл <каталог установки ThingWorx Flow>\cryptography\keys.enc.
g. Выполните следующую команду, чтобы создать новый зашифрованный файл keys.enc:
PtcOrchKeyFileTool --secret <значение CONFIG_IMAGE> --keyfile-location <каталог установки ThingWorx Flow>\misc\keyfile-key --plaintext <каталог установки ThingWorx Flow>\cryptography\keys.dec --encrypted <каталог установки ThingWorx Flow>\cryptography\keys.enc encrypt
h. Удалите расшифрованный файл keys.dec.
4. Чтобы сконфигурировать новый ключ шифрования, задайте новое имя ключа в свойстве activeKeyName в следующих файлах:
<каталог установки ThingWorx Flow>\modules\engine\config\security-common\config.json
<каталог установки ThingWorx Flow>\modules\exchange\config\security-common\config.json
<каталог установки ThingWorx Flow>\modules\lookup\config\security-common\config.json
<каталог установки ThingWorx Flow>\modules\oauth\config\security-common\config.json
<каталог установки ThingWorx Flow>\modules\trigger\config\security-common\config.json
<каталог установки ThingWorx Flow>\modules\ux\config\security-common\config.json
Например, для ключа с именем newkeyзадайте следующее:
{"
activeKeyName": "newkey"
}
5. Перезапустите сервисы ThingWorx Flow.
Облако или виртуальное частное облако
1. Создайте новую пару ключей с именем и секретом ключа.
Можно задать любое имя ключа.
Длина ключа должна быть кратна 16. Для создания секрета можно использовать генератор GUID. GUID не должен содержать дефис (-).
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. Base64 расшифровывает текущие значения ENCRYPTION_KEY, ACTIVE_ENCRYPTION_KEY_NAME и oldEncKeys.json. В этом примере:
Для ENCRYPTION_KEY значение QVNERkdISktMMTIzNDU2Nw== расшифровывается как ASDFGHJKL1234567.
Для ACTIVE_ENCRYPTION_KEY_NAME значение bXlrZXk= расшифровывается как mykey.
Для oldEncKeys.json значение e30= расшифровывается как {}.
5. Base64 расшифровывает новые значения ENCRYPTION_KEY,, ACTIVE_ENCRYPTION_KEY_NAME и oldEncKeys.json. В этом примере:
Для ENCRYPTION_KEY значение 0EE0D33AC67E4389AB2B46123729B875 шифруется как MEVFMEQzM0FDNjdFNDM4OUFCMkI0NjEyMzcyOUI4NzU=.
Для ACTIVE_ENCRYPTION_KEY_NAME значение newkey шифруется как bmV3a2V5.
Для oldEncKeys.json старая пара ключей в формате JSON {"mykey":"ASDFGHJKL1234567"} шифруется как eyAibXlrZXkiOiAiQVNERkdISktMMTIzNDU2NyJ9.
6. Введите новые значения в файл пары ключ-секрет, а затем сохраните файл.
ENCRYPTION_KEY:MEVFMEQzM0FDNjdFNDM4OUFCMkI0NjEyMzcyOUI4NzU=
ACTIVE_ENCRYPTION_KEY_NAME:bmV3a2V5
oldEncKeys.json:eyAibXlrZXkiOiAiQVNERkdISktMMTIzNDU2NyJ9
7. Перезапустите все контейнеры ThingWorx Flow.
Было ли это полезно?