Oracle Containers for J2EE
セキュリティ・ガイド
10g(10.1.3.4.0) B50832-01 |
|
この章では、Oracle Containers for J2EE(OC4J)のセキュリティ実装の概要について説明します。この実装を使用すると、開発者は認証サービス、認可サービスおよび委任サービスをアプリケーションと統合できます。
この実装において重要なコンポーネントは、JAAS仕様をサポートするOracle Application Server Java Authentication and Authorization Service(JAAS)Providerです。
この章の内容は次のとおりです。
OC4Jには、JAAS実装、Oracle Application Server Java Authentication and Authorization Service(JAAS)Providerが用意されています。OracleAS JAAS Providerでは、Java 2セキュリティ・モデルを使用するJ2SEアプリケーションおよびJ2EEアプリケーションに簡単に統合でき、開発者がアプリケーション環境に統合できるユーザー認証、認可および委任の各サービスを実装しています。アプリケーション開発者はこれらのサービスの開発にリソースを費やすかわりに、アプリケーションのプレゼンテーションおよびビジネス・ロジックに重点を置くことができます。
OC4Jアプリケーション用セキュリティ・フレームワークには、ファイルベース、Oracle Identity Management(LDAPディレクトリベース)、外部LDAPディレクトリ、Oracle Access Managerおよびカスタム(カスタム・ログイン・モジュールを使用)といういくつかの特定セキュリティ・プロバイダも、OracleAS JAAS Provider以外にサポートしているという重要な側面があります。
この項の以降の部分で、次の項目について説明します。
OracleAS JAAS Providerにより、JAASログイン構成プロバイダ・インタフェースおよびJAASポリシー・プロバイダ・インタフェースが実装されます。
JAVA_HOME
/jre/lib/security/java.policy
ファイルが使用されます。)ポリシーには、ファイルの読み書きなど、ユーザーによるリソースへのアクセスおよび使用を認可するためのルール(パーミッションまたは権限と呼ばれる)が含まれています。
OracleAS JAAS Providerを使用すれば、アプリケーションでリソース・ユーザーに対して密なアクセス制御を実施できます。セキュリティ対応アプリケーションがOC4Jで実行されるときの3つの重要な手順は次のとおりです。
OracleAS JAAS Providerは、デフォルトでOC4J製品の一部として構成されています。
表3-1に、OracleAS JAAS Providerにより実装されるJAASフレームワークの機能を示します。
機能 | 説明 | 関連項目 |
---|---|---|
認証 |
||
宣言によるモデル |
|
|
認可 |
||
レルム管理 |
|
|
ポリシー管理 |
|
|
管理 |
||
|
|
JAASフレームワークでは、ユーザー・コミュニティは明示的に定義されません。ただし、J2EEにはレルムと呼ばれるユーザー・コミュニティの概念があります。
レルムは、同じ認証ポリシーによって制御されるユーザーとロールのコレクションです。すなわち、レルムは認証済ユーザーに対して一連のパーミッションを定義するセキュリティ・ドメインです。
各レルムには、一連の構成されたユーザーおよびロールが含まれています。(OC4J構成では、ユーザーとロールはすべてレルム定義内に構成できます。)
Oracle Application Serverでは、次のセキュリティ・プロバイダがサポートされます。各セキュリティ・プロバイダは、事実上セキュリティ・プロバイダの一部である、該当するログイン・モジュール(ファイルベース・プロバイダおよびLDAPベース・プロバイダの場合はRealmLoginModule
)に関連付けられます。さらに、各セキュリティ・プロバイダでは、レルム情報(ユーザーとロール)とJAASポリシー情報(パーミッション)からなるデータをセキュアかつ集中的に格納、取得および管理するために、リポジトリが使用されます。
第7章「ファイルベースのセキュリティ・プロバイダ」で説明しているファイルベース・プロバイダは、XMLリポジトリを使用する、高速かつ軽量なJAASログイン・モジュール実装です。ユーザー、ロールおよびポリシーの情報は、通常はOC4Jインスタンスレベル・ファイルsystem-jazn-data.xml
に格納されます。
これがデフォルトのセキュリティ・プロバイダです。
第8章「Oracle Identity Management」で説明しているように、Oracle Internet Directoryをユーザー・リポジトリとして使用する場合(Oracle Single Sign-Onの共用の有無は問わない)は、このセキュリティ・プロバイダを使用します。Oracle Identity Managementプロバイダは、情報を集中的に格納するためのLightweight Directory Access Protocol(LDAP)に準拠しています。ユーザー、ロール、レルムおよびポリシー情報は、Oracle Internet Directoryに格納されます。
この本番環境向けのセキュリティ・プロバイダは、スケーラブルかつセキュアな、Oracle Single Sign-Onと統合されたエンタープライズ対応のセキュリティ・プロバイダです。
Oracle Identity Managementを使用するためには、OC4JをOracle Internet Directoryインスタンスと関連付ける必要があります。
Oracle Application Serverでは、第10章「外部LDAPセキュリティ・プロバイダ」で説明しているように、Sun Java System Directory ServerやMicrosoft Active Directoryなどの外部(サード・パーティ)LDAPプロバイダがサポートされています。外部LDAPプロバイダにより、ログイン・モジュールLDAPLoginModule
が実装されます。
Oracle Application Serverでは、ユーザーまたはサード・パーティが、アプリケーションに特別な認証機能を実装できるように、カスタム・ログイン・モジュールを使用してカスタム・セキュリティ・プロバイダを実装できます。これについては、第9章「ログイン・モジュール」で説明しています。カスタム・ログイン・モジュールでは、標準のJAASログイン・モジュール・インタフェースが実装されます。カスタム・ログイン・モジュールは、Oracle Enterprise Manager 10gを介してアプリケーションをデプロイするときに構成できます。この構成は、OC4Jのsystem-jazn-data.xml
ファイルに格納されます。
カスタム・ログイン・モジュールのサポートは、ファイルベース・プロバイダの拡張を介して実装されます。
OC4J 10.1.3.x実装より、セキュリティ・プロバイダの選択肢にOracle Access Managerが追加されました(第11章「Oracle Access Manager」を参照)。これは、集中的なセキュリティ管理を提供するエンタープライズ・クラスの認証、認可および監査ソリューションです。Oracle Access Managerには、様々なアプリケーション・サーバー、レガシー・アプリケーションおよびデータベースにわたる異機種間アプリケーション環境でアクセス制御、シングル・サインオン(Oracle Single Sign-Onとは別)、パーソナライズおよびユーザー・プロファイル管理を行うための機能が含まれています。Oracle Access Managerによりログイン・モジュールCoreIDLoginModule
が実装されます。
図3-1に、サポートされているセキュリティ・プロバイダがどのようにセキュリティ・プロバイダ・フレームワーク全体と対話するかを示します。
この項では、OC4Jにおける認証に関する次の項目について説明します。
OC4Jでは、Basic、Digest、フォームベースおよびClient-Certという標準的な認証方式がサポートされます。これら認証方式の概要は「Webアプリケーションの標準認証方式」に記載されています。また、認証方式は標準のweb.xml
ファイルに構成されています。詳細は、「認証方式(auth-method)の指定」を参照してください。
OC4Jでは、Oracle Application ServerとOC4Jに提供されている、各種シングル・サインオン認証方式もサポートされます。これら認証方式の概要は、以降の「Oracle Application Serverシングル・サインオン代替方法の概要」に記載されています。また、この項には詳細の参照先も記載されています。
Oracleは、次のログイン・モジュールを提供しています。
RealmLoginModule
。ファイルベース・プロバイダまたはOracle Identity Management用のデフォルト・ログイン・モジュールです(「RealmLoginModule」を参照)。
LDAPLoginModule
。LDAP外部プロバイダ用です(「外部LDAPプロバイダの構成と管理の概要」を参照)。
DBTableOraDataSourceLoginModule
。データベースのユーザー・リポジトリ用です。DataSourceUserManager
クラスの以前の機能と置き換えられました(「DBTableOraDataSourceLoginModule」を参照)。
CoreIDLoginModule
。Oracle Access Managerとともに使用するためのものです
OC4Jでは、ログイン・モジュール標準に準拠するカスタム・ログイン・モジュールもサポートされます。このことについては、第9章「ログイン・モジュール」全体で説明しています。
シングル・サインオンとは、ユーザーが一度ログインすると、OC4のインスタンスまたはクラスタ内で複数のWebアプリケーションにアクセスできる機能のことです。次のシングル・サインオン認証方式は、Oracleに固有です。これらの認証方式を使用するかどうかは、標準のweb.xml
ファイルではなく、Oracleのorion-application.xml
ファイルの構成で指定されます。
この認証方式の場合、ユーザーの認証にはOracleAS Single Sign-Onが使用されます。このためには、Oracle Identity Management、Oracle Internet DirectoryおよびOracleAS Single Sign-Onを含むOracle Application Serverインフラストラクチャが必要です。OracleAS Single Sign-Onの詳細は、第8章「Oracle Identity Management」を参照してください。
この認証方式の場合、ユーザーの認証にはOracle Access Managerシングル・サインオン(OracleAS Single Sign-Onとは異なる)が使用されます。このためには、Oracle Access Managerを含むインフラストラクチャが必要です。Oracle Access Manager SSOの詳細は、第11章「Oracle Access Manager」を参照してください。
OC4J 10.1.3.1実装の新機能であるJava SSOは、小規模なデプロイメント環境を希望するカスタマ向けの代替SSOソリューションであり、OC4Jにパッケージ化されています。Java SSOを適切に構成し、有効化すると、OC4Jアイデンティティ管理フレームワーク(概要は、「アイデンティティ管理フレームワークとAPIの一般的な使用の概要」を参照)のCUSTOM_AUTH
設定によってJava SSOが有効になります。Java SSOは、アイデンティティ管理フレームワークのデフォルト実装です。Java SSOはOC4Jコンテナ自体の一部としてパッケージ化されており、追加インフラストラクチャを必要としません。Java SSOの詳細は、第14章「OC4J Javaシングル・サインオン」を参照してください。
OracleAS JAAS Provider JAZNUserManager
によって、OC4Jの認証が調整されます。Webアプリケーションの場合、HTTPリクエストをターゲット・サーブレットにディスパッチする前に、JAZNUserManager
が認証対象ユーザーの情報(SSO用Oracle HTTP Server mod_osso
モジュールなどによって設定)をHTTPリクエスト・オブジェクトから取得し、JAASサブジェクトをOC4J内に設定します。
JAZNUserManager
は、後述するように委任モデルをサポートしますが、実質的にはこれはファイルペース・プロバイダにのみ適用されます。委任を使用すると、ユーザーまたはグループがアプリケーションレベルJAZNUserManager
インスタンスに見つからない場合、リクエストが親ユーザー・マネージャに委任されます。
次の制限事項および説明に特に注意してください。
OC4J環境の認可には次のような機能があります。詳細は、第5章「OC4Jでの認可」を参照してください。
java2.policy
ファイルの使用を含む)。
Subject
クラスのdoAs()
メソッドおよびdoAsPrivileged()
メソッドに関連するセキュリティ動作が決定されます。
RMIPermission
、AdminPermission
、RoleAdminPermission
、JAZNPermission
およびRealmPermission
)。
OC4Jでは、標準のディスクリプタに定義されたJ2EE論理ロール(単に「J2EEロール」と呼ばれます)をデプロイ・ロール(このドキュメントの以前のバージョンでは「JAASロール」と呼ばれていました)にマップし、特定のデプロイ・ロールのメンバーであるユーザーがリソースにアクセスできるようにします。このリソースには、関連付けられたJ2EEロールからアクセスできます。デプロイ・ロールはセキュリティ・プロバイダ内に定義されます。たとえば、ファイルベース・プロバイダの場合はsystem-jazn-data.xml
に、LDAPベース・プロバイダの場合はOracle Internet Directoryに、外部LDAPプロバイダの場合はカスタム・ログイン・モジュールまたはOracle Access Managerに定義されます。
セキュリティ・ロールの構成およびマッピングの基本的な手順は、次のとおりです。
web.xml
およびejb-jar.xml
)に指定します。この手順には、OC4J固有のものはありません。J2EEロールは、<security-role>
要素で宣言されます。
<security-role>
要素に宣言されたJ2EEロールにリンクするためのセキュリティ・ロール参照を指定します。これは、標準のデプロイメント・ディスクリプタ内で<security-role-ref>
要素を使用して行えます。このメカニズムを利用することで、アプリケーション・コードを変更せずに論理セキュリティ・ロールの定義を調整することができます。後は、希望するようにJ2EE論理ロールをアプリケーション・ロールにリンクするのみです。この手順には、OC4J固有のものはありません。
system-jazn-data.xml
ファイル、またはアプリケーション固有のjazn-data.xml
ファイルです。LDAPベース・プロバイダの場合、デプロイ・ロールはOracle Internet Directoryに定義されています。
orion-application.xml
、orion-ejb-jar.xml
またはorion-web.xml
の<security-role-mapping>
要素に反映します。OC4J 10.1.3.1実装には、新機能であるサード・パーティのアイデンティティ・リポジトリ用の汎用目的サポートが用意されています。このサポートには、次のような機能があります。
このフレームワークの使用方法、プログラム・インタフェース、構成機能などは、
第13章「交換可能なアイデンティティ管理フレームワーク」を参照してください。
Java SSOは代替のJavaシングル・サインオン・ソリューションであり、他のシングル・サインオン製品で必要な追加インフラストラクチャに依存しません。Java SSOは交換可能なアイデンティティ管理フレームワークを介して実装されます。Java SSOは、
第14章「OC4J Javaシングル・サインオン」を参照してください。
第13章で説明する交換可能なアイデンティティ管理フレームワークとの混同を避けるために、このアイデンティティ管理APIフレームワークを「ユーザーおよびロールAPI」または「ユーザーおよびロールAPIフレームワーク」と呼びます。これらAPIの使用方法は、第12章「ユーザーおよびロールAPIフレームワーク」を参照してください。
|
Copyright © 2003, 2008 Oracle Corporation. All Rights Reserved. |
|