第3章 認証情報のセキュアな保存

JBoss EAP では、設定ファイル外で機密文字列を暗号化できます。これらの文字列はキーストアに格納でき、その後アプリケーションおよび検証システムに対して復号化されます。機密文字列は以下のいずれかに格納できます。

  • クレデンシャルストア: JBoss EAP 7.1 で導入されるクレデンシャルストアは、ストレージファイルで暗号化することで、機密およびプレーンテキストの文字列を安全に保護できます。各 JBoss EAP サーバーに複数のクレデンシャルストアを含めることができます。
  • パスワード vault: レガシー設定で使用されると、パスワード vault は Java キーストアを使用して、設定ファイル外に機密文字列を保存します。各 JBoss EAP サーバーには単一のパスワード vault のみを含めることができます。

EAP_HOME/standalone/configuration/EAP_HOME/domain/configuration/ の設定ファイルは、すべてデフォルトでは読み取り可能です。プレーンテキストパスワードを設定ファイルに保存せず、クレデンシャルストアまたはパスワード vault のいずれかに認証情報を配置することを強く推奨します。

設定ファイルにプレーンテキストのパスワードを配置する場合、これらのファイルは、限られたユーザーのみがアクセスできるようにする必要があります。JBoss EAP 7 を実行しているユーザーアカウントには少なくとも読み書き込みアクセスが必要です。

3.1. クレデンシャルストア

elytron サブシステムで導入されたクレデンシャルストアは、セキュアなストレージおよび認証情報を使用できるようにします。クレデンシャルストアおよびその他の Elytron コンポーネントに関する背景情報は、『 セキュリティーアーキテクチャー 』ガイドの「 コアの概念およびコンポーネント 」を参照してください。

使用してパスワードやその他の機密文字列を保存するには、パスワード vault よりもクレデンシャルストアの使用が推奨されます。クレデンシャルストアを使用すると、外部ツールを使用せずに JBoss EAP 管理 CLI 内での認証情報の管理が容易になります。JBoss EAP サーバーごとに単一のパスワード vault という制限と比較すると、JBoss EAP サーバー内で複数のクレデンシャルストアを使用することもできます。

デフォルトのクレデンシャルストア実装は JCEKS キーストアファイルを使用して認証情報を保存します。新しいクレデンシャルストアを作成する場合、デフォルトの実装では、既存のキーストアファイルを参照したり、JBoss EAP で自動的に作成したりできます。現在、デフォルトの実装では、クリアテキストのパスワードのみを保存できます。

重要

elytron サブシステムは、ストレージと同じファイルを使用するためのチェックを複数のクレデンシャルストアに対して提供しません。複数のクレデンシャルストアに同じファイルを使用しないことを強く推奨します。また、リモートファイルシステムを使用してストレージファイルを共有することもお勧めします。

共有ストレージファイルを使用する必要がある場合は、アクセスしているクレデンシャルストアに read-only フラグを必ず設定してください。これにより、ファイルが変更されなくなります。ファイルを外部から更新した後は、変更された値を反映するために各クレデンシャルストアをリロードする必要があります。管理対象ドメインでクレデンシャルストアを使用する場合は、同様のプロセスを実行する必要があります。

クレデンシャルストアには機密情報が含まれるため、そのストアを含むディレクトリーには、一部のユーザーのみがアクセスできるようにする必要があります。JBoss EAP を実行しているユーザーアカウントには少なくとも読み書き込みアクセスが必要です。

重要

JBoss EAP はクレデンシャルストアファイルをメモリーに読み込み、変更を異なるタイミングで書き込みます。JBoss EAP プロセスを実行しているユーザーに、ストアファイルへのパーミッションが設定されるようにしてください。また、JBoss EAP の実行中にストアファイルを外部から変更しないようしてください。

ファイルが外部で変更されると、クレデンシャルストアで reload() 操作を使用して、JBoss EAP にストアファイルの内容を再ロードさせることができます。

3.1.1. クレデンシャルストアの作成

クレデンシャルストアを作成するには、新しいクレデンシャルストアファイルへのパスを定義し、クレデンシャルストアの暗号化に使用するマスターパスワードを指定する必要があります。このストアを含むディレクトリーは、一部のユーザーのみがアクセスできるようにする必要があります。JBoss EAP を実行しているユーザーアカウントには少なくとも読み書き込みアクセスが必要です。

重要

JCEKS キーストアの実装は Java ベンダーごとに異なります。そのため、JBoss EAP インスタンスは JCEKS キーストアを生成した同じベンダーから JDK を実行する必要があります。

その他の JBoss EAP 設定でパスを指定するのと同様に、relative-to 属性を使用して別のものに相対パスを指定することもできます。

スタンドアロンサーバーのクレデンシャルストアの作成

以下の管理 CLI コマンドを使用してクレデンシャルストアを作成します。

/subsystem=elytron/credential-store=<store_name>:add(location="<path_to_store_file>", credential-reference={clear-text=<store_password>},create=true)

たとえば、以下のコマンドでは my_store という名前の新規ストアを作成し、jboss.server.data.dir/cred_stores/my_store.jceks ファイルを作成します。

/subsystem=elytron/credential-store=my_store:add(location="cred_stores/my_store.jceks", relative-to=jboss.server.data.dir,  credential-reference={clear-text=<secret_store_password>},create=true)
注記

default 以外の実装を使用する場合は、クレデンシャルストアのタイプを明示的に定義できます。詳細は「using a custom credential store implementation」のセクションを参照してください。

管理対象ドメインでのクレデンシャルストアの作成

管理対象ドメインでクレデンシャルストアを作成できますが、最初に WildFly Elytron Tool を使用して認証情報でリソースを準備する必要があります。管理対象ドメインに複数のホストコントローラーが存在する場合は、以下のいずれかのオプションを選択する必要があります。

  • 各ホストコントローラーにクレデンシャルストアを作成します。
  • クレデンシャルストアをホストコントローラーから他のすべてのホストコントローラーにコピーします。
  • ストレージファイルを Network File System(NFS)に配置し、作成されたすべてのクレデンシャルストアリソースにファイルを使用します。

または、WildFly Elytron Tool を使用せずにホストコントローラーに認証情報を指定してクレデンシャルストアファイルを作成できます。

注記

各サーバーにクレデンシャルストアリソースを定義する必要はありません。リソースが作成されるものと同じプロファイルを実行している各サーバーには、クレデンシャルストアファイルが含まれます。ストレージファイルは、サーバーデータディレクトリー relative-to=jboss.server.data.dir にあります。

手順

  1. WildFly Elytron Tool を使用してクレデンシャルストアストレージファイルを作成します。詳細は、「WildFly Elytron Tool を使用した認証情報ストアのオフライン作成および修正」を参照してください。
  2. ストレージファイルを配布します。たとえば、scp を使用してファイルを各ホストコントローラーに配布するか、NFS に保存して、作成したすべてのクレデンシャルストアリソースに使用します。

    注記

    NFS に保存され、複数のホストコントローラーのリソースで使用されるクレデンシャルストアファイルについては、クレデンシャルストアを読み取り専用モードで使用し、一貫性を維持する必要があります。さらに、クレデンシャルストアファイルの絶対パスを指定します。

    /profile=<profile_name>/subsystem=elytron/credential-store=<store_name>:add(location=<absolute_path_to_store_keystore>,credential-reference={clear-text="<store_password>"},create=false,modifiable=false)
  3. オプション: クレデンシャルストアリソースをプロファイルで定義する必要がある場合は、ストレージファイルを使用してリソースを作成します。

    ストレージファイルからクレデンシャルストアリソースを作成する例。

    /profile=<profile_name>/subsystem=elytron/credential-store=<store_name>:add(location=<path_to_store_file>,credential-reference={clear-text="<store_password>"})

  4. オプション: ホストコントローラーの認証情報ストアリソースを作成します。

    ホストコントローラーのクレデンシャルストアリソースを作成する例。

    /host=<host_controller_name>/subsystem=elytron/credential-store=<store_name>:add(location=<path_to_store_file>,credential-reference={clear-text="<store_password>"})

3.1.2. 認証情報をクレデンシャルストアに追加する

新しい認証情報をクレデンシャルストアに追加するには、保存したい機密文字列にエイリアスを関連付けます。

注記

クレデンシャルストアのエイリアスは、デフォルトで大文字と小文字を区別しません。保存されたエイリアスは小文字で表示されます。また、大文字と小文字の組み合わせを使用して参照できます。

カスタムクレデンシャルストアを使用すると、ケースの機密性はカスタム実装によって決定されます。

以下の管理 CLI コマンドは認証情報をクレデンシャルストアに追加します。

/subsystem=elytron/credential-store=STORE_NAME:add-alias(alias=ALIAS, secret-value="SENSITIVE_STRING")

たとえば、エイリアス database-pw のあるパスワードを前のセクションで作成したストアに追加するには、以下を実行します。

/subsystem=elytron/credential-store=my_store:add-alias(alias=database-pw, secret-value="speci@l_db_pa$$_01")

管理対象ドメインのクレデンシャルストアに認証情報を追加する方法は、「 WildFly Elytron Tool を使用したクレデンシャルストアへの認証情報の追加 」を参照してください。

管理コンソールを使用した認証情報ストアエイリアスの編集
  1. 管理コンソールにログインし、Runtime タブをクリックします。
  2. サーバーを選択し、Security (Elytron)Stores の順に選択し、View をクリックします。
  3. クレデンシャルストアを選択し、Aliases をクリックしてエイリアスを編集します。

3.1.3. 設定で保存された認証情報の使用

クレデンシャルストアに保存されているパスワードまたは機密文字列を参照するには、JBoss EAP 設定で credential-reference 属性を使用します。credential-reference は、JBoss EAP 設定の全体でパスワードやその他の機密文字列を提供する代わりに使用できます。

credential-reference={store=STORE_NAME, alias=ALIAS}

たとえば、前のサンプルのクレデンシャルストアに追加されたパスワードを使用して新しいデータソースを作成する場合は、以下のように credential-reference を使用できます。

data-source add --name=my_DS --jndi-name=java:/my_DS --driver-name=h2 --connection-url=jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE --user-name=db_user --credential-reference={store=my_store, alias=database-pw}

上記の例では、--password を使用してパスワードを指定する代わりに、ストア名とエイリアスを含む credential-reference が指定されます。作成されたデータソース設定を確認すると、パスワードは定義されず、password が定義されておらず、credential-reference 属性が定義されることに注意してください。

/subsystem=datasources/data-source=my_DS:read-resource()
{
    "outcome" => "success",
    "result" => {
        ...
        "credential-reference" => {
            "store" => "my_store",
            "alias" => "database-pw"
        },
        ...
        "password" => undefined,
        ...
    }
}

3.1.4. クレデンシャルストアの認証情報の自動更新

クレデンシャルストアをお持ちの場合は、認証情報を参照する前に認証情報を追加したり、既存の認証情報を更新したりする必要はありません。Elytron はこのプロセスを自動化します。

認証情報参照を設定する場合は、store 属性と clear-text 属性の両方を指定します。Elytron は、store 属性によって指定されたクレデンシャルストアの認証情報を自動的に追加 または更新します。オプションで alias 属性を指定できます。

Elytron は以下のようにクレデンシャルストアを更新します。

  • エイリアスを指定する場合は、以下を行います。

    • エイリアスのエントリーが存在する場合は、既存の認証情報が指定のクリアテキストパスワードに置き換えられます。
    • エイリアスのエントリーが存在しない場合は、指定したエイリアスとクリアテキストパスワードを使用して、クレデンシャルストアに新しいエントリーが追加されます。
  • エイリアスを指定しない場合、Elytron はエイリアスを生成し、生成されたエイリアスと指定のクリアテキストパスワードを使用してクレデンシャルストアに新しいエントリーを追加します。

clear-text 属性は、クレデンシャルストアが更新されると管理モデルから削除されます。

以下の例は、store、clear -text、および alias 属性を指定する認証情報参照を作成する方法を示しています。

/subsystem=elytron/key-store=exampleKS:add(relative-to=jboss.server.config.dir, path=example.keystore, type=JCEKS, credential-reference={store=mycredstore, alias=myNewAlias, clear-text=myNewPassword})
{
    "outcome" => "success",
    "result" => {"credential-store-update" => {
        "status" => "new-entry-added",
        "new-alias" => "myNewAlias"
    }}
}

以下のコマンドを使用して、以前に定義したクレデンシャルストアに追加された myNewAlias エントリーの認証情報を更新できます。

/subsystem=elytron/key-store=exampleKS:write-attribute(name=credential-reference.clear-text,value=myUpdatedPassword)
{
    "outcome" => "success",
    "result" => {"credential-store-update" => {"status" => "existing-entry-updated"}},
    "response-headers" => {
        "operation-requires-reload" => true,
        "process-state" => "reload-required"
    }
}
注記

credential-reference パラメーターを含む操作が失敗すると、自動クレデンシャルストアの更新は実行されません。

credential-reference 属性によって指定されたクレデンシャルストアは変更されません。

3.1.5. クレデンシャルストアの認証情報のリスト

以下の管理 CLI コマンドを使用すると、クレデンシャルストアに含まれるすべての認証情報のエイリアスを一覧表示できます。

/subsystem=elytron/credential-store=STORE_NAME:read-aliases()

例を以下に示します。

/subsystem=elytron/credential-store=my_store:read-aliases()
{
    "outcome" => "success",
    "result" => [
        "database-pw"
    ]
}

3.1.6. クレデンシャルストアからの認証情報の削除

以下のコマンドを使用して、クレデンシャルストアから認証情報を削除できます。

/subsystem=elytron/credential-store=STORE_NAME:remove-alias(alias=ALIAS)

例を以下に示します。

/subsystem=elytron/credential-store=my_store:remove-alias(alias=database-pw)

3.1.7. 外部ソースからクレデンシャルストアのマスターパスワードの取得

クレデンシャルストアのマスターパスワードをクリアで指定する代わりに、擬似クレデンシャルストアを使用してパスワードを指定することもできます。以下のオプションを使用できます。

EXT

java.lang.Runtime#exec(java.lang.String) を使用した外部コマンド。パラメーターが必要な場合、それらは文字列のスペースで区切られたリストを使用して指定されます。外部コマンドは、オペレーティングシステムからの実行可能ファイル (シェルスクリプトや実行可能バイナリーなど) を参照します。パスワードは、実行したコマンドの標準出力から読み込まれます。

{EXT}/usr/bin/getTheMasterPasswordScript.sh par1 par2

CMD

java.lang.ProcessBuilder を使用した外部コマンドパラメーターが必要な場合、それらは文字列のカンマ区切られたリストを使用して指定されます。外部コマンドは、オペレーティングシステムからの実行可能ファイル (シェルスクリプトや実行可能バイナリーなど) を参照します。パスワードは、実行したコマンドの標準出力から読み込まれます。

{CMD}/usr/bin/getTheMasterPasswordScript.sh par1,par2

MASK

PBE または Password Based Encryption を使用してマスクされたパスワード。SALT および ITERATION の値が含まれる以下の形式である必要があります。

MASK-MASKED_VALUE;SALT;ITERATION

MASK-NqMznhSbL3lwRpDmyuqLBW==;12345678;123

重要

EXTCMD、および MASK は、外部パスワードを提供するレガシーセキュリティー vault スタイルと後方互換性を提供します。MASK には、SALTITERATION の値が含まれる上記の形式を使用する必要があります。

また、別のクレデンシャルストアにあるパスワードを、新しいクレデンシャルストアのマスターパスワードとして使用することもできます。

別のクレデンシャルストアのパスワードで作成されたクレデンシャルストアの例

/subsystem=elytron/credential-store=exampleCS:add(location="cred_stores/exampleCS.jceks", relative-to=jboss.server.data.dir, create=true, credential-reference={store=master-cred-store, alias=master-pw})

3.1.8. FIPS 140-2 対応クレデンシャルストアの定義

FIPS 140-2 準拠のクレデンシャルストアは、以下のいずれかの方法で定義できます。

3.1.8.1. NSS データベースを使用した FIPS 140-2 対応クレデンシャルストアの定義

FIPS に準拠するキーストアを取得するには、NSS データベースにアクセスする Sun PKCS#11 プロバイダーを使用します。データベースの定義方法には、「NSS データベースの設定」を参照してください。

  1. クレデンシャルストアで使用する秘密鍵を作成します。

    注記

    keytool コマンドが機能するには、nss_pkcsll_fips.cfg ファイルで nssDbMode 属性を readWrite の値に割り当てる必要があります。

    $ keytool -keystore NONE -storetype PKCS11 -storepass STORE_PASSWORD -genseckey -alias ALIAS -keyalg AES -keysize 256
  2. 外部クレデンシャルストアを作成します。外部クレデンシャルストアは PKCS#11 キーストアに秘密鍵を保持し、前の手順で定義したエイリアスを使用してこのキーストアにアクセスします。その後、このキーストアは JCEKS キーストアの認証情報を復号化するために使用されます。credential-store 属性に加え、credential-store KeyStoreCredentialStore 実装プロパティーは、外部クレデンシャルストアを設定するのに使用されます。

    /subsystem=elytron/credential-store=STORE_NAME:add(modifiable=true, implementation-properties={"keyStoreType"=>"PKCS11","external"=>"true","keyAlias"=>"ALIAS", externalPath="/path/to/EXTERNAL_STORAGE"},credential-reference={clear-text="STORE_PASSWORD"}, create=true)
  3. 作成後、クレデンシャルストアを使用して通常通りにエイリアスを保存することができます。

    /subsystem=elytron/credential-store=STORE_NAME:add-alias(alias="ALIAS", secret-value="SENSITIVE_STRING")
  4. クレデンシャルストアから読み取り、エイリアスが正常に追加されたことを確認します。

    /subsystem=elytron/credential-store=STORE_NAME:read-aliases()

3.1.8.2. BouncyCastle プロバイダーを使用した FIPS 140-2 対応クレデンシャルストアの定義

以下の手順では、BouncyCastle プロバイダーを使用して FIPS 準拠のキーストアを取得する方法の概要を説明します。

  1. お使いの環境が BouncyCastle プロバイダーを使用するように設定されていることを確認します。
  2. クレデンシャルストアで使用する秘密鍵を作成します。

    $ keytool -genseckey -alias KEY_ALIAS -keyalg AES -keysize 128 -keystore KEYSTORE -storetype BCFKS -storepass PASSWORD -keypass PASSWORD
    重要

    FIPS クレデンシャルストアを elytron サブシステムで定義するには、キーストアの keypass および storepass が同じである必要があります。

  3. 外部クレデンシャルストアを作成します。外部クレデンシャルストアは BCFKS キーストアの秘密鍵を保持し、前の手順で定義したエイリアスを使用してこのキーストアにアクセスします。その後、このキーストアは JCEKS キーストアの認証情報を復号化するために使用されます。credential-store KeyStoreCredentialStore 実装プロパティーは、外部クレデンシャルストアを設定するために使用されます。

    /subsystem=elytron/credential-store=BCFKS_CREDENTIAL_STORE:add(relative-to=jboss.server.config.dir,credential-reference={clear-text=PASSWORD},implementation-properties={keyAlias=KEY_ALIAS,external=true,externalPath=CREDENTIAL_STORE,keyStoreType=BCFKS},create=true,location=KEYSTORE,modifiable=true)
  4. 作成後、クレデンシャルストアを使用して通常通りにエイリアスを保存することができます。

    /subsystem=elytron/credential-store=BCFKS_CREDENTIAL_STORE:add-alias(alias="ALIAS", secret-value="SENSITIVE_STRING")
  5. クレデンシャルストアから読み取り、エイリアスが正常に追加されたことを確認します。

    /subsystem=elytron/credential-store=BCFKS_CREDENTIAL_STORE:read-aliases()

3.1.9. クレデンシャルストアのカスタム実装の使用

クレデンシャルストアのカスタム実装を使用するには、以下を実行します。

  1. Service Provider Interface (SPI) CredentialStoreSpi 抽象クラスを拡張するクラスを作成します。
  2. Java Security Provider を実装するクラスを作成します。このプロバイダーはカスタムクレデンシャルストアクラスをサービスとして追加する必要があります。
  3. クレデンシャルストアおよびプロバイダークラスが含まれるモジュールを作成し、org.wildfly.security.elytron における依存関係とともに JBoss EAP に追加します。例を以下に示します。

    module add --name=org.jboss.customcredstore --resources=/path/to/customcredstoreprovider.jar --dependencies=org.wildfly.security.elytron --slot=main
  4. プロバイダーのプロバイダーローダーを作成します。例を以下に示します。

    /subsystem=elytron/provider-loader=myCustomLoader:add(class-names=[org.wildfly.security.mycustomcredstore.CustomElytronProvider],module=org.jboss.customcredstore)
  5. カスタム実装を使用してクレデンシャルストアを作成します。

    注記

    適切な providers および type の値を指定するようにしてください。type の値は、カスタムクレデンシャルストアクラスをサービスとして追加するプロバイダークラスで使用されるものです。

    例を以下に示します。

    /subsystem=elytron/credential-store=my_store:add(providers=myCustomLoader,type=CustomKeyStorePasswordStore,location="cred_stores/my_store.jceks",relative-to=jboss.server.data.dir,credential-reference={clear-text=supersecretstorepassword},create=true)

    また、複数のプロバイダーを作成した場合は、other-providers で別のプロバイダーローダーを使用して追加のプロバイダーを指定することもできます。これにより、新しいタイプの認証情報の追加実装が可能になります。指定した他のプロバイダーは、カスタムクレデンシャルストアの initialize メソッドで Provider[] 引数として自動的にアクセスできます。例を以下に示します。

    /subsystem=elytron/credential-store=my_store:add(providers=myCustomLoader,other-providers=myCustomLoader2,type=CustomKeyStorePasswordStore,location="cred_stores/my_store.jceks",relative-to=jboss.server.data.dir,credential-reference={clear-text=supersecretstorepassword},create=true)

3.1.10. WildFly Elytron Tool を使用した認証情報ストアのオフライン作成および修正

WildFly Elytron ツールは EAP_HOME/bin/ にある elytron-tool スクリプトを使用してアクセスします。このツールを使うことで、オフラインまたは停止された JBoss EAP サーバーのクレデンシャルストアを作成および変更できます。

重要

JCEKS キーストアの実装は Java ベンダーごとに異なります。そのため、JBoss EAP インスタンスは JCEKS キーストアを生成した同じベンダーから JDK を実行する必要があります。

重要

WildFly Elytron ツールを使用して、稼働中の JBoss EAP サーバーによって使用されているクレデンシャルストアを変更すると、ストアへの変更が失われる可能性があります。その代わりに、前述のセクションで説明されているように管理 CLI を使用して、稼働中のサーバーのクレデンシャルストアを作成し、変更する必要があります。

以下のコマンドは、Red Hat Enterprise Linux および Solaris システムで elytron-tool.sh を使用して示します。Windows Server システムの場合は、代わりに elytron-tool.bat スクリプトを使用してください。

WildFly Elytron ツールを使用したクレデンシャルストアの作成

以下のコマンドで、WildFly Elytron ツールを使用してクレデンシャルストアを作成します。

$ EAP_HOME/bin/elytron-tool.sh credential-store --create --location "path/to/store_file" --password STORE_PASSWORD

例を以下に示します。

$ EAP_HOME/bin/elytron-tool.sh credential-store --create --location "../cred_stores/my_store.jceks" --password supersecretstorepassword

コマンドでストアパスワードを指定しない場合は、その引数を省略し、標準入力を使用して手動でパスワードを入力するように求められます。ストアパスワードのには、Wi8ldFly Elytron ツールで生成された、マスクされたパスワードを使用することもできます。

WildFly Elytron Tool による BouncyCastle プロバイダーを使用した認証情報ストアの作成

以下の手順では、WildFly Elytron ツールを使用してクレデンシャルストアを作成する方法を説明します。

  1. 環境が BouncyCastle プロバイダーを使用するように設定されていることを確認します
  2. BCFKS キーストアを定義します。このキーストアがすでに存在する場合は、次のステップに進んでください。

    $ keytool -genkeypair -alias ALIAS -keyalg RSA -keysize 2048 -keypass PASSWORD -keystore KEYSTORE -storetype BCFKS -storepass PASSWORD
    重要

    FIPS クレデンシャルストアを elytron サブシステムで定義するには、キーストアの keypass および storepass が同じである必要があります。

  3. クレデンシャルストアの秘密鍵を生成します。

    $ keytool -genseckey -alias KEY_ALIAS -keyalg AES -keysize 128 -keystore KEYSTORE -storetype BCFKS -storepass PASSWORD -keypass PASSWORD
  4. 以下のコマンドで、WildFly Elytron ツールを使用してクレデンシャルストアを定義します。

    $ EAP_HOME/bin/elytron-tool.sh credential-store -c -a ALIAS -x ALIAS_PASSWORD -p PASSWORD -l KEYSTORE -u "keyStoreType=BCFKS;external=true;keyAlias=KEY_ALIAS;externalPath=CREDENTIAL_STORE"

WildFly Elytron Tool を使用したクレデンシャルストアへの認証情報の追加

以下のコマンドで、WildFly Elytron ツールを使用してクレデンシャルストアに認証情報を追加します。

$ EAP_HOME/bin/elytron-tool.sh credential-store --location "path/to/store_file" --password STORE_PASSWORD --add ALIAS --secret SENSITIVE_STRING

例を以下に示します。

$ EAP_HOME/bin/elytron-tool.sh credential-store --location "../cred_stores/my_store.jceks" --password supersecretstorepassword --add database-pw --secret speci@l_db_pa$$_01

クレデンシャルストアのパスワードを提供するのと同様に、コマンドでシークレットを指定しない場合は、この引数を省略できます。その場合、標準入力を使用してシークレットを手動で入力するように求められます。

WildFly Elytron Tool を使用したクレデンシャルストアのすべての認証情報の一覧表示

以下のコマンドで、WildFly Elytron ツールを使用してクレデンシャルストアの認証情報を一覧表示します。

$ EAP_HOME/bin/elytron-tool.sh credential-store --location "path/to/store_file" --password STORE_PASSWORD --aliases

例を以下に示します。

$ EAP_HOME/bin/elytron-tool.sh credential-store --location "../cred_stores/my_store.jceks" --password supersecretstorepassword --aliases

Wildfly Elytron Tool を使用した、認証情報ストアにエイリアスが存在するかどうかの確認

以下のコマンドで、WildFly Elytron ツールを使用してクレデンシャルストアにエリアスが存在するかどうかを確認します。

$ EAP_HOME/bin/elytron-tool.sh credential-store --location "path/to/store_file" --password STORE_PASSWORD --exists ALIAS

例を以下に示します。

$ EAP_HOME/bin/elytron-tool.sh credential-store --location "../cred_stores/my_store.jceks" --password supersecretstorepassword --exists database-pw

WildFly Elytron Tool を使用した認証情報ストアからの認証情報の削除

以下のコマンドで、WildFly Elytron ツールを使用してクレデンシャルストアから認証情報を削除します。

$ EAP_HOME/bin/elytron-tool.sh credential-store --location "path/to/store_file" --password STORE_PASSWORD --remove ALIAS

例を以下に示します。

$ EAP_HOME/bin/elytron-tool.sh credential-store --location "../cred_stores/my_store.jceks" --password supersecretstorepassword --remove database-pw

WildFly Elytron Tool で作成されたクレデンシャルストアを JBoss EAP サーバーに追加

WildFly Elytron ツールを使用してクレデンシャルストアを作成したら、以下の管理 CLI コマンドを使用して、実行している JBoss EAP サーバーに追加します。

/subsystem=elytron/credential-store=STORE_NAME:add(location="path/to/store_file",credential-reference={clear-text=STORE_PASSWORD})

例を以下に示します。

/subsystem=elytron/credential-store=my_store:add(location="../cred_stores/my_store.jceks",credential-reference={clear-text=supersecretstorepassword})

クレデンシャルストアを JBoss EAP 設定に追加することで、credential-reference 属性を使用してクレデンシャルストアに保存されているパスワードまたは機密文字列を参照できます。

詳細は、EAP_HOME/bin/elytron-tool.sh credential-store --help コマンドを使用して、利用可能なオプションの詳細な一覧を表示してください。

3.1.10.1. WildFly Elytron Tool を使用した、マスクされた文字列の生成

WildFly Elytron ツールで、クレデンシャルストアのプレーンテキストパスワードの代わりに使用する PicketBox と互換性のある MASK- で暗号化した文字列を生成できます。

マスクされた文字列を生成するには、以下のコマンドを使用して salt および iteration count の値を指定します。

$ EAP_HOME/bin/elytron-tool.sh mask --salt SALT --iteration ITERATION_COUNT --secret PASSWORD

例を以下に示します。

$ EAP_HOME/bin/elytron-tool.sh mask --salt 12345678 --iteration 123 --secret supersecretstorepassword

MASK-8VzWsSNwBaR676g8ujiIDdFKwSjOBHCHgnKf17nun3v;12345678;123

コマンドでシークレットを指定しない場合は、その引数を省略し、標準入力を使用して手動でシークレットを入力するように求められます。

詳細は、EAP_HOME/bin/elytron-tool.sh mask --help コマンドを使用して、利用可能なオプションの詳細な一覧を表示してください。

3.1.10.2. WildFly Elytron Tool を使用した、パスワード vault のクレデンシャルストアへの変換

WildFly Elytron ツールを使用することで、パスワード vault をクレデンシャルストアに変換できます。パスワード vault をクレデンシャルストアに変換するには、vault の初期化時に vault の値を使用する必要があります。

注記

パスワード vault を変換する際に、新しいクレデンシャルストアのエイリアスは、同等のパスワード vault ブロックおよび属性名 (VAULT_BLOCK::ATTRIBUTE_NAME) に基づいて、以下の形式で名前が付けられます。

シングルパスワード vault の変換

以下のコマンドで、単一のパスワード vault をクレデンシャルストアに変換します。

$ EAP_HOME/bin/elytron-tool.sh vault --keystore "path/to/vault_file" --keystore-password VAULT_PASSWORD --enc-dir "path/to/vault_directory" --salt SALT --iteration ITERATION_COUNT --alias VAULT_ALIAS

たとえば、--location 引数を使用して、新しいクレデンシャルストアのファイル名と場所を指定することもできます。

$ EAP_HOME/bin/elytron-tool.sh vault --keystore ../vaults/vault.keystore --keystore-password vault22 --enc-dir ../vaults/ --salt 1234abcd --iteration 120 --alias my_vault --location ../cred_stores/my_vault_converted.cred_store
注記

--summary 引数を使用して、変換に使用する管理 CLI コマンドの概要を出力することもできます。プレーンテキストのパスワードが使用される場合でも、これはサマリー出力でマスクされることに注意してください。このコマンドで指定しない限り、デフォルトの SALTITERATION の値が使用されます。

複数パスワード vault の一括変換

複数のパスワード vault を一括変換するには、以下を実行します。

  1. 以下の形式で、変換する vault の詳細を記述ファイルに配置します。

    keystore:path/to/vault_file
    keystore-password:VAULT_PASSWORD
    enc-dir:path/to/vault_directory
    salt:SALT 1
    iteration:ITERATION_COUNT
    location:path/to/converted_cred_store 2
    alias:VAULT_ALIAS
    properties:PARAMETER1=VALUE1;PARAMETER2=VALUE2; 3
    1
    vault にプレーンテキストのパスワードを指定する場合は salt および iteration は省略できます。
    2
    変換したクレデンシャルストアの場所とファイル名を指定します。
    3
    オプション: オプションパラメーターのリストをセミコロン区切り (;) で指定します。利用可能なパラメーターの一覧は、EAP_HOME/bin/elytron-tool.sh vault --help を参照してください。

    例を以下に示します。

    keystore:/vaults/vault1/vault1.keystore
    keystore-password:vault11
    enc-dir:/vaults/vault1/
    salt:1234abcd
    iteration:120
    location:/cred_stores/vault1_converted.cred_store
    alias:my_vault
    
    keystore:/vaults/vault2/vault2.keystore
    keystore-password:vault22
    enc-dir:/vaults/vault2/
    salt:abcd1234
    iteration:130
    location:/cred_stores/vault2_converted.cred_store
    alias:my_vault2
  2. 直前の手順の説明ファイルを使用して、一括変換コマンドを実行します。

    $ EAP_HOME/bin/elytron-tool.sh vault --bulk-convert vaultdescriptions.txt

詳細は、EAP_HOME/bin/elytron-tool.sh vault --help コマンドを使用して、利用可能なオプションの詳細な一覧を表示してください。

3.1.11. Elytron クライアントでのクレデンシャルストアの使用

Jakarta Enterprise Beans などの JBoss EAP に接続するクライアントは、Elytron クライアントを使用して認証できます。実行中の JBoss EAP サーバーにアクセスできないユーザーは、WildFly Elytron ツールを使用してクレデンシャルストアを作成および変更できます。そのため、クライアントは Elytron クライアントを使用してクレデンシャルストア内の機密情報にアクセスできます。

以下の例は、Elytron クライアント設定ファイルでクレデンシャルストアを使用する方法を示しています。

クレデンシャルストアを含む custom-config.xml の例

<configuration>
  <authentication-client xmlns="urn:elytron:client:1.2">
    ...
    <credential-stores>
      <credential-store name="my_store"> 1
        <protection-parameter-credentials>
          <credential-store-reference clear-text="pass123"/> 2
        </protection-parameter-credentials>
        <attributes>
          <attribute name="location" value="/path/to/my_store.jceks"/> 3
        </attributes>
      </credential-store>
    </credential-stores>
    ...
    <authentication-configurations>
      <configuration name="my_user">
        <set-host name="localhost"/>
        <set-user-name name="my_user"/>
        <set-mechanism-realm name="ManagementRealm"/>
        <use-provider-sasl-factory/>
        <credentials>
          <credential-store-reference store="my_store" alias="my_user"/> 4
        </credentials>
      </configuration>
    </authentication-configurations>
    ...
  </authentication-client>
</configuration>

1
Elytron クライアント設定ファイル内で使用するクレデンシャルストアの名前。
2
クレデンシャルストアのマスターパスワード。
3
クレデンシャルストアファイルへのパス。
4
クレデンシャルストアに保存される機密文字列のクレデンシャル参照。

Elytron Client を使用したクライアント認証の設定に関する詳細は、JBoss EAP『 How to Configure Identity Management Guide』を参照してください