セキュリティ管理ツール
セキュリティ管理ツールは、ThingWorx ソフトウェアによって使用されるセキュリティ保護された情報を管理するための 1 つの手段です。このツールは、データベースやライセンスのパスワードなど、これらの製品のコンフィギュレーションファイル内の任意のキー値を暗号化できます。このツールは ThingWorx アプリケーションで使用でき、ThingWorx Platform、 Connection ServerThingWorx Azure IoT Hub Connector v.3.0.0ThingWorx WebSocket-based Edge MicroServer (WS EMS)Integration Runtime などの製品でサポートされています。
ThingWorx 8.5 での変更
8.5 ではセキュリティ管理ツールが PFX キーストアファイルで動作するようにアップグレードされ、シークレットに AES 暗号化が使用されるようになりました。AES 暗号化を使用するにはバージョン 8U141 以上の Java が必要です。
既存の .JKS キーストアがある場合、.PFX キーストアにアップグレードする操作を実行する必要があります。任意の JKS キーストアに対して CLI が実行されるとただちにこの処理が行われます。作成後、JKS バージョンのキーストアを除去できますが、問題が発生した場合に備えてこれをバックアップすることをお勧めします。
キーストアの conf ファイルはそのままでも機能しますが、余分な処理が行われないようにするため、conf ファイルを更新して、キーストア名を拡張子がないファイル名だけの形式にする必要があります。
* 
ThingWorx 8.5 での変更に伴い、統合コネクタの Integration Runtime Service の初期設定も変更されました。 キーストアおよびキーストアパスワードのマイグレーションを参照してください。
場所
このツールは、 「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"
}
}
}
コマンドラインインタフェースツールの使用
コマンドラインインタフェースツールを使用することで、アプリケーションの外部で、アプリケーションが必要とするシークレットをプリセットする特定の操作を実行できます。Linux と Windows 用のアプリケーションスクリプト (security-common-cli) がディストリビューションに含まれています。コマンドラインインタフェースツールを実行する方法がいくつかあります。
コンフィギュレーションファイルなし - セキュリティマネージャが設定されていない状態でツールを起動する場合は、実行可能なコマンドが限られます。セキュリティマネージャを設定するには、init コマンドを実行する必要があります。
# run without providing a config, will have to run init, prompt for input
./security-common-cli
1 つ目のスクリプトパラメータとしてコンフィギュレーションファイルを指定 - ツールが起動し、指定したコンフィギュレーションでセキュリティマネージャが初期化されます。
# initialize security manager with specified config, prompt for input
./security-common-cli <path to keystore>\keystore.conf
コンフィギュレーションファイルとその他の複数のパラメータを指定 - 単一使用モードでツールが実行されます。指定された処理が実行された後、ただちに実行が停止します。これは基本インストーラから呼び出すための手段です。コマンドラインで空白を含むパラメータを渡す際に、1 つの引数として処理されるためには、一重引用符で囲む必要があります。コマンドラインモードで実行した場合、操作名を予測可能なものにするために、US ロケールでのみ実行されます。
# 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 ファイル>
コンフィギュレーションをロードします。
シークレット管理コマンド
コマンド
説明
keys
シークレットプロバイダ内のキーのリスト。
get <名前>
シークレットプロバイダから値を取得します。
set <名前> <値>
シークレットプロバイダで値を設定します。
remove <名前>
シークレットプロバイダから値を除去します。
暗号化とキーストアのコマンド
コマンド
説明
generate-key <シークレット名>
新規の暗号化キーを生成してシークレットに保存します。
encrypt <暗号化キー名> <シークレット名> <文字列>
オプションのキーを使用して文字列を暗号化し、シークレットに保存します。
* 
<暗号化キー名> はオプションです。<暗号化キー名> が指定されていない場合、デフォルトの内部キーが使用されます。ファイルには 10 MB のサイズ制限があります。
decrypt<暗号化キー名> <シークレット名>
シークレットに保存されている文字列を、オプションのキーを使用して復号化します。
* 
<暗号化キー名> はオプションです。<暗号化キー名> が指定されていない場合、デフォルトの内部キーが使用されます。ファイルには 10 MB のサイズ制限があります。
encryptFile <暗号化キー名> <ソース> <ターゲット>
ソースファイルを暗号化し、シークレットとして保存されているオプションのキーを使用してターゲットに書き込みます。
* 
<暗号化キー名> はオプションです。<暗号化キー名> が指定されていない場合、デフォルトの内部キーが使用されます。ファイルには 10 MB のサイズ制限があります。
decryptFile <暗号化キー名> <ソース> <ターゲット>
ソースファイルを復号化し、シークレットとして保存されているオプションのキーを使用してターゲットに書き込みます。
* 
<暗号化キー名> はオプションです。<暗号化キー名> が指定されていない場合、デフォルトの内部キーが使用されます。ファイルには 10 MB のサイズ制限があります。
viewFile <暗号化キー名> <ソース>
シークレットとして保存されているオプションのキーを使用して、ソースファイルを復号化してコンテンツを表示します。
* 
<暗号化キー名> はオプションです。<暗号化キー名> が指定されていない場合、デフォルトの内部キーが使用されます。ファイルには 10 MB のサイズ制限があります。
migrate <パスワード>
新しく生成されたパスワードまたは指定したパスワードにキーストアをマイグレーションします。
addcert <名前><パス>
X.509 の証明書をキーストアにロードします。
使用例
以下の例では、コマンドラインでコンフィギュレーションが指定されていません。

./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 に移動します。
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"
設定した場所にパスワードファイルとキーストアが作成されます。
6. ThingworxPlatform\platform-settings.json を開き、LicensingConnectionSettings の下の password の値を encrypt.licensing.password に変更します。たとえば、"password": "encrypt.licensing.password" のようになります。このパスワードは、暗号化されたライセンスパスワードが見つかった場合に、ThingWorx プラットフォームがキーストア内でそれを検索することを示します。
キーストアパスワードの変更
セキュリティ管理ツールを使用して、キーストアパスワードを新規パスワードにマイグレーションすることもできます。パスワードが変更された場合、キーがマイグレーションされるので、アプリケーションのキーストアパスワードがリセットされるまでアプリケーションはキーを使用できなくなります。現在のところ、これを行うにはアプリケーションを再起動する必要があります。
1. アプリケーションでキーストアの使用を停止します。
2. キーストアのコンフィギュレーションを使用してセキュリティ管理ツールスクリプトを実行します。
3. migrate コマンドを実行します。新規パスワードが生成され、すべてのデータが新規パスワードに移行し、セキュアなファイルが新しいパスワードで更新されます。
4. アプリケーションを再起動して新規キーストアパスワードをロードします。