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 の両方は、管理インターフェイスのセキュア化に使用され、アプリケーションにセキュリティーを提供するためにも使用されます。

重要

Elytron のアーキテクチャーと、PicketBox をベースとしたレガシー security サブシステムのアーキテクチャーは大変異なります。Elytron では、現在操作しているセキュリティー環境で操作できるようにソリューションを作成しようとしますが、PicketBox 設定オプションと同等の設定オプションがすべて Elytron にあるわけではありません

レガシーセキュリティー実装の使用時に、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 実装は、新設計のクレデンシャルストアに置き換えられました。クレデンシャルストアは、保存するクレデンシャルの保護の他に、プレーンテキストの文字列を保存するために使用されます。