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 を使用して同等の機能を実現するための情報がドキュメントで見つからない場合は、以下の方法で情報を見つけることができます。
- Red Hat 開発サブスクリプション をお持ちの場合は、Red Hat カスタマーポータルの サポートケース、ソリューション、および ナレッジ記事 にアクセスできます。また、以下のように 技術サポート でケースを作成したり、WildFly コミュニティーで ヘルプ を受けることもできます。
- Red Hat 開発サブスクリプションをお持ちでない場合でも、Red Hat カスタマーポータルの ナレッジ記事 にはアクセスすることができます。また、ユーザーフォーラムやライブチャット に参加して WildFly コミュニティーで質問することもできます。WildFly コミュニティーが提供する技術は、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-factory
の mechanism
または mechanism-realm
に関連付けられることもあります。レルムマッパーは、認証中に提供された名前を使用して認証のセキュリティーレルムを選択し、未処理の AuthorizationIdentity
を取得します。
2.6.1.11. 認証ファクトリー
認証ファクトリーは、認証ポリシーを表します。認証はセキュリティードメイン、メカニズムファクトリー、およびメカニズムセレクターと関連付けられます。セキュリティードメインは、認証される SecurityIdentity
を提供します。メカニズムファクトリーはサーバー側の認証メカニズムを提供します。メカニズムセレクターは、選択したメカニズムに固有する設定を取得します。カニズムセレクターには、メカニズムがリモートクライアントに提示する必要のあるレルム名に関する情報や、認証プロセス中に使用する追加のプリンシパルトランスフォーマーとレルムマッパーに関する情報を含めることができます。
2.6.1.12. キーストア
key-store
は、キーストアの種類、その場所、アクセスするためのクレデンシャルなどを含むキーストアまたはトラストストアの定義です。
2.6.1.13. キーマネージャー
key-manager
は key-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 実装は、新設計のクレデンシャルストアに置き換えられました。クレデンシャルストアは、保存するクレデンシャルの保護の他に、プレーンテキストの文字列を保存するために使用されます。