7.2. セキュアな vault およびプロパティーの移行
7.2.1. クレデンシャルストレージをセキュア化する vault の移行
JBoss EAP 7.0 のレガシー security
サブシステムでプレーンテキストの文字列暗号を保存するために使用された vault は、新たに設計されたクレデンシャルストアを使用して文字列を保存する JBoss EAP 7.1 以上の Elytron と互換性がありません。クレデンシャルストアは、JBoss EAP 設定ファイル外のストレージファイルでクレデンシャルを安全に暗号化します。Elytron によって提供される実装を使用するか、クレデンシャルストア API および SPI を使用して設定をカスタマイズすることができます。各 JBoss EAP サーバーに複数のクレデンシャルストアを含めることができます。
以前 vault 式を使用して機密でないデータをパラメーター化した場合、そのデータを Elytron セキュリティープロパティー に置き換えることが推奨されます。
レガシー security
サブシステムの使用を継続する場合、vault データを編集または更新する必要はないはずです。しかし、アプリケーションを移行して Elytron を使用する計画がある場合、既存の vault をクレデンシャルストアに変換し、elytron
サブシステムが処理できるようにする必要があります。クレデンシャルストアに関する詳細は、How to Configure Server Security のCredential Storesを参照してください。
WildFly Elytron Tool を使用した vault データの移行
JBoss EAP に同梱されている WildFly Elytron Tool は、vault の内容をクレデンシャルストアに移行するのに便利な vault
コマンドを提供します。EAP_HOME/bin
ディレクトリーにある elytron-tool
スクリプトを実行してツールを実行します。
$ EAP_HOME/bin/elytron-tool.sh vault VAULT_ARGUMENTS
java -jar
コマンドを実行してツールを実行することもできます。
$ java -jar EAP_HOME/bin/wildfly-elytron-tool.jar vault VAULT_ARGUMENTS
以下のコマンドを使用すると、使用できるすべての引数の説明を表示できます。
$ EAP_HOME/bin/elytron-tool.sh vault --help
- WildFly Elytron Tool は、セキュリティー vault データファイルの最初のバージョンを処理できません。
-
以下の例のように
--keystore-password
引数をマスクされた形式で入力し、単一の vault を移行します (またはクリアテキスト)。 -
--salt
および--iteration
引数は、マスクされたパスワードを復号化する情報を提供したり、出力にマスクされたパスワードを生成するために提供されます。--salt
および--iteration
引数を省略すると、デフォルトの値が使用されます。 -
--summary
引数は、変換されたクレデンシャルストアを JBoss EAP 設定に追加するために使用できるフォーマットされた管理 CLI コマンドを生成します。プレーンテキストパスワードはサマリー出力でマスクされます。
クレデンシャルストアはパスワードのセキュア化のみに使用できることに注意してください。管理モデルで使用できる vault 式機能をサポートしません。
以下の移行オプションの 1 つを選択します。
単一のセキュリティー vault をクレデンシャルストアに移行
以下は、単一のセキュリティー vault をクレデンシャルストアに変換するために使用されるコマンドの例になります。
$ EAP_HOME/bin/elytron-tool.sh vault --enc-dir vault_data/ --keystore vault-jceks.keystore --keystore-password MASK-2hKo56F1a3jYGnJwhPmiF5 --iteration 34 --salt 12345678 --alias test --location cs-v1.store --summary
このコマンドはセキュリティー vault をクレデンシャルストアに変換し、変換に使用された管理 CLI コマンドの概要を出力します。
Vault (enc-dir="vault_data/";keystore="vault-jceks.keystore") converted to credential store "cs-v1.store" Vault Conversion summary: -------------------------------------- Vault Conversion Successful CLI command to add new credential store: /subsystem=elytron/credential-store=test:add(relative-to=jboss.server.data.dir,create=true,modifiable=true,location="cs-v1.store",implementation-properties={"keyStoreType"=>"JCEKS"},credential-reference={clear-text="MASK-2hKo56F1a3jYGnJwhPmiF5;12345678;34"})
複数のセキュリティー vault を一括でクレデンシャルストアに移行
--bulk-convert
引数を使用して一括変換記述子ファイルを示し、複数の vault をクレデンシャルストアに変換することができます。
ここで使用する例では、以下の一括変換記述子ファイルを使用します。
例: bulk-vault-conversion-descriptor.txt
ファイル
keystore:vault-v1/vault-jceks.keystore keystore-password:MASK-2hKo56F1a3jYGnJwhPmiF5 enc-dir:vault-v1/vault_data/ salt:12345678 iteration:34 location:v1-cs-1.store alias:test keystore:vault-v1/vault-jceks.keystore keystore-password:secretsecret enc-dir:vault-v1/vault_data/ location:v1-cs-2.store alias:test # different vault vault-v1-more keystore:vault-v1-more/vault-jceks.keystore keystore-password:MASK-2hKo56F1a3jYGnJwhPmiF5 enc-dir:vault-v1-more/vault_data/ salt:12345678 iteration:34 location:v1-cs-more.store alias:test
新しい keystore:
行ごとに変換が新たに開始されます。salt
、iteration
、および properties
以外のオプションはすべて必須です。
一括変換を実行し、管理 CLI コマンドをフォーマットする出力を生成するには、以下のコマンドを実行します。
$ EAP_HOME/bin/elytron-tool.sh vault --bulk-convert path/to/bulk-vault-conversion-descriptor.txt --summary
このコマンドは、ファイルに指定されたすべてのセキュリティー vault をクレデンシャルストアに変換し、変換に使用された管理 CLI コマンドの概要を出力します。
Vault (enc-dir="vault-v1/vault_data/";keystore="vault-v1/vault-jceks.keystore") converted to credential store "v1-cs-1.store" Vault Conversion summary: -------------------------------------- Vault Conversion Successful CLI command to add new credential store: /subsystem=elytron/credential-store=test:add(relative-to=jboss.server.data.dir,create=true,modifiable=true,location="v1-cs-1.store",implementation-properties={"keyStoreType"=>"JCEKS"},credential-reference={clear-text="MASK-2hKo56F1a3jYGnJwhPmiF5;12345678;34"}) -------------------------------------- Vault (enc-dir="vault-v1/vault_data/";keystore="vault-v1/vault-jceks.keystore") converted to credential store "v1-cs-2.store" Vault Conversion summary: -------------------------------------- Vault Conversion Successful CLI command to add new credential store: /subsystem=elytron/credential-store=test:add(relative-to=jboss.server.data.dir,create=true,modifiable=true,location="v1-cs-2.store",implementation-properties={"keyStoreType"=>"JCEKS"},credential-reference={clear-text="secretsecret"}) -------------------------------------- Vault (enc-dir="vault-v1-more/vault_data/";keystore="vault-v1-more/vault-jceks.keystore") converted to credential store "v1-cs-more.store" Vault Conversion summary: -------------------------------------- Vault Conversion Successful CLI command to add new credential store: /subsystem=elytron/credential-store=test:add(relative-to=jboss.server.data.dir,create=true,modifiable=true,location="v1-cs-more.store",implementation-properties={"keyStoreType"=>"JCEKS"},credential-reference={clear-text="MASK-2hKo56F1a3jYGnJwhPmiF5;12345678;34"}) --------------------------------------
7.2.2. セキュリティープロパティーの Elytron への移行
ここの例では、group.name
および encoding.algorithm
セキュリティープロパティーは以下のようにレガシー security
サブシステムで security-properties
として定義されていることを仮定します。
例: security
サブシステムに定義されたセキュリティープロパティー
<subsystem xmlns="urn:jboss:domain:security:2.0"> ... <security-properties> <property name="group.name" value="engineering-group" /> <property name="encoding.algorithm" value="BASE64" /> </security-properties> </subsystem>
同じセキュリティープロパティーを elytron
サブシステムで定義するには、以下の管理 CLI コマンドを使用して elytron
サブシステムの security-properties
属性を設定します。
/subsystem=elytron:write-attribute(name=security-properties, value={ group.name = "engineering-group", encoding.algorithm = "BASE64" })
これは、サーバー設定ファイルで elytron
サブシステムの以下の security-properties
を設定します。
<subsystem xmlns="urn:wildfly:elytron:4.0" final-providers="combined-providers" disallowed-providers="OracleUcrypto"> <security-properties> <security-property name="group.name" value="engineering-group"/> <security-property name="encoding.algorithm" value="BASE64"/> </security-properties> ... </subsystem>
前のコマンドで使用した write-attribute
操作は、既存のプロパティーを上書きします。他のセキュリティープロパティーに影響を与えずにセキュリティープロパティーを追加または変更するには、管理 CLI コマンドで map
操作を使用します。
/subsystem=elytron:map-put(name=security-properties, key=group.name, value=technical-support)
同様に、map-remove
操作を使用すると特定のセキュリティープロパティーを削除できます。
/subsystem=elytron:map-remove(name=security-properties, key=group.name)