以下の情報は、WebSphere Application Server のセキュリティーに関する概要となります。
IBM WebSphere Application Server では、 Web リソース、Web サービス・エンドポイント、および J2EE 仕様に準拠する Enterprise JavaBeans を保護するため、ポリシー・ベースおよび許可ベースの統合モデルを提供しています。 具体的には、WebSphere Application Server は J2EE 仕様の バージョン 1.4 に準拠し、J2EE Compatibility Test Suite に合格しています。
セキュア・ソケット通信、メッセージの暗号化、およびデータ暗号化をサポートする標準のセキュリティー・ モデルおよびインターフェースは、Java Secure Socket Extension (JSSE) および Java Cryptographic Extension (JCE) です。
アプリケーション・サーバーは、複数層のエンタープライズ・コンピューティング・フレームワークの中核をなす部分です。 IBM WebSphere Application Server は、オープン・アーキテクチャー・パラダイムを採用し、エンタープライズ・ソフトウェア・コンポーネントと統合するプラグイン・ポイントを多数提供します。 プラグイン・ポイントは、J2EE の標準仕様が適用できるところでは必ず、この仕様を基にしています。
紺色の影が付いた背景は、 WebSphere Application Server バージョン 6 と他のビジネス・アプリケーション・コンポーネントとの境界を示します。
LTPA 認証メカニズムは、分散セキュリティー用に設計されています。
ダウンストリーム・サーバーはセキュリティー・トークンを検証できます。また、リバース・セキュア・プロキシー・サーバー
とシングル・サインオン (SSO) とのトラスト・アソシエーション関係のセットアップもサポートします。
これについては後述します。 LTPA と LDAP
またはカスタム・ユーザー・レジストリー・インターフェースとの組み合わせ以外に、
バージョン 5 またはバージョン 6 は、LocalOS ユーザー・レジストリー・インターフェースを備えた LTPA にも対応しています。
単一のノードに
複数のアプリケーション・サーバーが組み込まれている場合に、
この新しい構成は特に有効です。
ローカル OS のユーザー・レジストリー実装が、
Windows ドメイン・コントローラーなどの
集中化されたユーザー・レジストリーになっている場合、
または複数ノード上で整合性のある状態を維持できる場合は、
この構成を分散環境で機能させることができます。
WebSphere
Application Server は、J2EE コネクター・アーキテクチャーをサポートし、コンテナー管理認証を提供します。
WebSphere Application Server バージョン 6 は、デフォルトの Java 2 Connector
(J2C) のプリンシパルおよび信任状マッピング・モジュールを提供します。
このモジュールは、任意の認証済みユーザーの信任状を、指定したエンタープライズ情報システム (EIS) セキュリティー・ドメインのパスワード信任状にマップします。
このマッピング・モジュールは、Java 2 コネクターおよび JAAS 仕様に従って設計された特別な JAAS ログイン・モジュールです。他のマッピング・ログイン・モジュールも接続できます。
WebSphere Application Server for z/OS バージョン 6 では、セキュリティー・サービスはセル・レベルで構成されます。 構成可能サービス には、Web 認証メカニズム、ユーザー・レジストリー、およびアクセス制御マネージャーが含まれています。 特に指定しないかぎり、アクセス制御機能が WebSphere バインディングにより提供されます。
WebSphere Application Server for z/OS 固有のセキュリティー: WebSphere Application Server for z/OS では、z/OS 以外のプラットフォームでは 追加オプション・フィーチャーにより提供されるものと同一の機能が提供されます。 WebSphere Application Server for z/OS では、セキュリティー・サービスはセル・レベルで構成されます。構成可能サービスには、Web 認証メカニズム、 ユーザー・レジストリー、および許可機能が含まれています。許可機能は、WebSphere バインディングにより提供されます。
他のプラットフォームとは異なり、WebSphere Application Server for z/OS では、z/OS のデフォルトの機密保護機能により、 保護リソースおよびファイルに対して許可を要求するセキュリティー機能 (拡張) が提供されます。 WebSphere Application Server for z/OS バージョン 6 は、 他の WebSphere Application Server プラットフォームと同様に構成できる一方で、LDAP としてアクティブ WebSphere Application Server ユーザー・レジストリーまたはカスタム・レジストリーの構成をサポートします。 また、『System Authorization Facility セキュリティー』で示すように、RACF および SAF サービスを活用することもできます。 詳しくは、この項目の『WebSphere Application Server 構成情報』を参照してください。
RACF プロファイルおよび RACF クラスの詳細については、 「z/OS Security Server RACF System Adminstrator's Guide」を参照してください。
識別管理: SAF セキュリティー機能を活用するには、 ユーザーは z/OS ベースのユーザー ID を使用して自信を識別する必要があります。J2EE ID をプラットフォーム・ベースのユーザー ID (この場合、RACF ユーザー ID) にマップするためのプリンシパル・マッピング・モジュールを使用することができます。SAF EJBROLE チェックを実行するために、LDAP ユーザー ID から RACF ユーザー ID にプリンシパル・マッピングを作成する必要があります。 つまり、LDAP レジストリー内の構成ユーザーから z/OS ユーザー ID を派生させるために、 マッピング・ログイン・モジュールが使用可能である必要があります。(SMF 監査 (SAF を使用した) を使用して、これらの変更をトラッキングすることができます。)
詳しくは、カスタム System Authorization Facility マッピング・モジュール およびWebSphere Application Server 用のカスタム System Authorization Facility マッピング・モジュールのインストールおよび構成 を参照してください。
ユーザー・レジストリーにはユーザーおよびグループに関する情報が入っています。 WebSphere Application Server のユーザー・レジストリーは、 ユーザーの認証を行い、 ユーザーおよびグループに関する情報を取得して、 セキュリティー関連の機能 (認証および許可など) を実行します。
WebSphere Application Server は、ローカル OS レジストリーと LDAP レジストリーの他にも、 カスタム・レジストリー・フィーチャー (カスタム・ユーザー・レジストリーとも言います) を使用して任意のレジストリーをサポートするプラグインも提供しています。
WebSphere Application Server の ローカル OS レジストリー・インプリメンテーションが選択されている場合、WebSphere 環境で直接 Security Access Facility (SAF) を使用して、Resource Access Control Facility (RACF) などの z/OS Security Server 機能を統合できます。アクティブ LDAP またはカスタム・ユーザー・レジストリーを構成する場合、 適切なシステム・ログイン構成にカスタムまたは IBM 提供のプラグ可能マッピング・モジュール (次に、WebSphere Application Server for z/OS 提供のモジュール) を構成することにより、 これらの z/OS Security Server 機能を活用することもできます。
ローカル OS 以外のレジストリーを選択し、マッピングが行われない場合 (または特定の ID に対して有効なマッピングが使用できない場合)、これらの機能は使用できません。
LDAP UserRegistry はマッピング機能をサポートしています。
詳しくは、ユーザー・レジストリーおよびリポジトリー を参照してください。
WebSphere Application Server 構成: WebSphere Application Server for z/OS バージョン 6 では、 既存の z/OS 以外のアプリケーションを System Authorization Facility (SAF) および RACF などの z/OS 固有の機能と統合することができきます。これにより、WebSphere Application Server for z/OS と z/OS 以外のプラットフォームのレジストリーを統合できます。以下に例を示します。
アプリケーション・サーバー構成 | レジストリー・タイプ | 許可方式 | 利点 |
---|---|---|---|
WebSphere Application Server | LDAP | WebSphere バインディングおよび Tivoli Access Manager などの外部セキュリティー・プロバイダー | 共用レジストリー (異機種のプラットフォームに渡る) |
WebSphere Application Server for z/OS | RACF | WebSphere バインディングおよび RACF EJBROLE | 集中アクセスおよび監査機能 (バージョン 4.0 を実行しているサーバーを含むことができる) |
WebSphere Application Server 混合環境 | LDAP またはカスタム | WebSphere バインディング、外部セキュリティー・プロバイダー、 および RACF EJBROLE | 共用レジストリー、一元アクセス、および監査機能 |
Lightweight Third Party Authentication では、認証済みユーザーのセキュリティー・トークンが生成されます。 このトークンを使用することより、以降の呼び出しで、シングル・サインオン (SSO) ドメイン内の同じサーバーまたは 他のサーバーに対して、そのユーザーが認証済みであることを示すことができます。ネットワーク分散サーバーと 相互運用する必要がある場合は、LTPA を使用する必要があります。
IIOP
認証プロトコルは、Java クライアントから WebSphere Application Server for z/OS への要求、または J2EE アプリケーション・サーバー間の要求を認証するためのメカニズムです。
WebSphere Application Server for z/OS バージョン 5.x またはバージョン 6 では、2 つのセットの
認証プロトコルがサポートされています。z/OS Secure Association Service (z/SAS) は、
以前のすべての WebSphere Application Server のリリースで使用されている認証プロトコル (ユーザー ID および
パスチケット、SSL 基本認証、Kerberos など) のセットです。Common Secure Interoperability Version 2 (CSIv2) は
、WebSphere Application Server for z/OS バージョン 5.x またはバージョン 6 でインプリメントされており、
戦略的プロトコルであると見なされています。
WebSphere Application Server は、J2EE コネクター・アーキテクチャーをサポートし、コンテナー管理認証を提供します。 WebSphere Application Server は、デフォルトの J2C のプリンシパルおよび信任状マッピング・モジュールを提供します。 このモジュールは、任意の認証済みユーザーの信任状を、指定した EIS (Enterprise Information System) セキュリティー・ドメイン のパスワード信任状にマップします。EIS システムが、WebSphere Application Server と同一のセキュリティー・ドメインにある場合、z/OS 仕様のコネクターもサポートされています。 この場合、J2EE 要求に対して使用する認証済み信任状を EIS の信任状として使用できるため、パスワードは必要ではありません。
このバージョンは、5.x リリースとの後方互換性を維持していますが、 新規セキュリティー機能を追加しており、新規業界標準になりつつあります。バージョン 5.x 開発環境で作成されたアプリケーションは、バージョン 6 でデプロイできます。Java 2 セキュリティーをバージョン 6 で実行する場合は、バージョン 4.0.x のアプリケーションには特別に注意を払う必要があります。 これは、バージョン 4 アプリケーションは、Java 2 セキュリティーに対応していない場合があるためです。 バックレベル・バージョンからバージョン 6 に移植するためのステップについては、セキュリティー・マイグレーションのセクションを参照してください。
WebSphere Application Server では、 Organization for the Advancement of Structured Information Standards (OASIS) Web サービス・セキュリティー・バージョン 1.0 仕様に基づいて Web サービスを保護することができます。このような標準は、Web サービス環境で交換されるメッセージの保護方法を 規定します。この仕様は、メッセージの保全性と機密性を保護するための中核機構を定義し、セキュリティー関連の要求と メッセージを関連付けるためのメカニズムを提供します。
セキュリティー属性の伝搬によって、WebSphere Application Server、WebSphere Application Server Network Deployment、または WebSphere Application Server Express LDAP ユーザー・レジストリーから WebSphere
Application Server for z/OS SAF ユーザー・レジストリーへの通信が可能になります。
WebSphere Application Server では、 インターオペラビリティー・モード・オプションにより、WebSphere Application Server バージョン 5.1.1 以降の シングル・サインオン (SSO) 接続が、前のバージョンのアプリケーション・サーバーと相互運用できるようになります。このオプションを選択した場合、WebSphere Application Server は応答に旧スタイルの LtpaToken を追加するため、 このトークン・タイプでのみ機能する他のサーバーに応答を送信することができます。 このオプションは、Web インバウンド・セキュリティー属性の伝搬オプションが使用可能になっている場合にのみ適用されます。シングル・サインオンの詳細については、Web ユーザー認証を最小化するためのシングル・サインオンのインプリメント を参照してください。
それぞれのコンテナーは、2 種類のセキュリティー (宣言セキュリティー とプログラマチック・セキュリティー) に対応しています。 宣言セキュリティーでは、アプリケーションのセキュリティー構造 (データの保全性と機密性、認証要件、セキュリティーの役割、アクセス制御など) が、そのアプリケーション外部の形式で表されます。 特にデプロイメント記述子は、J2EE プラットフォームにおける宣言セキュリティーの主要な手段です。 WebSphere Application Server は、デプロイメント記述子から引き出され、デプロイ担当者と管理者が 1 組の XML ディスクリプター・ファイルで 指定した情報を含む J2EE セキュリティー・ポリシーを維持します。コンテナーは、実行時には XML ディスクリプター・ファイルで定義されたセキュリティー・ポリシーを使用して、データ制約とアクセス制御を実行します。 宣言セキュリティー単独ではアプリケーションのセキュリティー・モデルを表現するのに十分でない場合には、 プログラマチック・セキュリティーがアプリケーション・コードによって使用され、アクセス判断を行うことがあります。 プログラマチック・セキュリティーのアプリケーション・プログラミング・インターフェース (API) は、 Enterprise JavaBeans (EJB) EJBContext インターフェースの 2 つのメソッド (isCallerInRole、 getCallerPrincipal) およびサーブレット HttpServletrequest インターフェースの 3 つのメソッド (isUserInRole、getUserPrincipal、getRemoteUser) で構成されています。
セキュリティーの観点から、 アプリケーション・サーバー・プロセスにはそれぞれ、Web コンテナー、EJB コンテナー、および管理サブシステムが含まれています。 サーバー・プロセスを構成するコンポーネントは、ここで述べるもの以外にもたくさんあります。管理サブシステムへの リモート・インターフェース (Java Management Extensions (JMX) コネクターを経由する管理サービス・インターフェース、 ユーザー・レジストリー・インターフェース、ネーミング・インターフェースなど) は、拡張セキュリティー役割をベースにした アクセス制御によって保護されています。システム・コードは、 管理サブシステム、Web コンテナー、EJB コンテナー・コードを含めて、すべて WebSphere Application Server のセキュリティー・ドメイン内で実行 されています。以下の図の WebSphere Application Server セキュリティー・ドメイン・ボックスに示されているように、システム・コードは AllPermission の権限を付与されており、すべてのシステム・リソースにアクセスできます。 アプリケーションのセキュリティー ・ドメイン内で実行されているアプリケーション・コードは、デフォルトで J2EE 仕様に従ったアクセス権を付与されており、一定のシステム・ リソースにしかアクセスできません。WebSphere Application Server バージョン 6 のランタイム・クラスは、WebSphere Application Server のクラス・ローダーに保護されているため、 アプリケーション・コードからは不可視になっています。
J2EE リソースのためのセキュリティーは、Web コンテナーおよび EJB コンテナーから提供されます。
それぞれのコンテナーは、2 種類のセキュリティー (宣言セキュリティー とプログラマチック・セキュリティー) に対応しています。
宣言セキュリティーでは、アプリケーションのセキュリティー構造 (データの保全性と機密性、認証要件、セキュリティーの役割、アクセス制御など) が、そのアプリケーション外部の形式で表されます。
デプロイメント記述子は、J2EE プラットフォームにおける宣言セキュリティーの主要な手段です。WebSphere Application Server バージョン 6 は、デプロイメント記述子から引き出され、デプロイ担当者と管理者が 1 組の XML ディスクリプター・ファイルで
指定した情報を含む J2EE セキュリティー・ポリシーを維持します。コンテナーは、実行時には XML ディスクリプター・ファイルで定義されたセキュリティー・ポリシーを使用して、データ制約とアクセス制御を実行します。
宣言セキュリティー単独ではアプリケーションのセキュリティー・モデルを表現するのに十分でない場合には、
プログラマチック・セキュリティーがアプリケーション・コードによって使用され、アクセス判断を行うことがあります。
プログラマチック・セキュリティーの API は、EJB EJBContext インターフェースの 2 つのメソッド (isCallerInRole、
getCallerPrincipal) およびサーブレット HttpServletrequest インターフェースの 3 つのメソッド
(isUserInRole、getUserPrincipal、getRemoteUser) で構成されています。
WebSphere Application Server は、Java 2 セキュリティー・モデルをサポートしています。黄色ボックス内のシステム・コードは、 管理サブシステム、Web コンテナー、EJB コンテナー・コードを含めて、すべて WebSphere Application Server の セキュリティー・ドメイン内で実行されており、現在のインプリメンテーションでは、AllPermission の権限を付与され、 すべてのシステム・リソースにアクセスできます。アプリケーションのセキュリティー・ドメイン内で 実行されているアプリケーション・コードは、デフォルトで J2EE 仕様に従ってアクセス権を付与されており、 制限されたシステム・リソース・セットにしかアクセスできません。WebSphere Application Server のランタイム・クラスは、WebSphere Application Server のクラス・ローダーに保護されているため、 アプリケーション・コードからは不可視になっています。
WebSphere Application Server は、J2EE コネクター・アーキテクチャーをサポートし、コンテナー管理認証を提供します。 WebSphere Application Server は、デフォルトの J2C のプリンシパルおよび信任状マッピング・モジュールを提供します。 このモジュールは、任意の認証済みユーザーの信任状を、指定した EIS (Enterprise Information System) セキュリティー・ドメイン のパスワード信任状にマップします。
EIS システムが、WebSphere Application Server と同一のセキュリティー・ドメインにある場合、z/OS 仕様のコネクターもサポートされています。
この場合、J2EE 要求に対して使用する認証済み信任状を EIS の信任状として使用できるため、パスワードは必要ではありません。
詳しくは、接続スレッド ID を参照してください。
アプリケーション・サーバー・プロセスはすべて、デフォルトでは、セル・レベルのセキュリティー XML 文書で定義される共通の セキュリティー構成を共有することになっています。セキュリティー構成では、WebSphere Application Server のセキュリティーを実行 するかどうか、Java 2 セキュリティーを実行するかどうかを決定し、認証メカニズムとユーザー・レジストリー構成、 セキュリティー・プロトコル構成、JAAS ログイン構成、および Secure Sockets Layer 構成について決定します。 アプリケーションには、それぞれ固有のセキュリティー要件がある場合があります。 アプリケーション・サーバー・プロセスはそれぞれ、独自のセキュリティー要件に対応するように、サーバー別のセキュリティー 構成を作成することができます。 セキュリティー構成がすべて、アプリケーション・サーバー・レベルで変更できるわけではありません。 アプリケーション・サーバー・レベルで変更できるセキュリティー構成には、 アプリケーション・セキュリティーを実行すべきかどうか、Java 2 セキュリティーを実行すべきかどうかということと、 セキュリティー・プロトコル構成が含まれます。
一般情報詳細については、スレッド ID サポートによるセキュリティー状態を参照してください。
管理サブシステム・セキュリティー構成は、常にセル・レベルのセキュリティー文書で決定されます。 Web コンテナーと EJB コンテナーのセキュリティー構成は、サーバー・レベルのセキュリティー文書ごとのオプションによって決定され、 セル・レベルのセキュリティー文書よりも優先されます。
セキュリティー構成は、 セル・レベルでもアプリケーション・サーバー・レベルでも、Web ベースの管理コンソール・アプリケーションか、該当するスクリプト・アプリケーションのいずれかで管理されます。
WebSphere Application Server Express では、ローカル OS のユーザー・レジストリーはマッピング機能をサポートしていません。
LTPA 認証メカニズムが構成され、シングル・サインオン (SSO) が使用可能になっていると、
認証済みクライアントに、指定したセキュリティー・ドメイン内のユーザーを表すセキュリティー Cookie が発行されます。
セキュリティー Cookie および基本認証情報がインターセプトされたり再実行されたりするのを防ぐために、 Secure Sockets Layer (SSL) の使用をお勧めします。トラスト・アソシエーションが構成されていると、WebSphere Application Server は、認証済みユーザーの ID を、 セキュア・リバース・プロキシー・サーバーとの間で確立した信頼関係に基づく、セキュリティー信任状にマップすることができます。
セキュリティーが使用可能になっていると、EJB コンテナーは EJB メソッドを起動してアクセス制御を実行します。 認証は、メソッド許可が特定の EJB メソッド用に定義されているかどうかに関係なく 行われます。
Java アプリケーション・クライアントは、いくつかの方法で認証データを提供することができます。
sas.client.props ファイルを使用すると、Java クライアントは、認証を行うのにユーザー ID とパスワードを
使用するか、SSL クライアント証明書を使用するかを指定できます。 クライアント証明書は、sas.client.props ファイル
の定義に従って、鍵ファイルまたはハードウェア暗号カードに保管されます。ユーザー ID とパスワードは、
オプションで、sas.client.props ファイルで定義することもできます。
実行時には、Java クライアントはプログラマチック・ログインを実行することも、遅延認証 を実行することもできます。
Java クライアントが、保護されているエンタープライズ Bean に初めて
アクセスしている遅延認証では、セキュリティー・ランタイムは、必要な認証データを取得しようとします。 sas.client.props ファイルでの構成設定に応じて、セキュリティー・
ランタイムは、このファイルから認証データを検索するか、ユーザーにプロンプトを出すかのいずれかを行います。 Java クライアントではプログラマチック・ログインを使用することもできます。
WebSphere Application Server は、JAAS プログラミング・モデルをサポートしており、プログラマチック・ログインの方法としては JAAS ログイン (LoginContext) が推奨されています。バージョン 5.x およびバージョン 6 では login_helper request_login ヘルパー関数は使用しないでください。login_helper APT にプログラムされている Java クライアントは、
本バージョンで実行できます。
EJB セキュリティー・コラボレーターは、アクセス・マネージャー・インプリメンテーションを使用して、
役割ベースのアクセス制御を実行します。
アクセス・マネージャーは、デプロイメント記述子から派生したセキュリティー・ポリシーに基づいて許可を決定します。 認証済みのユーザー・プリンシパルは、必要なセキュリティー役割のいずれかを持っている場合に、要求した EJB メソッドへアクセスできます。 EJB コードは、EJBContext メソッドの isCallerInRole および getCallerPrincipal を使用できます。 EJB コードでは、JAAS ログインを実行する JAAS プログラミング・モデル、WSSubject doAs および doAsPrivileged メソッド も使用できます。 doAs および doAsPrivileged PrivilegedAction ブロック内のコードは、サブジェクト ID を使用して実行 されます。 そうでない場合、EJB メソッドは RunAs 構成に応じて、指定した RunAs ID または呼び出し元の ID のいずれかを使用して実行されます。 J2EE RunAs 仕様は Enterprise Bean レベルです。 RunAs ID を指定すると、これがすべての Bean メソッドに適用されます。 IBM RunAs 拡張がバージョン 4.0 で 導入したメソッド・レベルは、引き続き本バージョンでもサポートされています。
連邦情報処理標準 (FIPS) は、米国連邦情報・技術局 (NIST) が、連邦コンピューター・システムのために発行した標準およびガイドラインです。 FIPS は、セキュリティーおよびインターオペラビリティーなど、標準に関する連邦政府の切実な要求がある一方で、 実施可能な業界標準または解決方法が存在しない場合のために開発されました。
WebSphere Application Server には、Java Secure Socket Extension (JSSE) および Java Cryptography Extension (JCE) を含む暗号モジュールが組み込まれています。この暗号モジュールは、FIPS 140-2 認証が行われています。 資料および WebSphere Application Server では、FIPS 認証を受けた IBM JSSE モジュールおよび JCE モジュールは、それぞれ IBMJSSEFIPS および IBMJCEFIPS と呼ばれています。 これは、FIPS モジュールと、IBM JSSE および IBM JCE モジュールとを区別するためです。
詳しくは、連邦情報処理標準 (FIPS) Java セキュア・ソケット拡張機能ファイルの構成
を参照してください。
IBMJCEFIPS 暗号モジュールは、FIPS が承認したアルゴリズムを含んでいます。このアルゴリズムは、IBM JCE モジュール内のアルゴリズムの適正なサブセットを形成しています。