보안 관리 도구
보안 관리 도구는 ThingWorx 소프트웨어에서 사용되는 보안 정보를 관리하는 방법입니다. 이 도구는 데이터베이스 및 라이선스 암호와 같은 이러한 제품에 대한 구성 파일의 모든 키 값을 암호화할 수 있습니다. 이 도구는 모든 ThingWorx 응용 프로그램에서 사용할 수 있으며, ThingWorx Platform, Connection Server, ThingWorx Azure IoT Hub Connector v.3.0.0, ThingWorx Edge MicroServer(EMS), Integration Runtime 등의 제품에서 지원됩니다.
보안 관리 도구는 PFX 키 저장소 파일과 함께 작동하며 보안을 위해 AES 암호화를 사용합니다. AES 암호화를 사용하려면 8U141보다 높은 Java 버전이 필요합니다.
기존 .JKS 키 저장소가 있는 경우 .PFX 키 저장소로 업그레이드하기 위해 작업을 수행해야 합니다. 이는 CLI가 JKS 키 저장소에 대해 실행되는 즉시 발생합니다. 키 저장소의 JKS 버전을 만든 후 제거할 수 있지만 문제가 발생할 경우를 대비하여 백업하는 것이 좋습니다.
키 저장소 conf 파일은 있는 그대로 작동하지만, 추가 처리를 줄이기 위해 확장 없이 키 저장소 이름을 파일 이름으로만 설정하려면 이 파일을 업데이트해야 합니다.
위치
이 도구는 PTC 소프트웨어 다운로드 페이지에서 ThingWorx 소프트웨어 다운로드를 통해 사용할 수 있습니다.
지원되는 버전
이 도구는 ThingWorx 8.4.0 이상과 함께 사용할 수 있습니다.
권한
이 도구는 관리자만 사용할 수 있습니다. 필요한 대로 설치하고 사용한 후에는 제거하십시오.
구성
* 
default-encryption-key-length는 응용 프로그램 구성과 일치해야 합니다. ThingWorx에서는 이 값이 platform-settings.json에 있는 InternalAesCryptographicKeyLength 매개 변수입니다. 기본값은 128이지만 Java 1.8.0_162 이상을 사용하는 경우 256비트 암호화를 사용할 수 있습니다. 필요한 경우 키 크기 제한에 대한 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 <config-file>
구성을 로드합니다.
createTokenFile<path><token>
토큰 파일을 생성합니다.
* 
이 옵션은 보안 관리 도구 버전 1.3.1 이상에서 사용할 수 있습니다.
보안 관리 명령
명령
설명
keys
보안 공급자의 키 목록입니다.
get <name>
보안 공급자로부터 값을 읽어들입니다.
set <name> <Value>
보안 공급자에 값을 설정합니다.
remove <name>
보안 공급자에서 값을 제거합니다.
암호화 및 키 저장소 명령
명령
설명
generate-key <secret-name>
새 암호화 키를 생성하고 보안에 저장합니다.
encrypt <encryption-key-name> <secret name> <string>
선택적 키를 사용하여 문자열을 암호화하고 보안에 저장합니다.
* 
<encryption-key-name>은 선택 사항입니다. <encryption-key-name>이 지정되지 않으면 기본 내부 키가 사용됩니다. 파일 크기는 10MB로 제한됩니다.
decrypt<encryption-key-name> <secret name>
선택적 키를 사용하여 보안에 저장된 문자열을 해독합니다.
* 
<encryption-key-name>은 선택 사항입니다. <encryption-key-name>이 지정되지 않으면 기본 내부 키가 사용됩니다. 파일 크기는 10MB로 제한됩니다.
encryptFile <encryption-key-name> <source> <destination>
보안으로 저장된 선택적 키를 사용하여 소스 파일을 암호화하고 대상에 씁니다.
* 
<encryption-key-name>은 선택 사항입니다. <encryption-key-name>이 지정되지 않으면 기본 내부 키가 사용됩니다. 파일 크기는 10MB로 제한됩니다.
decryptFile <encryption-key-name> <source> <destination>
보안으로 저장된 선택적 키를 사용하여 소스 파일을 해독하고 대상에 씁니다.
* 
<encryption-key-name>은 선택 사항입니다. <encryption-key-name>이 지정되지 않으면 기본 내부 키가 사용됩니다. 파일 크기는 10MB로 제한됩니다.
viewFile <encryption-key-name> <source>
보안으로 저장된 선택적 키를 사용하여 소스 파일을 해독하고 내용을 봅니다.
* 
<encryption-key-name>은 선택 사항입니다. <encryption-key-name>이 지정되지 않으면 기본 내부 키가 사용됩니다. 파일 크기는 10MB로 제한됩니다.
migrate <password>
키 저장소를 새로 생성된 암호 또는 지정된 암호로 마이그레이션합니다.
addcert <name><path>
X.509 인증서를 키 저장소에 로드합니다.
import <orchestration-keystore-config>
파일에서 보안 공급자로 보안을 가져옵니다.
* 
이 옵션은 보안 관리 도구 버전 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
사용법
키 저장소 공급자는 키 저장소에서 사용할 수 있도록 파일에 암호화된 상태로 저장된 보안 토큰을 사용합니다. 키 저장소에 작성되는 모든 데이터는 암호를 사용하여 안전하게 저장됩니다. 처음으로 공급자가 시작되면 공급자가 임의의 암호 값과 키 저장소 파일을 만듭니다(없는 경우).
* 
키 저장소 암호 및 키 저장소 파일은 응용 프로그램 사용자로만 제한되어야 합니다. 응용 프로그램 사용자는 파일에 대한 읽기/쓰기 권한이 있어야 합니다.
초기 데이터를 저장하기 위한 키 저장소 파일을 만들려면 보안 관리 도구를 사용해야 합니다.
1. PTC 지원 사이트(릴리즈 8.4 이상 섹션)에서 보안 관리 도구 ZIP 파일을 얻습니다.
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 위치로 이동합니다.
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"
을 실행합니다. 구성된 위치에 암호 파일과 키 저장소가 작성됩니다.
6. LicensingConnectionSettings 아래의 ThingworxPlatform\platform-settings.json을 열고 password 값을 encrypt.licensing.password로 변경합니다. 예를 들어, "password": "encrypt.licensing.password"입니다. 이 암호는 키 저장소에서 암호화된 라이선스 암호를 발견하면 조회하도록 ThingWorx Platform에 신호를 보냅니다.
키 저장소 암호 변경
보안 관리 도구를 사용하여 키 저장소 암호를 새 암호로 마이그레이션할 수도 있습니다. 암호가 변경되면 응용 프로그램 키 저장소 암호가 재설정될 때까지 키가 마이그레이션되므로 응용 프로그램에서 더 이상 해당 키를 사용할 수 없습니다. 현재 이 경우 응용 프로그램을 다시 시작해야 합니다.
1. 키 저장소를 사용하여 응용 프로그램을 중지합니다.
2. 키 저장소 구성과 함께 보안 관리 도구 스크립트를 실행합니다.
3. migrate 명령을 실행합니다. 이렇게 하면 새 암호가 생성되고, 모든 데이터가 새 암호로 이동하고, 보안 파일이 새 암호로 업데이트됩니다.
4. 응용 프로그램을 다시 시작하여 새 키 저장소 암호를 로드합니다.
도움이 되셨나요?