第2章 初期状態の Red Hat JBoss Enterprise Application Platform 7.1 によるセキュリティーの対処

JBoss EAP 7.1 には、セキュリティーに関する 3 つのコンポーネントが同梱されています。

これらのコンポーネントは、一般的なセキュリティー概念の概要で説明した一般的なセキュリティー概念を基にしていますが、実装に JBoss EAP 固有の概念も取り入れています。

2.1. コアサービス、サブシステム、およびプロファイル

JBoss EAP は、モジュラークラスローディングの概念を基にして構築されています。JBoss EAP によって提供される各 API およびサービスはモジュールとして実装され、必要に応じてロードおよびアンロードされます。コアサービスは、サーバーの起動時に常にロードされるサービスで、追加のサブシステムを起動する前に実行する必要があります。

サブシステムは、拡張によってコアサーバーに追加される性能のことです。たとえば、異なるサブシステムによってサーブレットの処理、EJB コンテナーの管理、および JTA サポートの提供が行われます。

プロファイルはサブシステムの名前付きリストで、各サブシステムの設定の詳細と提供されます。サブシステムの数が多いプロファイルを使用すると、サーバーの性能も多くなります。プロファイルのサブシステムをより限定して少なくすると、性能も少なくなりますが、フットプリントが小さくなります。デフォルトでは、JBoss EAP には defaultfullhafull-ha などの事前定義されたプロファイルが複数含まれています。これらのプロファイルでは、管理インターフェースと関連するセキュリティーレルムはコアサービスとしてロードされます。

2.2. 管理インターフェース

JBoss EAP では、主に管理コンソールと管理 CLI の 2 つの管理インターフェースを使用して設定の指定や編集を行います。これらのインターフェースはいずれも JBoss EAP のコア管理の機能を公開し、同じコア管理システムにアクセスする方法を 2 つ提供します。

管理コンソールは、JBoss EAP の web ベースの管理ツールです。サーバーの開始および停止、アプリケーションのデプロイおよびアンデプロイ、システム設定の調整、サーバー設定への永続的な変更を行うために使用できます。管理コンソールは、管理タスクを実行する機能も持ち、変更の反映にサーバーインスタンスの再起動またはリロードが必要な場合はライブ通知も行います。管理対象ドメインでは、同じドメインのサーバーインスタンスとサーバーグループをドメインコントローラーの管理コンソールから集中管理できます。

管理 CLI は、JBoss EAP のコマンドラインの管理ツールです。管理 CLI は、サーバーの開始および停止、アプリケーションのデプロイおよびアンデプロイ、システム設定の指定、およびその他の管理タスクの実行に使用できます。管理 CLI は、管理対象ドメインのドメインコントローラーに接続し、ドメインで管理操作を実行することもできます。管理 CLI は、web ベースの管理ツールが実行できるタスクをすべて実行でき、web ベースの管理ツールでは利用できない多くの細かな低レベル操作も実行できます。

注記

JBoss EAP に含まれる API を使用すると、JBoss EAP に同梱されるクライアントだけでなく、他のクライアントを作成して HTTP またはネイティブインターフェース上で管理インターフェースを呼び出しすることができます。

2.3. JMX

JMX (Java Management Extensions) は、JDK およびアプリケーション管理操作をリモートで行う方法を提供します。JBoss EAP の管理 API は、JMX 管理 Bean として公開されます。これらの管理 Bean はコア MBean と呼ばれ、この Bean へのアクセスは基盤の管理 API と全く同じように制御およびフィルターされます。

管理 CLI と管理コンソールの他に、JMX 公開 Bean は管理操作にアクセスし、実行するための代替メカニズムです。

2.4. ロールベースのアクセス制御

ロールベースのアクセス制御 (RBAC) は管理ユーザーにパーミッションを指定するメカニズムです。JBoss EAP サーバーの管理責任を複数のユーザーに分担でき、各ユーザーは無制限のアクセスを必要としません。JBoss EAP では、管理ユーザーの役割を分離することで、不必要な権限を与えずに、組織の個人やグループ間で責任を簡単に分散できます。これにより、設定、デプロイメント、および管理の柔軟性を維持しながらサーバーやデータのセキュリティーを可能な限り最大限にします。

JBoss EAP の RBAC は、ロールパーミッションと制約の組み合わせによって動作します。事前定義されたロールが 7 つ用意され、各ロールは異なる固定のパーミッションを持ちます。各管理ユーザーには、サーバーの管理時に許可される動作を指定する 1 つ以上のロールが割り当てられます。

JBoss EAP では、RBAC はデフォルトで無効になっています。

標準のロール

JBoss EAP には、MonitorOperatorMaintainerDeployerAuditorAdministrator、および SuperUser の 7 つユーザーロールが事前定義されています。各ロールは、異なるパーミッションのセットを持ち、特定のユースケースに対応します。パーミッションの数は、MonitorOperatorMaintainerAdministratorSuperUser ロールの順に多くなり、それぞれその前のロールのパーミッションを持ちます。Auditor ロールは Monitor ロール、Deployer ロールは Maintainer ロールと似ていますが、特別なパーミッションを持ち、制限が適用されます。

Monitor
Monitor ロールは最も少ないパーミッションを持ち、現在の設定とサーバーの状態のみを読み取りできます。このロールは、サーバーのパフォーマンスを追跡および報告する必要があるユーザーを対象としています。Monitor ロールを持つユーザーはサーバー設定を変更できず、機密のデータや操作にもアクセスできません。
Operator
Operator ロールは Monitor ロールのパーミッションに加え、サーバーのランタイム状態を変更することができます。このため、Operator ロールを持つユーザーはサーバーのリロードおよびシャットダウンを実行でき、JMS 宛先の一時停止および再開も実行できます。Operator ロールは、必要時にサーバーを確実にシャットダウンおよび再起動できるため、アプリケーションサーバーの物理または仮想ホストの責任者に適したロールです。Operator ロールを持つユーザーはサーバー設定を変更できず、機密のデータや操作にもアクセスできません。
Maintainer
Maintainer ロールは、ランタイム状態と、機密データおよび機密操作を除くすべての設定を表示および変更できます。Maintainer ロールは機密データと機密操作にアクセスできない汎用のロールです。Maintainer ロールを持つユーザーには、パスワードやその他の機密情報へのアクセスを許可せずに、サーバー管理に必要なほぼ完全なアクセス権利を付与することができます。Maintainer は機密のデータや操作にはアクセスできません。
Administrator
Administrator ロールは、監査ロギングシステムを除くサーバーのすべてのリソースおよび操作に無制限にアクセスできます。Administrator ロールは機密のデータや操作にアクセスできます。また、このロールはアクセス制御システムも設定できます。Administrator ロールは、機密データを扱う場合やユーザーやロールを設定する場合のみ必要となります。Administrator は監査ロギングシステムにはアクセスできず、Auditor または SuperUser ロールに変わることはできません。
SuperUser
SuperUser ロールには制限がなく、監査ロギングシステムと機密データを含むサーバーのすべてのリソースと操作に完全アクセスできます。RBAC が無効の場合、すべての管理ユーザーは SuperUser ロールと同等のパーミッションを持ちます。
Deployer
Deployer ロールは Monitor ロールと同じパーミッションを持ちますが、デプロイメントと、アプリケーションリソースとして有効になっている他のリソースタイプの設定および状態を変更できます。
Auditor
Auditor ロールは Monitor ロールのパーミッションをすべて持ちます。機密データも閲覧できますが、変更はできません。監査ロギングシステムに完全アクセスできます。SuperUser 以外のロールで監査ロギングシステムにアクセスできるのは Auditor ロールのみです。 Auditor は機密データやリソースを変更できず、読み取りのみが許可されます。

Permissions

Permissions は各ロールの権限を決定します。すべてのロールにすべてのパーミッションがあるわけではありません。SuperUser にはすべてのパーミッションがあり、Monitor のパーミッションは最も少なくなります。各パーミッションは、リソースの単一のカテゴリーへの読み取りアクセスや書き込みアクセスを付与できます。カテゴリーはランタイム状態、サーバー設定、機密データ、監査ログ、およびアクセス制御システムになります。

表2.1 各 Monitor、Operator、Maintainer、および Deployer ロールのパーミッション

 MonitorOperatorMaintainerDeployer

設定と状態の読み取り

機密データの読み取り 2

    

機密データの変更 2

    

監査ログの読み取り/変更

    

ランタイム状態の変更

 

1

永続化設定の変更

  

1

アクセス制御の読み取り/変更

    

1 パーミッションはアプリケーションリソースに制限されます。

表2.2 各 Auditor、Administration、および SuperUser ロールのパーミッション

 AuditorAdministratorSuperUser

設定と状態の読み取り

機密データの読み取り 2

機密データの変更 2

 

監査ログの読み取り/変更

 

ランタイム状態の変更

 

永続化設定の変更

 

アクセス制御の読み取り/変更

 

2 機密データとして考慮されるリソースは機密性を使用して設定されます。

制約

制約とは、指定のリソースリストに対するアクセス制御設定の名前付きセットです。RBAC システムは制約とロールパーミッションの組み合わせを使用して、特定ユーザーが管理操作を実行できるかどうかを決定します。

制約は 3 つの種類に分類されます。

アプリケーション制約
アプリケーション制約は、Deployer ユーザーがアクセスできるリソースおよび属性を定義します。デフォルトで有効になっているアプリケーション制約はコアのみで、デプロイメントとデプロイメントオーバーレイが含まれます。アプリケーション制約には、データソース、ロギング、メール、メッセージング、ネーミング、リソースアダプター、およびセキュリティーも含まれますが、デフォルトでは有効になっていません。これらの制約によって、Deployer ユーザーはアプリケーションをデプロイできるだけでなく、これらのアプリケーションが必要とするリソースを設定および維持できます。
機密性制約
機密性制約は、機密として考慮されるリソースを定義します。通常、機密リソースとは、パスワードなどの秘密のリソースや、ネットワーキング、JVM 設定、システムプロパティーなどのサーバーの操作に重大な影響を与えるリソースのことです。アクセス制御システム自体も機密であると見なされます。機密リソースへの書き込みが許可されるロールは Administrator と SuperUser ロールのみです。Auditor ロールは機密リソースの読み取りのみが許可されます。その他のロールは機密リソースにアクセスできません。
vault 式制約
vault 式制約は、vault 式の読み書きが機密操作として考慮されるかどうかを定義します。デフォルトでは、vault 式の読み書きは機密操作です。

2.5. 宣言型セキュリティーと JAAS

宣言型セキュリティーは、コンテナーを使用してセキュリティーを管理することでアプリケーションコードからセキュリティーの懸念を分離する方法です。コンテナーはファイルパーミッション、またはユーザー、グループ、およびロールを基に承認システムを提供します。通常この方法は、アプリケーション自体にセキュリティーの責任をすべて与えるプログラムによるセキュリティーよりも優れています。JBoss EAP は security サブシステムでセキュリティードメインを使用して宣言型セキュリティーを提供します。

JAAS (Java Authentication and Authorization Service) は、ユーザー認証および承認用の Java パッケージで構成される宣言型セキュリティー API です。この API は 標準の PAM (Pluggable Authentication Modules) フレームワークの Java 実装です。Java EE アクセス制御アーキテクチャーを拡張し、ユーザーベースの承認をサポートします。 JBoss EAP の security サブシステムは実際に JAAS API をベースにしています。

JAAS は security サブシステムの基盤であるため、認証はプラグ可能な方法で実行されます。これにより、Java アプリケーションは Kerberos や LDAP などの基礎の認証技術から独立でき、セキュリティーマネージャーは異なるセキュリティーインフラストラクチャーで機能できます。セキュリティーマネージャーの実装を変更しなくてもセキュリティーインフラストラクチャーとの統合を実現できます。JAAS が使用する認証スタックの設定のみを変更する必要があります。

2.6. Elytron サブシステム

elytron サブシステムは JBoss EAP 7.1 で新規導入されました。これは、アプリケーションサーバー全体でのセキュリティーの統一に使用されるセキュリティーフレームワークである WildFly Elytron プロジェクトをベースにしています。elytron サブシステムにより、単一の設定場所でアプリケーションと管理インタフェースの両方をセキュアにできます。WildFly Elytron は、機能のカスタム実装を提供し、elytron サブシステムと統合するために複数の API と SPI も提供します。

他にも、WildFly Elytron には複数の重要な機能があります。

  • 強化された HTTP および SASL 認証の認証メカニズム。
  • セキュリティードメイン全体で SecurityIdentities が伝搬されるようにする改良されたアーキテクチャー。これにより、透過的な変換を承認に使用できる状態にします。変換は、設定可能なロールデコーダー、ロールマッパー、およびパーミッションマッパーを使用して実行されます。
  • 暗号化スイートおよびプロトコルを含む SSL/TTS 設定の一元化。
  • 一括 SecureIdentity 構築などの SSL/TLS の最適化と、確立中の SSL/TLS 接続への承認の密な結び付け。一括 SecureIdentity 構築によって、リクエストごとに SecureIdentity を構築する必要がなくなります。確立中の SSL/TLS 接続に認証を密に結び付けると、最初のリクエストを受け取る にパーミッションチェックが行われるようになります。
  • プレーンテキストの文字列を格納する、以前の vault 実装に取って代わるセキュアクレデンシャルストア。

新しい elytron サブシステムは、レガシーの security サブシステムとレガシーのコア管理認証と並行して存在します。レガシーと Elytron の両方は、管理インターフェースのセキュア化に使用され、アプリケーションにセキュリティーを提供するためにも使用されます。

2.6.1. 中核の概念およびコンポーネント

小さいコンポーネントを使用して完全なセキュリティーポリシーを組み立てるのが、elytron サブシステムのアーキテクチャーやデザインの背後にある概念です。デフォルトでは、JBoss EAP は多くのコンポーネントの実装を提供しますが、elytron サブシステムは特殊なカスタム実装の提供も可能にします。

elytron サブシステムのコンポーネントの各実装は、個別の性能として処理されます。そのため、異なるリソースを使用して異なる実装を組み合わせ、モデル化できます。

2.6.1.1. 性能および要件

性能 (capability) とは、JBoss EAP で使用される機能の一部で、管理レイヤーを使用して公開されます。性能は他の性能に依存することもでき、この依存関係は管理レイヤーによって仲介されます。一部の性能は JBoss EAP によって自動的に提供されますが、起動時に利用可能な性能の完全セットは、JBoss EAP の設定を使用して判断されます。管理レイヤーは、サーバーの起動中と設定の変更時に、性能に必要な別の性能がすべて存在することを検証します。性能は JBoss Modules および拡張と統合しますが、これらの概念はすべて異なります。

性能は、依存する他の性能を登録する他に、依存する性能に関連する要件を登録する必要もあります。性能は以下のような要件を指定できます。

要件
性能が機能するには他の性能に依存する必要があるため、依存する性能が常に存在する必要があります。
オプションの要件
性能のオプションは、有効化が可能または不可能な別の性能に依存します。そのため、設定が分析されるまで要件を判断できないか、要件が分かりません。
起動時のみの要件
性能は他に必要な性能が実行時に存在するかどうかをチェックします。必要な性能が存在する場合は使用され、必要な性能が存在しない場合は使用されません。

性能と要件の詳細は、WildFly ドキュメント を参照してください。

2.6.1.2. API、SPI、およびカスタム実装

Elytron はセキュリティー API および SPI を提供します。他のサブシステムやコンシューマーはそれらの API や SPI を直接使用できるため、統合のオーバーヘッドが削減されます。ほとんどのユーザーは JBoss EAP で提供される機能を使用しますが、Elytron API および SPI は Elytron の機能を置き換えまたは拡張するためにカスタム実装によっても使用されます。

2.6.1.3. セキュリティードメイン

セキュリティードメインは、1 つ以上のセキュリティーレルムや変換を実行するリソースのセットが関係するセキュリティーポリシーを表します。セキュリティードメインは SecurityIdentity を作成します。SecurityIdentity は、アプリケーションなど、承認を実行する他のリソースによって使用されます。SecurityIdentity は、未処理の AuthorizationIdentity とその関連するロールやパーミッションを基にした現在のユーザーを表します。

セキュリティードメインを設定して、別のセキュリティードメインから SecurityIdentityインフローを許可することもできます。アイデンティティーが インフロー すると、元の処理されていない AuthorizationIdentity を保持し、新しいロールとパーミッションのセットが割り当てられ、新しい SecurityIdentity が作成されます。

重要

Elytron セキュリティードメインの使用は、ドメインごとに 1 つに限定されます。複数のレガシーセキュリティーが必要である場合、1 つの Elytron セキュリティードメインを使用して対応できるようになりました。

2.6.1.4. セキュリティーレルム

セキュリティーレルムはアイデンティティーストアへのアクセスを提供し、クレデンシャルの取得に使用されます。これらのクレデンシャルにより、認証メカニズムは認証を実行するために未処理の AuthorizationIdentity を取得できます。また、これらのクレデンシャルは、証拠の検証時に認証メカニズムが検証を行えるようにします。

1 つ以上のセキュリティーレルムを 1 つのセキュリティードメインに関連付けることができます。また、一部のセキュリティー実装は変更のために API も公開するため、セキュリティーレルムは基盤のアイデンティティーストアへの更新を作成できます。

2.6.1.5. ロールデコーダー

ロールデコーダーはセキュリティードメインに関連付けられ、現ユーザーのロールをデコードするために使用されます。ロールデコーダーは、セキュリティーレルムから返される未処理の AuthorizationIdentity を取り、その属性をロールに変換します。

2.6.1.6. ロールマッパー

ロールマッパーはロールの変更をアイデンティティーに適用します。これは、ロールの形式の正規化から特定ロールの追加や削除までさまざまです。ロールマッパーはセキュリティーレルムとセキュリティードメインの両方に関連付けることができます。ロールマッパーがセキュリティーレルムに関連付けられた場合、セキュリティードメインレベルでロールのデコードや追加のロールマッピングなどの変換が発生する前に、マッピングがセキュリティーレルムレベルで適用されます。ロールマッパーと他の変換 (ロールデコーダーなど) が両方セキュリティードメインで設定された場合、ロールマッパーが適用される前に他の変換がすべて実行されます。

2.6.1.7. パーミッションマッパー

パーミッションマッパーはセキュリティードメインと関連付けられ、パーミッションを SecurityIdentity に割り当てます。

2.6.1.8. プリンシパルトランスフォーマー

プリンシパルトランスフォーマーは、 elytron サブシステム内の複数の場所で使用できます。プリンシパルトランスフォーマーは名前を別の名前に変換またはマップできます。

2.6.1.9. プリンシパルデコーダー

プリンシパルデコーダーは、 elytron サブシステム内の複数の場所で使用できます。プリンシパルデコーダーはアイデンティティーを Principal から名前の文字列表現に変換します。たとえば、X500PrincipalDecoder を使用すると X500Principal を証明書の識別名から文字列表現に変換できます。

2.6.1.10. レルムマッパー

レルムマッパーはセキュリティードメインと関連付けられ、セキュリティードメインに複数のセキュリティーレルムが設定されている場合に使用されます。レルムマッパーは、http-authentication-factory および sasl-authentication-factorymechanism または mechanism-realm に関連付けられることもあります。レルムマッパーは、認証中に提供された名前を使用して認証のセキュリティーレルムを選択し、未処理の AuthorizationIdentity を取得します。

2.6.1.11. 認証ファクトリー

認証ファクトリーは、認証ポリシーを表します。認証はセキュリティードメイン、メカニズムファクトリー、およびメカニズムセレクターと関連付けられます。セキュリティードメインは、認証される SecurityIdentity を提供します。メカニズムファクトリーはサーバー側の認証メカニズムを提供します。メカニズムセレクターは、選択したメカニズムに固有する設定を取得します。メカニズムセレクターには、メカニズムがリモートクライアントに提示する必要のあるレルム名に関する情報や、認証プロセス中に使用する追加のプリンシパルトランスフォーマーとレルムマッパーに関する情報を含めることができます。

2.6.1.12. キーストア

key-store は、キーストアの種類、その場所、アクセスするためのクレデンシャルなどを含むキーストアまたはトラストストアの定義です。

2.6.1.13. キーマネージャー

key-managerkey-store を参照し、SSL コンテキストとともに使用されます。

2.6.1.14. トラストマネージャー

trust-manager は、key-store に定義されるトラストストアを参照します。通常は、双方向 SSL/TLS の SSL コンテキストとともに使用されます。

2.6.1.15. SSL コンテキスト

elytron サブシステム内で定義される SSL コンテキストは javax.net.ssl.SSLContext で、SSL コンテキストを直接使うものが使用できます。 SSL コンテキストの通常の設定の他に、暗号化スイートやプロトコルなどの追加項目を設定することが可能です。SSL コンテキストは、設定された追加項目をラップします。

2.6.1.16. セキュアなクレデンシャルストア

プレーンテキストの文字列の暗号化に使用されたこれまでの vault 実装は、新設計のクレデンシャルストアに置き換えられました。クレデンシャルストアは、保存するクレデンシャルの保護の他に、プレーンテキストの文字列を保存するために使用されます。

2.6.2. Elytron 認証プロセス

複数のプリンシパルトランスフォーマー、レルムマッパー、およびプリンシパルデコーダーは、elytron サブシステム内に定義できます。以下のセクションでは、認証プロセス中にこれらのコンポーネントどのように機能するかを説明し、さらにプリンシパルが適切なセキュリティーレルムにマップされる方法についても説明します。

プリンシパルが認証されると、以下の手順が順番に実行されます。

  1. 適切なメカニズムの構成が判断および設定されます。
  2. 受信プリンシパルが SecurityIdentity へマップされます。
  3. 適切なセキュリティーレルムを判断するため、この SecurityIdentity が使用されます。
  4. セキュリティーレルムが特定された後にプリンシパルが再度変換されます。
  5. メカニズム固有の変換を可能にするため、最終の変換が 1 度発生します。

以下の図は上記の手順を表しています。左側の緑の部分は各手順を示し、右側は各段階で使用されるコンポーネントを表しています。

図2.1 Elytron 認証プロセス

Elytron Authentication Process
レルムの前のマッピング

レルムの前のマッピングが行われる間、認証されたプリンシパルは SecurityIdentity にマップされます。SecurityIdentity は使用されるセキュリティーレルムを特定できるフォームで、認証された情報を表す単一の Principal を含みます。プリンシパルトランスフォーマーとプリンシパルデコーダーは次の順番で呼び出されます。

  1. メカニズムレルム - pre-realm-principal-transformer
  2. メカニズム設定 - pre-realm-principal-transformer
  3. セキュリティードメイン - principal-decoder および pre-realm-principal-transformer

この手順によって null プリンシパルが発生した場合、エラーが発生し、認証は強制終了されます。

図2.2 レルムの前のマッピング

Pre-realm Mapping
レルム名マッピング

マップされたプリンシパルが取得されると、アイデンティティーのロードに使用されるセキュリティーレルムが特定されます。この時点では、レルム名はセキュリティードメインによって参照され、セキュリティーレルムによって定義される名前で、メカニズムレルム名ではありません。設定は、セキュリティーレルム名を次の順序で検索します。

  1. メカニズムレルム - realm-mapper
  2. メカニズム設定- realm-mapper
  3. セキュリティードメイン - realm-mapper

RealmMapper が null を返す場合や、利用できるマッパーがない場合、セキュリティードメインの default-realm が使用されます。

図2.3 レルム名マッピング

Realm Name Mapping
レルムの後のマッピング

レルムの特定後、プリンシパルに対して次の変換が実行されます。変換は次の順番で呼び出しされます。

  1. メカニズムレルム - post-realm-principal-transformer
  2. メカニズム設定 - post-realm-principal-transformer
  3. セキュリティードメイン - post-realm-principal-transformer

この手順によって null プリンシパルが発生した場合、エラーが発生し、認証は強制終了されます。

図2.4 レルムの後のマッピング

Post-realm Mapping
最終のプリンシパル変換

最後に、メカニズム固有の変換がドメイン固有の変換の前および後に適用されるようにするため、最後のプリンシパル変換が発生します。これが必要でない場合、レルムの後のマッピング の段階で同じ結果が得られます。変換は次の順序で呼び出しされます。

  1. メカニズムレルム - final-principal-transformer
  2. メカニズム設定 - final-principal-transformer
  3. レルムマッピング - principal-transformer

この手順によって null プリンシパルが発生した場合、エラーが発生し、認証は強制終了されます。

図2.5 最終のプリンシパル変換

Final Principal Transformation
レルムアイデンティティーの取得

最終のプリンシパル変換の後、認証の継続に使用されるレルムアイデンティティーを取得するため、レルム名マッピング で特定されたセキュリティーレルムが呼び出しされます。

2.6.3. HTTP 認証

Elytron は、BASICFORMDIGESTSPNEGO、および CLIENT_CERT を含む完全な HTTP 認証メカニズムを提供します。HTTP 認証は、HttpAuthenticationFactory を使用して処理されます。HttpAuthenticationFactory は HTTP 認証メカニズムを使用するための認証ポリシーであり、設定された認証メカニズムのファクトリーでもあります。

HttpAuthenticationFactory は以下を参照します。

SecurityDomain
メカニズム認証が実行されるセキュリティードメイン。
HttpServerAuthenticationMechanismFactory
サーバー側 HTTP 認証メカニズムの一般的なファクトリー。
MechanismConfigurationSelector
これを使用して認証メカニズムの追加設定を提供できます。MechanismConfigurationSelector の目的は、選択したメカニズムに固有の設定を取得することです。これには、メカニズムがリモートクライアントに提示する必要のあるレルム名、追加のプリンシパルトランスフォーマー、認証プロセス中に使用するレルムマッパーなどに関する情報が含まれます。

2.6.4. SASL 認証

SASL は、認証メカニズム自体を使用するプロトコルから分離するフレームワークです。また、DIGEST-MD5GSSAPIOTPSCRAM などの追加の認証メカニズムも使用できます。SASL 認証は Java EE 7 の一部ではありません。SASL 認証は、SaslAuthenticationFactory を使用して処理され、SaslAuthenticationFactory は SASL 認証メカニズムを使用するための認証ポリシーであり、設定された認証メカニズムのファクトリーでもあります。

SaslAuthenticationFactory は以下を参照します。

SecurityDomain
メカニズム認証が実行されるセキュリティードメイン。
SaslServerFactory
サーバー側 SASL 認証メカニズムの一般的なファクトリー。
MechanismConfigurationSelector
これを使用して認証メカニズムの追加設定を提供できます。MechanismConfigurationSelector の目的は、選択したメカニズムに固有の設定を取得することです。これには、メカニズムがリモートクライアントに提示する必要のあるレルム名、追加のプリンシパルトランスフォーマー、認証プロセス中に使用するレルムマッパーなどに関する情報が含まれます。

2.6.5. Elytron サブシステムとレガシーシステム間の対話

レガシー security サブシステムコンポーネントおよびレガシーコア管理認証両方の主なコンポーネントの一部を Elytron の性能にマップできます。これにより、これらのレガシーコンポーネントを Elytron ベースの設定で使用でき、レガシーコンポーネントから増分移行を行うことができます。

2.6.6. Elytron サブシステムのリソース

JBoss EAP は、elytron サブシステムで以下のリソースを提供します。

ファクトリー
aggregate-http-server-mechanism-factory
HTTP サーバーファクトリーが他の HTTP サーバーファクトリーの集約である、HTTP サーバーファクトリー定義。
aggregate-sasl-server-factory
SASL サーバーファクトリーが他の SASL サーバーファクトリーの集約である、SASL サーバーファクトリー定義。
configurable-http-server-mechanism-factory
別の HTTP サーバーファクトリーをラッピングし、指定の設定とフィルタリングを適用する HTTP サーバーファクトリー定義。
configurable-sasl-server-factory
別の SASL サーバーファクトリーをラッピングし、指定の設定とフィルタリングを適用する SASL サーバーファクトリー定義。
custom-credential-security-factory
カスタムクレデンシャルの SecurityFactory 定義。
http-authentication-factory

セキュリティードメインと HttpServerAuthenticationMechanismFactory の関連が含まれるリソース。

詳細は、JBoss EAP『How to Configure Identity Management』の「Configure Authentication with Certificates」を参照してください。

kerberos-security-factory

認証中に使用する GSSCredential を取得するためのセキュリティーファクトリー。

詳細は、JBoss EAP『How to Set Up SSO with Kerberos』の「Configure the Elytron Subsystem」を参照してください。

mechanism-provider-filtering-sasl-server-factory
プロバイダーを使用してファクトリーがロードされた場合にプロバイダーによるフィルタリングを有効にする SASL サーバーファクトリー定義。
provider-http-server-mechanism-factory
HTTP サーバーファクトリーがプロバイダーリストからのファクトリーの集約である、HTTP サーバーファクトリー定義
provider-sasl-server-factory
SASL サーバーファクトリーがプロバイダーリストからのファクトリーの集約である、SASL サーバーファクトリー定義。
sasl-authentication-factory

セキュリティードメインと SASL サーバーファクトリーの関連が含まれるリソース。

詳細は、JBoss EAP『How to Configure Server Security』の「Secure the Management Interfaces with a New Identity Store」を参照してください。

service-loader-http-server-mechanism-factory
HTTP サーバーファクトリーが ServiceLoader を使用して特定されるファクトリーの集約である、HTTP サーバーファクトリー定義。
service-loader-sasl-server-factory
SASLサーバーファクトリーが ServiceLoader を使用して特定されるファクトリーの集約である、SASL サーバーファクトリー定義。
プリンシパルトランスフォーマー
aggregate-principal-transformer
個別のトランスフォーマーは、トランスフォーマーの 1 つが null でないプリンシパルを返すまで元のプリンシパルを変換しようとします。
chained-principal-transformer
プリンシパルトランスフォーマーが他のプリンシパルトランスフォーマーをチェーンするプリンシパルトランスフォーマー定義。
constant-principal-transformer
プリンシパルトランスフォーマーが常に同じ定数を返す、プリンシパルトランスフォーマー定義。
custom-principal-transformer
カスタムプリンシパルトランスフォーマー定義。
regex-principal-transformer
正規表現ベースのプリンシパルトランスフォーマー。
regex-validating-principal-transformer
正規表現を使用して名前を検証する、正規表現をベースとしたプリンシパルトランスフォーマー。
プリンシパルデコーダー
aggregate-principal-decoder
プリンシパルデコーダーが他のプリンシパルデコーダーの集約であるプリンシパルデコーダー定義。
concatenating-principal-decoder
プリンシパルデコーダーが他のプリンシパルデコーダーの連結であるプリンシパルデコーダー定義。
constant-principal-decoder
常に同じ定数を返すプリンシパルデコーダーの定義。
custom-principal-decoder
カスタムプリンシパルデコーダーの定義。
x500-attribute-principal-decoder

X500 属性ベースのプリンシパルデコーダーの定義。

詳細は、JBoss EAP『How to Configure Identity Management』の「Configure Authentication with Certificates」を参照してください。

レルムマッパー
constant-realm-mapper
常に同じ値を返す定数のレルムマッパー の定義。
custom-realm-mapper
カスタムレルムマッパーの定義。
mapped-regex-realm-mapper
最初に正規表現を使用してレルム名を抽出した後にレルム名の設定済みマッピングを使用して変換されるレルムマッパー実装の定義。
simple-regex-realm-mapper
正規表現からのキャプチャーグループを使用してレルム名の抽出を試みる簡単なレルムマッパーの定義。一致するものを提供しない場合、代わりに委譲マッパーが使用されます。
レルム
aggregate-realm

2 つのレルム (認証ステップのレルムおよび承認ステップのアイデンティティーをロードするレルム) の集約であるレルム定義。

注記

aggregate-realm の承認ステップで、エクスポートされたレガシーセキュリティードメインを Elytron セキュリティーレルムとして使用できません。

caching-realm

他のセキュリティーレルムへのキャッシュを可能にするレルム定義。キャッシュストラテジーは LRU で、エントリーの最大数に達したときにアクセスが最も少ないエントリーが破棄されます。

詳細は、JBoss EAP『How to Configure Identity Management』の「Set Up Caching for Security Realms」を参照してください。

custom-modifiable-realm
変更可能として設定されたカスタムレルムは、ModifiableSecurityRealm インターフェースを実装することが想定されます。レルムを変更可能として設定すると、管理操作を利用してレルムを操作できます。
custom-realm
カスタムレルム定義は SecurityRealm インターフェースまたは ModifiableSecurityRealm インターフェースを実装できます。どちらのインターフェースが実装されたかに関わらず、レルムの管理に管理操作は公開されません。しかし、レルムに依存するその他のサービスは型チェックやキャストを実行して変更 API にアクセスできます。
filesystem-realm

ファイルシステムが関係する簡単なセキュリティーレルム定義。

重要

filesystem-realm はテクノロジープレビューとしてのみ提供されます。テクノロジープレビューの機能は、Red Hat の本番環境のサービスレベルアグリーメント (SLA) ではサポートされず、機能的に完全ではないことがあるため、Red Hat は本番環境での使用は推奨しません。テクノロジープレビューの機能は、最新の技術をいち早く提供して、開発段階で機能のテストやフィードバックの収集を可能にするために提供されます。

テクノロジープレビュー機能のサポート範囲については、Red Hat カスタマーポータルの「テクノロジプレビュー機能のサポート範囲」を参照してください。

詳細は、JBoss EAP『How to Configure Identity Management』の「Configure Authentication with a Filesystem-Based Identity Store」を参照してください。

identity-realm
アイデンティティーが管理モデルで表されるセキュリティーレルム定義。
jdbc-realm

JDBC を使用したデータベースが関係するセキュリティーレルム定義。

詳細は、JBoss EAP『How to Configure Identity Management』の「Configure Authentication with a Database-Based Identity Store」を参照してください。

key-store-realm

キーストアが関係するセキュリティーレルム定義。

詳細は、JBoss EAP『How to Configure Identity Management』の「Configure Authentication with Certificates」を参照してください。

ldap-realm

LDAP が関係するセキュリティーレルム定義。

詳細は、JBoss EAP『How to Configure Identity Management』の「Configure Authentication with a LDAP-Based Identity Store」を参照してください。

properties-realm

プロパティーファイルが関係するセキュリティーレルム定義。

詳細は、JBoss EAP『How to Configure Identity Management』の「Configure Authentication with a Properties File-Based Identity Store」を参照してください。

token-realm
セキュリティートークンからアイデンティティーを検証および抽出できるセキュリティーレルム定義。
パーミッションマッパー
custom-permission-mapper
カスタムパーミッションマッパーの定義。
logical-permission-mapper
論理パーミッションマッパーの定義。
simple-permission-mapper
簡単に設定されたパーミッションマッパーの定義。
constant-permission-mapper
同じ定数を常に返すパーミッションマッパーの定義。
ロールデコーダー
custom-role-decoder
カスタム RoleDecoder の定義。
simple-role-decoder

単一の属性を取り、それを直接ロールへマップする簡単な RoleDecoder の定義。

詳細は、JBoss EAP『How to Configure Identity Management』の「Configure Authentication with a Filesystem-Based Identity Store」を参照してください。

ロールマッパー
add-prefix-role-mapper
接頭辞を追加するロールマッパーのロールマッパー定義。
add-suffix-role-mapper
接尾辞を追加するロールマッパーのロールマッパー定義。
aggregate-role-mapper
ロールマッパーが他のロールマッパーの集約であるロールマッパー定義。
constant-role-mapper

ロールの定数セットが常に返されるロールマッパー定義。

詳細は、JBoss EAP『How to Configure Identity Management』の「Configure Authentication with Certificates」を参照してください。

custom-role-mapper
カスタムロールマッパーの定義。
logical-role-mapper
参照したロールマッパーを 2 つ使用して論理操作を実行するロールマッパーのロールマッパー定義。
SSL コンポーネント
client-ssl-context

接続のクライアント側で使用する SSLContext。

詳細は、JBoss EAP『How to Configure Server Security』の「Using a client-ssl-context」を参照してください。

filtering-key-store

key-store をフィルターしてキーストアを提供するフィルタリングキー定義。

詳細は、JBoss EAP『How to Configure Server Security』の「Using a filtering-key-store」を参照してください。

key-manager

SSLContext の作成に使用されるキーマネージャーリストを作成するためのキーマネージャー定義。

詳細は、JBoss EAP『How to Configure Server Security』の「Enable One-way SSL/TLS for the Management Interfaces Using the Elytron Subsystem」を参照してください。

key-store

キーストア定義。

詳細は、JBoss EAP『How to Configure Server Security』の「Enable One-way SSL/TLS for the Management Interfaces Using the Elytron Subsystem」を参照してください。

ldap-key-store

LDAP サーバーからキーストアをロードする LDAP キーストア定義。

詳細は、JBoss EAP『How to Configure Server Security』の「Using an ldap-key-store」を参照してください。

server-ssl-context

接続のサーバー側で使用する SSL コンテキスト。

詳細は、JBoss EAP『How to Configure Server Security』の「Enable One-way SSL/TLS for the Management Interfaces Using the Elytron Subsystem」を参照してください。

trust-manager

SSLContext の作成に使用される TrustManager を作成するためのトラストマネージャー定義。

詳細は、JBoss EAP『How to Configure Server Security』の「Enable Two-way SSL/TLS for the Management Interfaces using the Elytron Subsystem」を参照してください。

その他
aggregate-providers
2 つ以上の provider-loader リソースの集約。
authentication-configuration
リモート接続の確立時、認証用に JBoss EAP およびその他のリソースにデプロイされたクライアントによって使用される個別の認証設定定義。
authentication-context
JBoss EAP およびその他のリソースにデプロイされたクライアントがリモート接続を確立するときに ssl-context および authentication-configuration を提供するために使用される個別の認証コンテキスト定義。
credential-store

外部サービスのパスワードなどの機密性の高い情報のエイリアスを保持するクレデンシャルストア。

詳細は、JBoss EAP『How to Configure Server Security』の「Create a Credential Store」を参照してください。

dir-context

ディレクトリー (LDAP) サーバーに接続する設定。

詳細は、JBoss EAP『How to Configure Server Security』の「Using an ldap-key-store」を参照してください。

provider-loader
プロバイダーローダーの定義。
security-domain

セキュリティードメイン定義。

詳細は、JBoss EAP『How to Configure Identity Management』の「Configure Authentication with Certificates」を参照してください。

security-property
設定するセキュリティープロパティーの定義。

2.7. コア管理認証

コア管理認証は、ManagementRealm を使用してコア管理機能向けに管理インターフェース (HTTP およびネイティブ) をセキュア化します。コア管理認証はコア管理に内蔵され、デフォルトではコアサービスとして有効化および設定されます。管理インターフェースのセキュア化のみを行います。

2.7.1. セキュリティーレルム

セキュリティーレルムは、ユーザー、パスワード、およびグループメンバーシップ情報のアイデンティティーストアで、EJB、web アプリケーション、および管理インターフェースのユーザーを認証するときに使用されます。デフォルトでは、JBoss EAP には事前設定された ManagementRealm および ApplicationRealm の 2 つのセキュリティーレルムが含まれています。これら両方のセキュリティーレルムはファイルシステムを使用して、ユーザーとパスワード間およびユーザーとグループメンバーシップ情報間のマッピングを保存します。両方のセキュリティーレルムはデフォルトでダイジェスト認証を使用します。

ダイジェストは認証のメカニズムで、プロパティーファイルをマッピングするユーザー名およびパスワードに格納された情報など、さまざまな情報で構成される 1 度限りの一方向ハッシュを使用してユーザーを認証します。これにより、JBoss EAP はネットワーク上でプレーンテキストのパスワードを送信せずに認証を行うことができます。

JBoss EAP インストールには、管理者が両方のレルムにユーザーを追加できるようにするスクリプトが含まれています。ユーザーがこのスクリプトで追加されると、ユーザー名とハッシュ化されたパスワードは対応するユーザー名とパスワードのプロパティーファイルに格納されます。ユーザーが認証を試みると、JBoss EAP は nonce という 1 度限りの番号をクライアントに送信します。クライアントはユーザー名、パスワード、nonce、およびその他のフィールドを使用して一方向ハッシュを生成し、ユーザー名、nonce、および一方向ハッシュを JBoss EAP に送信します。JBoss EAP はユーザーのハッシュ化前のパスワードを検索し、提供されたユーザー名、nonce、およびその他のフィールドとともに使用して別の一方向ハッシュを同様に生成します。正しいパスワードなど、すべて同じ情報が両側で使用された場合、ハッシュが一致してユーザーが認証されます。

セキュリティーレルムはデフォルトでダイジェスト認証を使用しますが、他の認証方法を使用するように再設定することもできます。管理インターフェースは起動時に、ManagementRealm に設定された認証方法を基にして、有効化される認証方法を判断します。

セキュリティーレルムは承認には全く関与しません。しかし、後で承認の決定に使用されるユーザーのグループメンバーシップ情報をロードするよう設定することが可能です。ユーザーの認証後、ユーザー名を基にグループメンバーシップ情報をロードする 2 つ目の手順が発生します。

デフォルトでは、ManagementRealm は管理インターフェースの認証および承認中に使用されます。ApplicationRealm は、webアプリケーションと EJB がユーザーの認証および承認時に使用できるデフォルトのレルムです。

2.7.2. デフォルトのセキュリティー

デフォルトでは、コア管理認証は HTTP と ネイティブの各管理インターフェースを、ローカルクライアントとリモートクライアントの 2 つの形式でセキュア化します。これら両方は、デフォルトでは ManagementRealm セキュリティーレルムを使用して設定されます。デフォルトの設定は変更可能で、設定を完全に置き換えることもできます。

注記

初期状態の管理インターフェースは、ロールを使用しない簡単なアクセス制御を使用するよう設定されています。デフォルトでは、簡単なアクセス制御を使用するとすべてのユーザーに SuperUser ロールと同じ権限が与えられ、原則的にアクセスが制限されません。

2.7.2.1. ネイティブインターフェースによるローカルおよびリモートクライアント認証

ネイティブインターフェース (管理 CLI) は、稼働中の JBoss EAP インスタンスと同じホストにてローカルで呼び出すことができ、別のマシンからリモートで呼び出すこともできます。ネイティブインターフェースを使用して接続を確立しようとすると、JBoss EAP は local jboss user やベーシック認証などの利用可能な SASL 認証のリストをクライアントに提示します。クライアントは希望する認証方法を選択し、JBoss EAP インスタンスとの認証を試行します。認証に失敗すると、他の方法で認証を再試行するか、接続の確立を停止します。ローカルクライアントは local jboss user 認証を使用することもできます。これは、ローカルファイルシステムにアクセスできるクライアントの機能を基にしたセキュリティーメカニズムです。これは、ログインしようとしているユーザーが JBoss EAP インスタンスと同じホスト上のローカルファイルシステムにアクセスできる権限があるかを検証します。

この認証は 4 つのステップで行われます。

  1. クライアントは、local jboss user を使用した認証リクエストが含まれるメッセージをサーバーに送信します。
  2. サーバーは 1 度限りのトークンを生成して、固有のファイルに書き込み、そのファイルのフルパスが含まれるメッセージをクライアントに送信します。
  3. クライアントはトークンをファイルから読み取って、サーバーに送信し、ローカルでファイルシステムにアクセスできることを確認します。
  4. サーバーはトークンを検証し、ファイルを削除します。

このような認証は、ファイルシステムへ物理的にアクセスできれば他のセキュリティーメカニズムは不要であるという原理に基づいています。これは、ユーザーがローカルのファイルシステムにアクセスできれば、ユーザーは新規ユーザーを作成できる権限があり、そうでなければ他のセキュリティーメカニズムが阻止されるという論理です。ローカルユーザーはユーザー名やパスワードの認証なしで管理 CLI にアクセスできるため、サイレント認証と呼ばれることもあります。

この機能は利便性のためと、管理 CLI スクリプトを実行しているローカルユーザーの追加認証を不要にするために有効になっています。通常、ユーザーがローカル設定にアクセスできれば、独自のユーザー詳細を追加することもできるため便利な機能と見なされます。

リモートクライアントとして、別のサーバーや同じサーバーからネイティブインターフェースにアクセスすることもできます。リモートクライアントとしてネイティブインターフェースにアクセスする場合、local jboss user を使用してクライアントを認証することはできず、ダイジェストなどの別の認証を使用するよう強制されます。local jboss user を使用したローカルクライアントの認証に失敗すると、自動的にフォールバックされ、リモートクライアントとして別の認証方法の使用を試みます。

注記

ネイティブインターフェースではなく HTTP インターフェースを使用して、別のサーバーや同じサーバーから管理 CLI を呼び出すことができます。CLI であるかに関わらず、すべての HTTP 接続はリモートとして考慮され、ローカルインターフェースの認証では処理されません。

重要

デフォルトでは、ネイティブインターフェースは処理されず、すべての管理 CLI トラフィックは HTTP インターフェースによって処理されます。JBoss EAP 7 は HTTP アップグレードをサポートします。HTTP アップグレードによって、クライアントは HTTP 上で最初の接続を確立できますが、その接続を別のプロトコルにアップグレードするため、リクエストを送信します。管理 CLI の場合、HTTP 上から HTTP インターフェースへの最初のリクエストが作成されますが、接続はネイティブプロトコルにアップグレードされます。この接続は HTTP インターフェース上で処理されますが、通信には HTTP ではなくネイティブプロトコルが使用されます。この代わりに、必要であればネイティブインターフェースを有効化し、使用することができます。

2.7.2.2. HTTP インターフェースによるローカルおよびリモートクライアント認証

HTTP インターフェースは、稼働中の JBoss EAP インスタンスと同じホスト上のクライアントがローカルで呼び出すことができ、他のマシンからクライアントがリモードで呼び出すこともできます。ローカルおよびリモートクライアントは HTTP インターフェースにアクセスできますが、HTTP インターフェースにアクセスするすべてのクライアントはリモート接続として処理されます。

クライアントが HTTP 管理インターフェースへの接続を試みると、JBoss EAP は HTTP 応答とともに状態コード 401 Unauthorized と、ダイジェストや GSSAPI などのサポートされる認証をリストする一連のヘッダーを返信します。ダイジェストのヘッダーには、JBoss EAP によって生成された nonce も含まれます。クライアントはヘッダーを確認して使用する認証方法を選択し、適切な返答を送信します。クライアントがダイジェストを選択した場合、ユーザーにユーザー名とパスワードの入力を要求します。クライアントは、ユーザー名やパスワードなどの提供されたフィールド、nonce、その他の情報を使用し、一方向ハッシュを生成します。その後、一方向ハッシュ、ユーザー名、および nonce を返答として JBoss EAP に返信します。JBoss EAP はその情報を取得して別の一方向ハッシュを生成し、両方のハッシュを比較した結果を基にしてユーザーを認証します。

2.7.3. 高度なセキュリティー

管理インターフェースや認証および承認方法のデフォルト設定を変更する方法は複数あります。

2.7.3.1. 管理インターフェースの更新

JBoss EAP では、管理者は認証および承認方法を変更できるだけでなく、管理インターフェース自体の設定も更新できます。これには複数のオプションがあります。

一方向 SSL/TLS を使用するための管理インターフェースの設定
一方向 SSL/TLS のみを使用して通信を行うよう JBoss EAP 管理コンソールを設定すると、セキュリティーが強化されます。クライアントと管理コンソール間のネットワークトラフィックはすべて暗号化されるため、仲介者攻撃などのセキュリティー攻撃のリスクが軽減されます。JBoss EAP インスタンスの管理者は、そのインスタンスに対して非特権ユーザーよりも多くのパーミッションを持ち、一方向 SSL/TLS を使用するとそのインスタンスの整合性や可用性の保護に役立ちます。JBoss EAP で一方向 SSL/TLS を設定するとき、認証局が署名した証明書は信頼チェーンを提供するため、自己署名証明書よりも優先されます。自己署名証明書は許可されますが、推奨されません。
双方向 SSL/TLS の使用
クライアント認証とも呼ばれる双方向 SSL/TLS 認証は、SSL/TLS 証明書を使用してクライアントとサーバーを認証します。そのため、サーバーの伝えるアイデンティティーだけでなく、クライアントの伝えるアイデンティティーも信頼できます。
新しいセキュリティーレルムの更新および作成
デフォルトのセキュリティーレルムは更新可能で、新しいセキュリティーレルムに置き換えることもできます。

2.7.3.2. アウトバウンド接続の追加

セキュリティーレルムには、LDAP サーバーなどの外部インターフェースに接続するものあります。アウトバウンド接続は、このような接続の確立方法を定義します。事前定義された接続タイプ ldap-connection は、LDAP サーバーへ接続し、クレデンシャルを検証するために必要な属性と任意の属性をすべて設定します。

2.7.3.3. 管理インターフェースへの RBAC の追加

デフォルトでは、RBAC システムは無効になっています。有効にするには、provider 属性を simple から rbac に変更します。これは、管理 CLI を使用して変更できます。稼働中のサーバーで RBAC を無効化または有効化した場合、サーバー設定をリロードして変更を反映する必要があります。

管理インターフェースに対して RBAC が有効化された場合、アクセスできるリソースとリソースの属性で実行できる操作は、ユーザーに割り当てられたロールによって決定されます。Administrator または SuperUser ロールのユーザーのみがアクセス制御システムを閲覧および変更できます。

警告

ユーザーとロールを適切に設定せずに RBAC を有効にすると、管理者が管理インターフェースにログインできなくなることがあります。

管理コンソールでの RBAC の影響

管理コンソールでは、ユーザーに割り当てられたパーミッションに応じて一部の制御と表示が無効になっていることがあります。このような制御と表示は灰色で表示されるか全く表示されません。

ユーザーがリソース属性の読み取り権限を持たない場合、その属性はコンソールでは空欄で表示されます。たとえば、ほとんどのロールはデータソースのユーザー名およびパスワードフィールドを読み取りできません。

ユーザーがリソース属性の読み取り権限を持ち、書き込み権限は持たない場合、その属性はリソースの編集フォームで無効化されます。ユーザーがリソースへの書き込み権限を持たない場合、そのリソースの編集ボタンは表示されません。

ユーザーがリソースまたは属性へのアクセス権を持たず、そのロールに対してアドレス指定できない場合、そのユーザーのコンソールには表示されません。この例の 1 つがアクセス制御システム自体で、デフォルトでは特定のロールのみが閲覧できます。

管理コンソールは、以下の一般的な RBAC タスクに対してもインターフェースを提供します。

  • 各ユーザーに割り当てられたロール、または各ユーザーから除外されたロールの表示および設定。
  • 各グループに割り当てられたロール、または各グループから除外されたロールの表示および設定。
  • ロールごとのグループおよびユーザーメンバーシップの表示。
  • ロールごとのデフォルトメンバーシップの設定。
  • スコープ指定されたロールの作成。
注記

現時点では、管理コンソールでは制約を設定できません。

管理 CLI または管理 API での RBAC の影響

RBAC が有効である場合、管理 CLI や管理 API の動作が若干異なります。

読み取りできないリソースや属性は、結果からフィルター処理されます。ロールがフィルターされたリソースや属性をアドレス指定できる場合、結果の response-headers セクションにある filtered-attributes としてリストされます。ロールがリソースや属性をアドレス指定できない場合はリストされません。

アドレス指定できないリソースにアクセスしようとすると、Resource Not Found エラーが発生します。

適切な書き込みまたは読み取り権限のないユーザーが、アドレス指定可能なリソースを読み取りまたは書き込みしようとすると、Permission Denied エラーが返されます。

管理 CLI は、管理コンソールと同じ RBAC タスクをすべて実行でき、さらに以下のような追加のタスクも実行できます。

  • RBAC の有効化および無効化。
  • パーミッション組み合わせポリシーの変更
  • アプリケーションリソースおよびリソース機密性制約の設定

JMX 管理 Bean での RBAC の影響

ロールベースのアクセス制御は、3 つの方法で JMX に適用されます。

  1. JBoss EAP の管理 API は JMX 管理 Bean として公開されます。JMX 管理 Bean は core mbeans と呼ばれ、これらの Bean へのアクセスは基礎の管理 API 自体と全く同じように制御およびフィルターされます。
  2. jmx サブシステムは、書き込み権限が機密である状態で設定されます。そのため、Administrator および SuperUser ロールのユーザーのみがこのサブシステムを変更できます。Auditor ロールのユーザーはこのサブシステムの設定を読み取ることができます。
  3. デフォルトでは、デプロイされたアプリケーションやサービス、またはコアでない MBean によって登録された管理 Bean にはすべての管理ユーザーがアクセスできますが、MaintainerOperatorAdministrator および SuperUser ロールを持つユーザーのみが書き込みできます。

RBAC 認証

RBAC は、JBoss EAP と含まれる標準の認証プロバイダーと動作します。

ユーザー名/パスワード
ローカルプロパティーファイルまたは LDAP を使用できる ManagementRealm の設定に応じて検証されるユーザーとパスワードの組み合わせを使用して、ユーザーは認証されます。
クライアント証明書
トラストストアはクライアント証明書の認証情報を提供します。
local jboss user
サーバーが同じマシン上で稼働している場合、jboss-cli スクリプトは local jboss user として自動的に認証を行います。デフォルトでは、local jboss userSuperUser グループのメンバーです。

使用されるプロバイダーに関係なく、JBoss EAP はユーザーへロールを割り当てます。ManagementRealm または LDAP サーバーで認証を行う場合、これらのシステムはユーザーグループ情報を提供できます。JBoss EAP はこの情報を使用してユーザーにロールを割り当てることもできます。

2.7.3.4. LDAP と管理インターフェースの使用

JBoss EAP には、LDAP サーバーを web および EJB アプリケーションの認証および承認機関として使用できるようにする複数の認証および承認モジュールが含まれています。

LDAP サーバーを管理コンソール、管理 CLI、または管理 API の認証ソースとして使用するには、以下のタスクを実行する必要があります。

  1. LDAP サーバーへアウトバウンド接続を作成します。
  2. LDAP が有効なセキュリティーレルムを作成するか、既存のセキュリティーレルムが LDAP を使用するよう更新します。
  3. 管理インターフェースの新しいセキュリティーレルムを参照します。

LDAP オーセンティケーターは、最初にリモートディレクトリーサーバーへ接続を確立します。その後、ユーザーが認証システムに渡すユーザー名を使用して検索を実行し、LDAP レコードの完全修飾識別名 (DN) を探します。ユーザーによって提供されるクレデンシャルおよびパスワードとしてユーザーの DN を使用して、LDAP サーバーへの新しい接続が確立されます。LDAP サーバーの認証に成功すると、DN が有効であることが検証されます。

LDAP が有効なセキュリティーレルムが作成されると、管理インターフェースによる参照が可能になります。管理インターフェースはセキュリティーレルムを認証に使用します。管理インターフェースおよび管理 CLI で認証に双方向 SSL/TLS を使用すると、LDAP サーバーへのアウトバウンド接続を使用するよう JBoss EAP を設定することもできます。

2.7.3.5. JAAS および管理インターフェース

JAAS を使用して管理インターフェースをセキュア化できます。管理インターフェースに JAAS を使用する場合、セキュリティーレルムがセキュリティードメインを使用するように設定する必要があります。これにより、コアサービスとサブシステムの依存関係が発生します。SSL/TLS は、管理インターフェースのセキュア化に JAAS を使用する必要はありませんが、管理者は SSL/TLS を有効にして、セキュアでない状態で機密情報を誤送信しないようにすることが推奨されます。

注記

JBoss EAP インスタンスが admin-only モードで実行されている場合、JAAS を使用した管理インターフェースのセキュア化はサポートされません。admin-only モードの詳細は、JBoss EAP『設定ガイド』の「JBoss EAP の管理専用モードでの実行」を参照してください。

2.8. Security サブシステム

security サブシステムは JAAS API をベースとし、アプリケーションのセキュリティーインフラストラクチャーを提供します。このサブシステムは現在のリクエストに関連するセキュリティーコンテキストを使用して、認証マネージャー、承認マネージャー、監査マネージャー、およびマッピングマネージャーの性能を関係のあるコンテナーに公開します。

認証および承認マネージャーは認証および承認を処理します。マッピングマネージャーは、情報をアプリケーションに渡す前に、プリンシパル、ロール、または属性に対してその情報を追加、変更、または削除します。監査マネージャーは、ユーザーがプリバイダーモジュールを設定して、セキュリティーイベントの報告方法を制御できるようにします。

ほとんどの場合、security サブシステムの設定の更新では、管理者はセキュリティードメインの設定のみに集中する必要があります。セキュリティードメインの外部では、変更が必要になる場合があるセキュリティー要素は deep-copy-subject-mode のみです。ディープコピーサブジェクトモードに関する詳細は、セキュリティー管理を参照してください。

2.8.1. セキュリティードメイン

セキュリティードメインは JAAS (Java Authentication and Authorization Service) の宣言的なセキュリティー設定で、認証、承認、監査、およびマッピングを制御するために 1 つ以上のアプリケーションによって使用されます。デフォルトでは、jboss-ejb-policyjboss-web-policyother、および jaspitest の 4 つのセキュリティードメインが含まれます。jboss-ejb-policy および jboss-web-policy セキュリティードメインは、JBoss EAP インスタンスのデフォルトの承認メカニズムで、アプリケーションの設定済みのセキュリティードメインが認証方法を全く定義しない場合に使用されます。これらのセキュリティードメインと other は、認証のために JBoss EAP の内部でも使用され、操作の修正に必要です。jaspitest セキュリティードメインは、開発の目的で含まれる簡単な JASPI セキュリティードメインです。

セキュリティードメインは、認証、承認、セキュリティーマッピング、および監査向けの設定で構成されます。セキュリティードメインは、JBoss EAP security サブシステムの一部で、ドメインコントローラーまたはスタンドアロンサーバーによって一元管理されます。ユーザーは、アプリケーションの要件に応じて必要な数のセキュリティードメインを作成できます。

また、cache-type 属性を使用して、セキュリティードメインによって使用される認証キャッシュのタイプを設定することもできます。この属性を削除するとキャッシュは使用されません。このプロパティーに使用できる値は default または infinispan です。

Elytron セキュリティードメインと PickeBox セキュリティードメインの比較

デプロイメントを単一の Elytron セキュリティードメインか、1 つ以上のレガシー PicketBox セキュリティードメインと関連付ける必要があります。デプロイメントを Elytron と PicketBox の両方に関連付けしてはなりません。これは無効な設定です。

デプロイメントを複数の Elytron セキュリティードメインと関連付けると例外が発生しますが、レガシーセキュリティードメインの場合は複数関連付けることが可能です。

注記

PicketBox の場合、セキュリティードメインは基礎のアイデンティティーストアへのアクセスと承認決定のマッピングの両方をカプセル化します。そのため、PicketBox に複数のストアがある場合は、ソースごとに異なるセキュリティードメインを使用する必要があります。

Elytron では、これら 2 つの機能が分離されています。ストアへのアクセスはセキュリティーレルムで処理され、承認のマッピングはセキュリティードメインによって処理されます。

そのため、独立した PicketBox セキュリティードメインが必要なデプロイメントは、独立した Elytron セキュリティードメインを必ずしも必要としません。

2.8.2. セキュリティーレルムとセキュリティードメインの使用

セキュリティーレルムとセキュリティードメインは、JBoss EAP にデプロイされた web アプリケーションのセキュア化に使用できます。セキュリティーレルムとセキュリティードメインの違いを理解してから、どちらを使用するかを決定することが重要になります。

web アプリケーションと EJB デプロイメントは、セキュリティードメインのみを直接使用できます。セキュリティードメインは、アイデンティティーストアから渡されたアイデンティティー情報を使用するログインモジュールを使用して実際の認証と承認を実行します。アイデンティティー情報にセキュリティーレルムを使用するよう、セキュリティードメインを設定できます。たとえば other の場合、アプリケーションは認証と承認情報の取得に使用するセキュリティーレルムを指定できます。セキュリティードメインが外部のアイデンティティーストアを使用するよう設定することも可能です。web アプリケーションと EJB デプロイメントが認証にセキュリティーレルムを直接使用するように設定することはできません。セキュリティードメインは security サブシステムの一部でもあり、コアサービスの後にロードされます。

管理インターフェースや EJBが リモーティングエンドポイントなどのコア管理のみがセキュリティーレルムを直接使用できます。セキュリティーレルムは、認証および承認情報を提供するアイデンティティーストアです。コアサービスの 1 つでもあり、サブシステムの起動前にロードされます。ManagementRealm および ApplicationRealm は初期状態のセキュリティーレルムで、簡単なファイルベースの認証を使用しますが、別の認証を使用するよう設定できます。

2.8.3. セキュリティー監査

セキュリティー監査とは、ログへの書き込みなど、security サブシステム内で発生するイベントに対してトリガーするイベントのことです。監査方法は、認証、承認、およびセキュリティーマッピングの詳細とともにセキュリティードメインの一部として設定されます。セキュリティーイベントの報告方法を制御するため、監査にはプロバイダーモジュールが使用されます。JBoss EAP には複数のセキュリティー監査プロバイダーが含まれますが、カスタムのプロバイダーを使用することもできます。JBoss EAP のコア管理には、security サブシステムの一部ではなく別に設定される独自のセキュリティー監査およびロギング機能があります。

2.8.4. セキュリティーマッピング

セキュリティーマッピングを使用すると、認証または承認後、情報がアプリケーションに渡される前に認証情報と承認情報を組み合わせることができます。マップできるのは、承認のロール、認証のプリンシパル、またはプリンシパルやロールでない属性のクレデンシャルです。ロールマッピングは、認証後にロールをサブジェクトに対して追加、置換、または削除するために使用されます。プリンシパルマッピングは、認証後にプリンシパルを変更するために使用されます。クレデンシャルマッピングを使用すると、外部システムの属性をアプリケーションが使用できるように変換することができます。また逆に、クレデンシャルマッピングを使用して、アプリケーションの属性を外部システムが使用できるように変換することもできます。

2.8.5. パスワード vault システム

JBoss EAP には、機密性の高い文字列を暗号化して暗号化されたキーストアに格納し、アプリケーションや検証システムに対して復号化するパスワード vault が含まれています。XML デプロイメント記述子などのプレーンテキストの設定ファイルでは、パスワードや他の機密情報を指定する必要があるときがあります。JBoss EAP のパスワード vault を使用すると、プレーンテキストファイルで使用する機密性の高い文字列をセキュアに格納することができます。

2.8.6. セキュリティードメインの設定

セキュリティードメインは、ドメインコントローラーまたはスタンドアロンサーバーで一元的に設定されます。セキュリティードメインが使用される場合、セキュリティーを別々に設定する代わりに、アプリケーションがセキュリティードメインを使用するよう設定することができます。これにより、ユーザーと管理者は 宣言的セキュリティー を利用することができます。

このような設定構造を有効に活用できる一般的な例が、アプリケーションをテスト環境と本番環境の間で移動する処理です。アプリケーションのセキュリティーが個別に設定されている場合、テスト環境から本番環境など、アプリケーションが新しい環境に移されるたびにアプリケーションを更新する必要がある可能性があります。代わりにアプリケーションがセキュリティードメインを使用すると、各環境の JBoss EAP インスタンスのセキュリティードメインは現在の環境に対して適切に設定されます。アプリケーションはコンテナーに依存し、セキュリティードメインを使用して適切なセキュリティー設定を提供できます。

2.8.6.1. ログインモジュール

JBoss EAP には、セキュリティードメイン内で設定されるほとんどのユーザー管理ロールに適する、バンドルされたログインモジュールが複数含まれています。security サブシステムは、リレーショナルデータベース、LDAP サーバー、またはフラットファイルからユーザー情報を読み取りできるコアログインモジュールを複数提供します。JBoss EAP はこれらのコアログインモジュールの他に、カスタマイズの必要性に対応する、ユーザー情報や機能を提供するログインモジュールも提供します。

一般的に使用されるログインモジュールの概要

Ldap ログインモジュール
Ldap ログインモジュールは、LDAP サーバーに対して認証を行うログインモジュール実装です security サブシステムは bindDN を接続情報として使用し、LDAP サーバーに接続します。この bindDN は、JNDI 初期コンテキストを使用した場合にユーザーおよびロールの baseCtxDN および rolesCtxDN ツリーを検索する権限があります。ユーザーが認証を試みると、LDAP ログインモジュールは LDAP サーバーへ接続し、ユーザーのクレデンシャルを LDAP サーバーに渡します。認証に成功すると、JBoss EAP 内のそのユーザーに InitialLDAPContext が作成され、ユーザーのロールが入力されます。
LdapExtended ログインモジュール
The LdapExtended ログインモジュールは、ユーザーと認証でバインドする関連ロールを検索します。ロールは再帰的にクエリーを行い、DN に従って階層的なロール構造を移動します。ログインモジュールオプションには、JNDI プロバイダーがサポートする指定の LDAP によってオプションがサポートされるかどうかが含まれます。
UsersRoles ログインモジュール
UsersRoles ログインモジュールは、Java プロパティーファイルからロードされる複数のユーザーおよびユーザーロールをサポートする簡単なログインモジュールです。このログインモジュールの主な目的は、アプリケーションとともにデプロイされたプロパティーファイルを使用して複数のユーザーおよびロールのセキュリティー設定を簡単にテストすることです。
Database ログインモジュール
Database ログインモジュールは、認証とロールマッピングをサポートする JDBC (Java Database Connectivity) ベースのログインモジュールです。このログインモジュールは、ユーザー名、パスワード、およびロール情報がリレーショナルデータベースに格納される場合に使用されます。このログインモジュールは、想定される形式のプリンシパルおよびロールが含まれる論理テーブルへの参照を提供して動作します。
Certificate ログインモジュール
Certificate ログインモジュールは、X509 証明書を基にユーザーを認証します。このログインモジュールの典型的なユースケースが、web 層の CLIENT-CERT 認証です。証明書ログインモジュールは認証のみを実行するため、セキュアな web または EJB コンポーネントへのアクセスを完全に定義するには、承認ロールを取得できる他のログインモジュールと組み合わせる必要があります。このログインモジュールの 2 つのサブクラスである CertRolesLoginModule および DatabaseCertLoginModule は動作を拡張し、プロパティーファイルまたはデータベースから承認ロールを取得します。
Identity ログインモジュール
Identity ログインモジュールは、ハードコードされたユーザー名をモジュールに対して認証されたサブジェクトに関連付ける簡単なログインモジュールです。このモジュールは、プリンシパルのオプションによって指定された名前を使用して SimplePrincipal インスタンスを作成します。このログインモジュールは、固定のアイデンティティーをサービスに提供する必要がある場合に便利です。また、指定のプリンシパルに関連するセキュリティーや関連するロールをテストするために、開発環境でも使用できます。
RunAs ログインモジュール
RunAS ログインモジュールは、認証のログインフェーズの間に run-as ロールをスタックにプッシュするヘルパーモジュールです。ログインフェーズ後、コミットまたはアボートフェーズで run-as ロールをスタックからポップします。このログインモジュールの目的は、セキュアな EJB にアクセスするログインモジュールなど、セキュアなリソースにアクセスして認証を実行する必要のあるその他のログインモジュールにロールを提供することです。RunAs ログインモジュールは、run-as ロールの構築が必要なログインモジュールよりも先に設定する必要があります。
Client ログインモジュール
Client ログインモジュールは、呼び出し元のアイデンティティーおよびクレデンシャルの確立時に JBoss クライアントによって使用されるログインモジュールの実装です。新しい SecurityContext を作成してプリンシパルとクレデンシャルに割り当て、SecurityContextThreadLocal セキュリティーコンテキストに設定します。Client ログインモジュールは、クライアントが現在のスレッドの呼び出し元を確立するために唯一サポートされるログインモジュールです。セキュリティー環境が JBoss EAP security サブシステムを使用するよう透過的に設定されていない EJB クライアントとして動作するサーバー環境とスタンドアロンクライアントアプリケーションは、Client ログインモジュールを使用する必要があります。
警告

このログインモジュールは認証を実行しません。サーバー上の後続の認証のために、提供されたログイン情報をサーバー EJB 呼び出しレイヤーにコピーすることもほとんどありません。JBoss EAP 内では、JVM 内の呼び出しに対してユーザーのアイデンティティーを切り替える場合のみサポートされます。リモートクライアントがアイデンティティーを確立する目的ではサポートされません。

SPNEGO ログインモジュール
SPNEGO ログインモジュールは、KDC で呼び出し元のアイデンティティーとクレデンシャルを確立するログインモジュールの実装です。モジュールは JBoss Negotiation プロジェクトの一部で、SPNEGO を実装します。この認証を AdvancedLdap ログインモジュールとチェーンされた設定で使用すると、LDAP サーバーと連携できます。また、このログインモジュールを使用するには、web アプリケーションがアプリケーション内で NegotiationAuthenticator を有効にする必要があります。
RoleMapping ログインモジュール
RoleMapping ログインモジュールは、1 つ以上の宣言的ロールへの認証プロセスの最終結果となるロールのマッピングをサポートします。たとえば、ユーザー John のロールが ldapAdmintestAdmin で、web.xml または ejb-jar.xml ファイルで定義されたアクセスの宣言的ロールは admin であると認証プロセスによって判断された場合、このログインモジュールは ldapAdmin および testAdmin ロールを John にマップします。RoleMapping ログインモジュールは、以前マップされたロールのマッピングを変更するため、ログインモジュール設定でオプションのモジュールとして定義する必要があります。
Remoting ログインモジュール
Remoting ログインモジュールは現在認証中のリクエストがリモーティング接続上で受信されたかどうかをチェックします。リクエストがリモーティングインターフェースを使用して受信された場合、リクエストは認証プロセス中に作成されたアイデンティティーに関連付けられます。
RealmDirect ログインモジュール
RealmDirect ログインモジュールは、認証および承認の決定に既存のセキュリティーレルムを使用できるようにします。このモジュールを設定すると、認証の決定とユーザーロールのマッピングに、参照したレルムを使用してアイデンティティー情報を検索します。たとえば、JBoss EAP に同梱される事前設定された other セキュリティードメインには RealmDirect ログインモジュールがあります。このモジュールに参照されるレルムがない場合、デフォルトで ApplicationRealm セキュリティーレルムが使用されます。
カスタムモジュール
JBoss EAP セキュリティーフレームワークとバンドルされるログインモジュールがセキュリティー環境の要件に対応できない場合、カスタムログインモジュール実装を作成できます。AuthenticationManager は、Subject プリンシパルの特定の使用パターンを必要とします。AuthenticationManager と動作するログインモジュールを作成するには、JAAS Subject クラスの情報ストレージ機能と、これらの機能の想定される使用方法を完全に理解する必要があります。

UnauthenticatedIdentity ログインモジュールオプションも一般的に使用されます。一部のケースでは、認証された形式でリクエストが受信されないことがあります。UnauthenticatedIdentity は、guest などの特定のアイデンティティーを、関連する認証情報がない状態で作成されたリクエストに割り当てます。これを使用すると、保護されていないサーブレットは特定ロールを必要としない EJB でメソッドを呼び出すことができます。このようなプリンシパルには関連したロールがなく、セキュアでない EJB や、チェックされていないパーミッション制約と関連する EJB メソッドのみにアクセスできます。

2.8.6.2. パスワードスタッキング

スタックでは複数のログインモジュールをチェーンでき、各ログインモジュールは認証中にクレデンシャルの検証とロールの割り当てを提供します。これは多くのユースケースで機能しますが、クレデンシャルの検証とロールの割り当てが複数のユーザー管理ストアに分散されることがあります。

ユーザーは中央の LDAP サーバーで管理され、アプリケーション固有のロールはアプリケーションのリレーショナルデータベースに格納される場合を考えてみましょう。password-stacking モジュールオプションはこの関係をキャプチャーします。

パスワードスタッキングを使用するには、各ログインモジュールは、<module-option> セクションにある password-stacking 属性を useFirstPass に設定する必要があります。パスワードスタッキングに設定した以前のモジュールがユーザーを認証した場合、他のすべてのスタッキングモジュールがユーザーによって認証されたこととなり、承認の手順でロールの提供のみを行います。

password-stacking オプションを useFirstPass に設定すると、このモジュールは最初にプロパティー名 javax.security.auth.login.name で共有されたユーザー名を検索し、javax.security.auth.login.password で共有されたパスワードを検索します。

これらのプロパティーが見つかった場合、プリンシパル名とパスワードとして使用されます。見つからなかった場合、プリンシパル名とパスワードはこのログインモジュールによって設定され、プリンシパル名は javax.security.auth.login.password、パスワードは javax.security.auth.login.password 以下に格納されます。

2.8.6.3. パスワードのハッシュ化

ログインモジュールのほとんどは、クライアントが提供するパスワードをユーザー管理システムに保存されたパスワードと比較する必要があります。通常、これらのモジュールはプレーンテキストのパスワードを使用しますが、プレーンテキストのパスワードがサーバー側に保存されないようにするため、ハッシュ化されたパスワードをサポートするよう設定できます。JBoss EAP は、ハッシュ化するアルゴリズム、エンコーディング、および文字セットを設定する機能をサポートします。さらに、ユーザーパスワードとストアパスワードがハッシュ化されるタイミングも定義します。

重要

Red Hat JBoss Enterprise Application Platform Common Criteria で認定された設定は、SHA-256 よりも弱いハッシュアルゴリズムはサポートしません。

2.8.7. セキュリティー管理

security サブシステムのセキュリティー管理部分は、security サブシステムのハイレベルな動作を上書きするために使用されます。各設定は任意になります。ディープコピーサブジェクトモード以外の設定を変更することはあまりありません。

2.8.7.1. ディープコピーモード

ディープコピーサブジェクトモードが無効であるときに (デフォルト設定)、セキュリティーデータ構造をコピーすると、データ構造全体がコピーされずに元のデータ構造への参照が作成されます。この挙動は効率的ですが、同じアイデンティティーを持つ複数のスレッドによってフラッシュまたはログアウトの操作が行われ、サブジェクトが消去されると、データが破損しやすくなります。

ディープコピーサブジェクトモードが有効になっていると、データ構造の完全コピーと、クローン可能な関連するデータがすべて作成されます。これはよりスレッドセーフになりますが、効率が悪くなります。

2.8.8. その他のコンポーネント

2.8.8.1. JASPI

Java Authentication SPI for Containers (JASPI または JASPIC) は Java アプリケーションのプラグ可能なインターフェースで、 JSR-196 に定義されています。JBoss EAP では JAAS 認証だけでなく、JASPI 認証も使用できます。JASPI 認証はセキュリティードメインのログインモジュールを使用して設定され、これらのモジュールはスタック可能です。jaspitest セキュリティードメインは、開発用にデフォルトで含まれる簡単な JASPI セキュリティードメインです。web ベースの管理コンソールは JASPI 認証モジュールの設定を公開しません。JBoss EAP にデプロイされたアプリケーションが JASPI セキュリティードメインを使用するには、デプロイメント記述子に特別なオーセンティケーターを設定する必要があります。

2.8.8.2. JACC

JACC (Java Authorization Contract for Containers) はコンテナーと承認サービスプロバイダー間のコントラクトを定義する規格で、これによりコンテナーによって使用されるプロバイダーが実装されます。これは JSR-115 に定義され、バージョン 1.3 以上ではコア Java EE 仕様の一部となっています。

JBoss EAP は、security サブシステムのセキュリティー機能内に JACC のサポートを実装します。

2.8.8.3. 粒度の細かい承認および XACML

粒度の細かい承認 (Fine Grained Authorization) は、モジュールへのアクセス権限を付与する意思決定プロセスに関係する要件や変数の変化に管理者が対応できるようにします。そのため、粒度の細かい承認は複雑になります。

注記

JBoss EAP では、web および EJB の XACML バインディングはサポートされません。

JBoss EAP は XACML を媒体として使用し、粒度の細かい承認を実現します。XACML は標準ベースのソリューションを提供し、複雑な粒度の細かい承認に対応します。XACML は、意思決定のポリシー言語やアークテクチャーを定義します。XACML アーキテクチャーには、通常のプログラムフローでリクエストを阻止する PEP (Policy Enforcement Point: ポリシー強制ポイント) が含まれ、PDP (Policy Decision Point: ポリシー決定ポイント) に関連するポリシーを基にアクセスを決定するよう PDP に要求します。PDP は PEP によって作成された XACML リクエストを評価し、ポリシーを確認して以下の 1 つを決定します。

PERMIT
アクセスは許可されます。
DENY
アクセスは拒否されます。
INDETERMINATE
PDP にエラーがあります。
NOTAPPLICABLE
リクエストに足りない属性があるか、一致するポリシーがありません。

XACML には以下の機能もあります。

  • Oasis XACML v2.0 ライブラリー
  • JAXB v2.0 ベースのオブジェクトモデル
  • XACML ポリシーおよび属性を保存および読み出しするための ExistDB 統合

2.8.8.4. SSO

JBoss は undertow および infinispan サブシステムを使用して、クラスター化された SSO とクラスター化されていない SSO に対して初期状態のサポートを提供します。これには以下の要件があります。

  • 認証と承認を処理する設定済みのセキュリティードメイン。
  • SSO infinispan レプリケーションキャッシュ。これは、管理対象ドメインでは ha および full-ha プロファイルにあります。スタンドアロンサーバーの場合は standalone-ha.xml または standalone-full-ha.xml 設定ファイルを使用します。
  • web キャッシュコンテナーと、その内部の SSO レプリケーションキャッシュが存在する必要があります。
  • undertow サブシステムが SSO を使用するように設定する必要があります。
  • SSO 情報を共有する各アプリケーションが同じセキュリティードメインを使用するように設定する必要があります。