2.4. JBoss EAP インスタンスの設定
JBoss EAP にデプロイされたアプリケーションが elytron
またはレガシー security
サブシステムのいずれかを使用するように設定することができますが、両方を使用するように設定することはできません。
2.4.1. Elytron サブシステムの設定
以下の手順は、KDC、Kerberos ドメイン、およびブラウザーが設定され、動作していることを仮定しています。
kerberos-security-factory
を設定します。/subsystem=elytron/kerberos-security-factory=krbSF:add(principal="HTTP/host@REALM", path="/path/to/http.keytab", mechanism-oids=[1.2.840.113554.1.2.2, 1.3.6.1.5.5.2])
Kerberos のシステムプロパティーを設定します。
環境の設定に応じて、以下のシステムプロパティーを設定する必要があります。
システムプロパティー 説明 java.security.krb5.kdc
KDC のホスト名。
java.security.krb5.realm
レルムの名前。
java.security.krb5.conf
設定
krb5.conf
ファイルへのパス。sun.security.krb5.debug
true
の場合、デバッグモードが有効になります。管理 CLI を使用する場合、以下のように JBoss EAP のシステムプロパティーを設定します。
/system-property=java.security.krb5.conf:add(value="/path/to/krb5.conf")
ロールを割り当てるために Elytron セキュリティーレルムを設定します。
クライアントの Kerberos トークンはプリンシパルを提供しますが、そのプリンシパルをロールにマップする方法が必要になります。これには複数の方法がありますが、この例では
filesystem-realm
を作成し、Kerberos トークンからのプリンシパルと一致するレルムにユーザーを追加し、ロールをそのユーザーに割り当てます。重要filesystem-realm
はテクノロジープレビューとしてのみ提供されます。テクノロジープレビューの機能は、Red Hat の本番環境のサービスレベルアグリーメント (SLA) ではサポートされず、機能的に完全ではないことがあるため、Red Hat は本番環境での使用は推奨しません。テクノロジープレビューの機能は、最新の技術をいち早く提供して、開発段階で機能のテストやフィードバックの収集を可能にするために提供されます。テクノロジープレビュー機能のサポート範囲については、Red Hat カスタマーポータルの「テクノロジプレビュー機能のサポート範囲」を参照してください。
/subsystem=elytron/filesystem-realm=exampleFsRealm:add(path=fs-realm-users, relative-to=jboss.server.config.dir) /subsystem=elytron/filesystem-realm=exampleFsRealm:add-identity(identity=user1@REALM) /subsystem=elytron/filesystem-realm=exampleFsRealm:add-identity-attribute(identity=user1@REALM, name=Roles, value=["Admin","Guest"])
simple-role-decoder
を追加します。/subsystem=elytron/simple-role-decoder=from-roles-attribute:add(attribute=Roles)
この
simple-role-decoder
は、Roles
属性からのプリンシパルのロールをデコードします。ロールが別の属性にある場合はこの値を変更できます。security-domain
を設定します。/subsystem=elytron/security-domain=exampleFsSD:add(realms=[{realm=exampleFsRealm, role-decoder=from-roles-attribute}], default-realm=exampleFsRealm, permission-mapper=default-permission-mapper)
kerberos-security-factory
を使用するhttp-authentication-factory
を設定します。/subsystem=elytron/http-authentication-factory=example-krb-http-auth:add(http-server-mechanism-factory=global, security-domain=exampleFsSD, mechanism-configurations=[{mechanism-name=SPNEGO, mechanism-realm-configurations=[{realm-name=exampleFsSD}], credential-security-factory=krbSF}])
undertow
サブシステムでapplication-security-domain
を設定します。/subsystem=undertow/application-security-domain=app-spnego:add(http-authentication-factory=example-krb-http-auth)
2.4.2. レガシー security サブシステムの設定
JBoss EAP には、デプロイされたアプリケーションと SSO に SPNEGO および JBoss Negotiation を使用して Kerberos を使用するのに必要なすべてのコンポーネントが含まれていますが、以下の設定を変更する必要があります。
ここで使用する管理 CLI コマンドは、JBoss EAP スタンドアロンサーバーを実行していることを仮定しています。JBoss EAP 管理対象ドメインの管理 CLI を使用する場合の詳細は『管理 CLI ガイド』を参照してください。
サーバーアイデンティティーまたはホスト、セキュリティードメインの設定
このセキュリティードメインは、コンテナー自体を KDC へ認証します。ユーザーではなくコンテナー自体の認証であるため、静的ログインメカニズムを受容するログインモジュールを使用する必要があります。この例では静的プリンシパルを使用し、クレデンシャルが含まれるキータブファイルを参照します。
例: サーバーアイデンティティーセキュリティードメインの作成
/subsystem=security/security-domain=host:add(cache-type=default) /subsystem=security/security-domain=host/authentication=classic:add() /subsystem=security/security-domain=host/authentication=classic/login-module=Kerberos:add(code=Kerberos, flag=required, module-options=[storeKey=true, refreshKrb5Config=true, useKeyTab=true, principal=host/testserver@MY_REALM, keyTab=/home/username/service.keytab, doNotPrompt=true, debug=false]) reload
IBM JDK を使用している場合、Kerberos モジュールのオプションは異なります。
jboss.security.disable.secdomain.option
システムプロパティーはtrue
に設定する必要があります。詳細は、「関連するシステムプロパティーの設定」を参照してください。ログインモジュールは次のように設定する必要があります。例: IBM JDK
/subsystem=security/security-domain=host:add(cache-type=default) /subsystem=security/security-domain=host/authentication=classic:add() /subsystem=security/security-domain=host/authentication=classic/login-module=Kerberos:add(code=Kerberos, flag=required, module-options=[principal=host/testserver@MY_REALM, keyTab="file:///root/keytab", credsType=acceptor]) reload
Kerberos
ログインモジュールの設定オプションの完全リストは、JBoss EAP『Login Module Reference』を参照してください。web アプリケーションセキュリティードメインを設定します。
web アプリケーションセキュリティードメインは、個別のユーザーを KDC に対して認証するために使用されます。ユーザーの認証には最低でも 1 つのログインモジュールが必要になります。また、ユーザーに適用するロールを検索する方法も必要になります。これは、手動でユーザーをロールにマップする
<mapping>
を追加したり、ユーザーをロールにマップする 2 つ目のログインモジュールを追加するなど、複数の方法で実現できます。以下は、web アプリケーションセキュリティードメインの例になります。
例: サーバーアイデンティティーセキュリティードメインの作成
/subsystem=security/security-domain=app-spnego:add(cache-type=default) /subsystem=security/security-domain=app-spnego/authentication=classic:add() /subsystem=security/security-domain=app-spnego/authentication=classic/login-module=SPNEGO:add(code=SPNEGO, flag=required, module-options=[serverSecurityDomain=host]) reload
SPNEGO
ログインモジュールの設定オプションの完全リストは、JBoss EAP『Login Module Reference』を参照してください。関連するシステムプロパティーの設定
JBoss EAP は、Kerberos サーバーへの接続に関連するシステムプロパティーを設定する機能を提供します。KDC、Kerberos ドメイン、および ネットワーク設定に応じて、以下のシステムプロパティーが必要 (または不必要) になります。
<system-properties> <property name="java.security.krb5.kdc" value="mykdc.mydomain"/> <property name="java.security.krb5.realm" value="MY_REALM"/> <property name="java.security.krb5.conf" value="/path/to/krb5.conf"/> <property name="jboss.security.disable.secdomain.option" value="true"/> <property name="sun.security.krb5.debug" value="false"/> </system-properties>
プロパティー 説明 java.security.krb5.kdc
KDC のホスト名。
java.security.krb5.realm
レルムの名前。
java.security.krb5.conf
設定
krb5.conf
ファイルへのパス。jboss.security.disable.secdomain.option
true
に設定すると、jboss.security.security_domain
ログインモジュールオプションのセキュリティードメインで宣言されたログイモジュールへの自動追加が無効になります。IBM JDK を使用する場合はtrue
に設定する必要があります。sun.security.krb5.debug
true
の場合、デバッグモードが有効になります。注記デフォルトでは、セキュリティードメインに定義された各ログインモジュールに自動的に
jboss.security.security_domain
モジュールオプションが追加されている必要があります。このオプションは、既知のオプションのみが定義されるようにチェックを行うログインモジュールでは問題が発生します。IBM Kerberos ログインモジュールであるcom.ibm.security.auth.module.Krb5LoginModule
はこのようなログインモジュールの 1 つです。このモジュールオプションを追加する動作を無効にするには、JBoss EAP の起動時にjboss.security.disable.secdomain.option
システムプロパティーをtrue
に設定します。これを行うには、管理 CLI または管理コンソールを使用して<system-properties>
を設定するか、-Djboss.security.disable.secdomain.option=true
を起動パラメーターに追加します。システムプロパティーの設定に関する詳細は、JBoss EAP『管理 CLI ガイド』を参照してください。