Определение модели ThingWorx в Composer > Безопасность > Инструмент управления безопасностью
Инструмент управления безопасностью
Инструмент управления безопасностью является способом управления информацией безопасности, которая используется программным обеспечением ThingWorx. Инструмент может шифровать любые значения ключа из файлов конфигурации для этих продуктов, такие как пароли базы данных и лицензирования. Этот инструмент можно использовать с любым приложением ThingWorx, и он поддерживается такими продуктами, как ThingWorx Platform, Connection Server, ThingWorx Azure IoT Hub Connector v.3.0.0, ThingWorx Edge MicroServer (EMS), Integration Runtime и т. д.
Инструмент управления безопасностью работает с файлами хранилища ключей PFX и использует шифрование AES для секретных слов. Для использования шифрования AES требуется версия Java выше 8U141.
Если у вас есть существующее хранилище ключей .JKS, необходимо выполнить действие для обновления до версии хранилища ключей .PFX. Это происходит, как только CLI запускается для любого хранилища ключей JKS. После создания можно удалить версию JKS хранилища ключей, хотя рекомендуется создать ее резервную копию на случай проблем.
Файл хранилища ключей conf будет работать как есть, но должен быть обновлен, чтобы задать для имени хранилища только имя файла без расширения и в результате сократить лишнюю обработку.
Расположение
Этот инструмент доступен на странице PTC Software Download (Загрузка ПО PTC) вместе с пакетом загрузки программного обеспечения ThingWorx.
Поддерживаемые версии
Этот инструмент может использоваться с версиями ThingWorx 8.4.0 и более поздними.
Разрешения
Этот инструмент предназначен для использования только администраторами. Установите его, если он необходим, и затем удалите после использования.
Конфигурация
* 
Параметр default-encryption-key-length должен соответствовать конфигурации приложения. В ThingWorx это параметр InternalAesCryptographicKeyLength, находящийся в файле platform-settings.json. Значение по умолчанию: 128, но можно использовать 256-разрядное шифрование, если используется версия Java 1.8.0_162 или более поздняя. Если необходимо, можно также использовать более ранние версии Java, обновив политику Java для ограничения размера ключа.
Настройки Linux:
{
security {
secret-provider = "com.thingworx.security.provider.keystore.KeyStoreProvider"
default-encryption-key-length = 128
keystore {
password-file-path = "/<path to ThingworxPlatform folder>/ThingworxPlatform"
password-file-name = "keystore-password"
path = "/<path to ThingworxStorage folder>/ThingworxStorage"
name = "keystore"
}
}
}
Настройки Windows:
{
security {
secret-provider = "com.thingworx.security.provider.keystore.KeyStoreProvider"
default-encryption-key-length = 128
keystore {
password-file-path = "C:\\<path to ThingworxPlatform folder>\\ThingworxPlatform"
password-file-name = "keystore-password"
path = "C:\\<path to ThingworxStorage folder>\\ThingworxStorage"
name = "keystore"
}
}
}
Использование инструмента интерфейса командной строки
Используйте инструмент интерфейса командной строки для выполнения конкретных операций вне приложения, чтобы предварительно настроить секретные ключи, которые требуются приложению. Сценарий приложения (security-common-cli) поставляется в дистрибутиве для Linux и Windows. Имеется несколько способов запустить инструмент интерфейса командной строки.
Без файла конфигурации - инструмент запускается без конфигурирования диспетчера безопасности, и команды, которые можно выполнить, ограничиваются. Необходимо выполнить команду init, чтобы настроить диспетчер безопасности:
# run without providing a config, will have to run init, prompt for input
./security-common-cli
С файлом конфигурации в качестве первого параметра сценария - инструмент запускается и инициализирует диспетчер безопасности с указанной конфигурацией.
# initialize security manager with specified config, prompt for input
./security-common-cli <path to keystore>\keystore.conf
С файлом конфигурации и несколькими другими параметрами - инструмент запускается в единственном режиме использования. Он выполняет указанное действие и затем сразу останавливает выполнение. Это способ вызова из базового установщика. При передаче в командной строке параметров, содержащих пробел, необходимо заключать их в одинарные кавычки, чтобы они обрабатывались как один аргумент. При выполнении в режиме командной строки инструмент работает только в языковой настройке США, чтобы обеспечить предсказуемость имен действий.
# run one command and tool exits
./security-common-cli <config file path> <action> <parameters>
./security-common-cli keystore.conf set 'mykeyname' 'some value for my key'
* 
Можно использовать полный путь для файла конфигурации или просто имя файла конфигурации, если файл конфигурации находится в пути к классу.
Общие команды
Команда
Описание
help или ?
Отображает информацию об использовании.
exit
Завершает работу инструмента.
config
Отображает текущую конфигурацию.
init <файл-конфигурации>
Конфигурация нагрузок.
createTokenFile<путь><лексема>
Создает файл лексем.
* 
Эта опция доступна в версии 1.3.1 и выше инструмента управления безопасностью.
Команды управления секретом
Команда
Описание
keys
Список ключей в поставщике секрета.
get <имя>
Загружает значение от поставщика секрета.
set <имя> <значение>
Задает значение в поставщике секрета.
remove <имя>
Удаляет значение от поставщика секрета.
Шифрование и команды хранилища ключей
Команда
Описание
generate-key <имя-секрета>
Создает новый ключ шифрования и сохраняет его в секрете.
encrypt <имя-ключа-шифрования> <имя-секрета> <строка>
Шифрует строку с помощью дополнительного ключа и сохраняет его в секрете.
* 
<имя-ключа-шифрования> является необязательным. Если <имя-ключа-шифрования> не указано, используется внутренний ключ по умолчанию. Для файлов предел размера равен 10 МБ.
decrypt<имя-ключа-шифрования> <имя-секрета>
Расшифровывает строку, сохраненную в секрете, с помощью дополнительного ключа.
* 
<имя-ключа-шифрования> является необязательным. Если <имя-ключа-шифрования> не указано, используется внутренний ключ по умолчанию. Для файлов предел размера равен 10 МБ.
encryptFile <имя-ключа-шифрования> <источник> <назначение>
Шифрует исходный файл и записывает его в место назначения с дополнительным ключом, сохраненным как секрет.
* 
<имя-ключа-шифрования> является необязательным. Если <имя-ключа-шифрования> не указано, используется внутренний ключ по умолчанию. Для файлов предел размера равен 10 МБ.
decryptFile <имя-ключа-шифрования> <источник><назначение>
Расшифровывает исходный файл и записывает его в место назначения с дополнительным ключом, сохраненным как секрет.
* 
<имя-ключа-шифрования> является необязательным. Если <имя-ключа-шифрования> не указано, используется внутренний ключ по умолчанию. Для файлов предел размера равен 10 МБ.
viewFile <имя-ключа-шифрования> <источник>
Расшифровывает исходный файл и просматривает содержимое с дополнительным ключом, сохраненным как секрет.
* 
<имя-ключа-шифрования> является необязательным. Если <имя-ключа-шифрования> не указано, используется внутренний ключ по умолчанию. Для файлов предел размера равен 10 МБ.
migrate <пароль>
Переводит KeyStore на новый сгенерированный пароль или указанный пароль.
addcert <имя> <путь>
Загружает сертификат X.509 в KeyStore.
import <конфигурация-хранилища_ключей-оркестровки>
Импортирует секретные слова из файла в поставщик секретных слов.
* 
Эта опция доступна в версии 1.3.1 и выше инструмента управления безопасностью.
Примеры использования
В следующем примере в командной строке не указана конфигурация:

./security-common-cli
Not initialized, use 'init <config-file>' to initialize
> init sample-keystore.conf
Loading config from file sample-keystore.conf
Secret Provider: com.thingworx.security.provider.keystore.KeyStoreProvider
KeyStore
Path: /tmp/keystore
Password File: /tmp/keystore-password
Keystore Password: 47886866662481XXXXX
> get mykey
No value found for mykey
> set mykey "this is the value"
mykey stored
> get mykey
this is the value
> remove mykey
mykey removed
> get mykey
No value found for mykey
> encrypt mykey "this is my value to encrypt"
mykey stored
> get mykey
YVljoGhjNVQjnlo/m8c+FRtZhkOb/rcfioakxxxxxx=
> decrypt mykey
this is my value to encrypt
> remove mykey
mykey removed
> exit
Complete
В следующем примере имеется файл конфигурации, указанный в командной строке:
./security-common-cli sample-keystore.conf
Loading config from file sample-keystore.conf
Secret Provider: com.thingworx.security.provider.keystore.KeyStoreProvider
KeyStore
Path: /tmp/keystore
Password File: /tmp/keystore-password
Keystore Password: 47886866662481XXXXX
> get mykey
No value found for mykey
> set mykey "some test"
mykey stored
> get mykey
some test
> remove mykey
mykey removed
> exit
Complete
В следующем примере существуют непосредственные изменения командной строки:
./security-common-cli sample-keystore.conf get mykey
Loading config from file sample-keystore.conf
No value found for mykey
./security-common-cli sample-keystore.conf set mykey "this is the value to set"
Loading config from file sample-keystore.conf
mykey stored
./security-common-cli sample-keystore.conf get mykey
Loading config from file sample-keystore.conf
this is the value to set
Использование
Поставщик хранилища KeyStore использует для работы с KeyStore защищенную лексему, хранящуюся в файле в зашифрованном виде. Все данные, записанные в KeyStore, хранятся безопасно, защищенные паролем. При первом запуске поставщика он генерирует случайное значение пароля и файл KeyStore, если они еще не существуют.
* 
Использование пароля KeyStore и файла KeyStore должно быть ограничено только пользователем приложения. Пользователь приложения должен иметь разрешения на чтение и запись для файлов.
Чтобы создать файл хранилища ключей для хранения начальных данных, необходимо использовать инструмент "Управление безопасностью".
1. Получить ZIP-файл инструмента управления безопасностью можно на сайте поддержки PTC (в разделе выпуска 8.4 или более позднего).
2. Извлеките содержимое ZIP-файла в какой-либо каталог.
3. Создайте файл конфигурации с параметрами, показанными в следующем примере, и поместите его в папку bin.
В этом примере имя файла: keystore.conf, версия инструмента: 1.0.0.36, расположение файла: C://security-common-cli-1.0.0.36/bin.
{
security {
secret-provider = "com.thingworx.security.provider.keystore.KeyStoreProvider"
default-encryption-key-length = 128
keystore {
password-file-path = ":\\<path to ThingworxPlatform folder>\\ThingworxPlatform"
password-file-name = "keystore-password"
path = ":\\<path to ThingworxStorage folder>\\ThingworxStorage"
name = "keystore"
}
}
}
4. Откройте окно командной строки и перейдите в расположение security-common-cli-1.0.0.36\bin.
5. Выполните
C:\security-common-cli-1.0.0.36\bin> security-common-cli.bat <path to keystore>\keystore.conf
set encrypt.licensing.password "add-password-here"
. Файл пароля и KeyStore будут созданы в сконфигурированном расположении.
6. Откройте ThingworxPlatform\platform-settings.json в папке LicensingConnectionSettings и измените значение password на encrypt.licensing.password. Например, "password": "encrypt.licensing.password". Такой пароль является сигналом для платформы ThingWorx, что при его обнаружении нужно инициировать поиск зашифрованного пароля лицензирования в хранилище KeyStore.
Изменение пароля KeyStore
Также можно перенести пароль KeyStore на новый пароль с помощью инструмента управления безопасностью. Если пароль изменен, приложение больше не может использовать ключи по мере их переноса до тех пор, пока пароль приложений KeyStore не будет сброшен. В настоящее время для этого требуется перезапустить приложение.
1. Остановите приложение с помощью KeyStore.
2. Выполните сценарий инструмента управления безопасностью с конфигурацией KeyStore.
3. Выполните команду migrate. При этом генерируется новый пароль, все данные переносятся на новый пароль, а файл безопасности обновляется с использованием нового пароля.
4. Перезапустите приложение, чтобы загрузить новый пароль KeyStore.
Было ли это полезно?