Oracle® Fusion Middleware Oracle Application Development Frameworkの理解 12c (12.2.1.2.0) E82914-01 |
|
![]() 前へ |
![]() 次へ |
この章の内容は次のとおりです。
アプリケーション・セキュリティ全体での確認プロセスを簡易化するために、Oracle Application Development Framework (Oracle ADF)にはADFセキュリティのフレームワークが用意されています。ADFセキュリティはOracle Platform Security Services (OPSS)アーキテクチャ上に構築され、OPSSアーキテクチャにはJava Authentication and Authorization Service (JAAS)およびJava EEコンテナ管理のセキュリティが組み込まれます。
図8-1に示すように、ADFセキュリティには、ADF Faces、ADF Controller、ADFモデル、ADFビジネス・コンポーネントなど、ADFテクノロジ・スタック内のその他の一連のコンポーネントが含まれます。
図8-1 ADFセキュリティのADFアーキテクチャ
OPSSは基礎となるプラットフォームであり、Oracle Fusion Middleware (WebLogic ServerやOracle ADFアプリケーションなど)に対してセキュリティを提供します。OPSSは、サード・パーティのアプリケーション・サーバーに移植できるように設計されているので、OPSSを使用すれば1つのセキュリティ・フレームワークでOracle環境とサード・パーティ環境の両方に対応できます。これにより、アプリケーションの開発、管理およびメンテナンスに要する費用を削減できます。
図8-2は概念上、ADFセキュリティのフレームワークのアーキテクチャを説明しています。最上位レイヤーは実行中のADFアプリケーションで構成されています。その下には、OPSS APIを実装し、アプリケーションからリソースの権限チェックをプログラム上で実行できるADFセキュリティ・レイヤーがあります。OPSS APIレイヤーは、認証、認可、資格証明ストア・フレームワーク・サービスのプロバイダにアクセスするための抽象化レイヤーとして機能します。
図8-2 ADFセキュリティ・アーキテクチャ
ADFセキュリティには次のコアな利点が用意されています。
ADFのセキュリティ意識の高いリソースに対する宣言的で承認ベースの保護。これには、ADFバインド・タスク・フロー、ADFバインディングを使用するトップレベルのWebページ、ADFエンティティ・オブジェクトおよびそれらの属性で定義された属性などがあります。
動的ユーザー認証。ADFセキュリティを使用する場合、まだ認証されていないユーザーがanonymous-role
ロールを付与されていないページにアクセスしようとすると、ユーザーにはログインのプロンプトが動的に表示されます。アプリケーションのweb.xml
ファイルで、セキュリティ制約がADF認証サーブレットに適用されるため、保護されたリソースにアクセスできるようになる前に、Java EE Webコンテナを介してログインがトリガーされます。ユーザーが正常にログインした後、そのユーザーがリクエストしたページの表示アクセス権を付与されているかどうかを確認するために、ADF認証サーブレットが起動します。
Webページ内での権限チェック。実行時には、ADFリソースに対して定義したセキュリティ・ポリシーが標準のJAAS権限認証を使用して施行され、ユーザーのアクセス権が決定されます。アプリケーションで必要とされる場合、式言語(EL)を使用してWebページ内でランタイム権限チェックを実行し、ユーザーに対して表示する必要がないコンポーネントを非表示にできます。
アプリケーションと各種セキュリティ・プロバイダの間に抽象化レイヤーを用意することで、アプリケーションの保護を簡易化します。アプリケーションから保護レイヤーへのコールは、標準ベースのAPIを介して実行できるため、開発者がセキュリティ・プロバイダの実装の詳細を処理する必要はありません。
ADFセキュリティ・フレームワークは、OPSSと、JDeveloperにより追加されるデザインタイムの機能(保護アプリケーションの作成を容易にする)とのランタイム統合で構成されています。この項では、組み込まれているOPSS機能やその他のADF固有の機能なども含めて、ADFセキュリティの主要な面について概説します。
認証は、ユーザーの資格証明をログイン画面を通して実行するような、検証プロセスです。ADFセキュリティには認証サーブレットが用意されているため、(OPSSにより)認証をJava EE Webコンテナに委任し、ユーザーに対してログインのプロンプト画面を動的に表示できます。
認可は、認証されたユーザーのアクセス権と許可を判断するプロセスです。ADFセキュリティ(OPSSによる)では、きめの細かい権限ベースの認可モデルが提供され、リソース(ADFタスク・フローなど)をJAASベースのcheckPermission
コールにより保護します。OPSSを使用すると、さらにきめの粗い認可モデルを提供している、Java EEのコンテナ管理セキュリティも使用できるようになります。
ユーザー(またはロール)のアクセス権限を特定のリソースに付与します。セキュリティ・ポリシーとは、特定のリソースに付与するアクセス権です。タスク・フローの入力やWebページの表示を行うユーザー権限を制御するのは、最終的にはADFリソースにおけるセキュリティ・ポリシーになります。
管理を簡単にするために、セキュリティ・グループ内の複数のリソースを集約する権限を作成することも可能です。これにより、複数のリソースに対するセキュリティ・ポリシーを1か所で設定できるようになります。
ADFセキュリティ・フレームワークに備わっている権限クラスにより、ADFリソースを保護できます。そのような権限クラスが存在するリソースをセキュリティ認識リソースと言います。ADFセキュリティ認識リソースに関連付けられたWebページは、そのリソースにアクセス権を付与するセキュリティ・ポリシーを明示的に設定したる場合を除いて、デフォルトで保護されます。
ADFセキュリティ認識リソースのリストの種類は、「ADFセキュリティ認識リソース」を参照してください。
この項では、ADFセキュリティ・フレームワークの中核をなす機能と物理的アーティファクトについて概説します。
あるアプリケーション向けの、OPSSとのデザインタイム統合は、複数のメタデータ・ファイルにより宣言的に構成されます。この構成は、JDeveloperのセキュリティ・ウィザードとビジュアル・エディタを使用すると自動的に行われます。影響を受ける主要なファイルは、次のとおりです。
ユーザー・インタフェース・プロジェクトのweb.xml
ファイル。次の事項を指定します。
JpsFilter
。これにより、OPSSポリシー・プロバイダを設定します。
oracle.adf.share.security.authentication.AuthenticationServlet
サーブレットに対するWebリソース、およびユーザーがアプリケーションに最初にアクセスしてログインし、ユーザー認証を動的にトリガーするために適切なセキュリティ制約を設定する際に必要なマッピング。
ログインの構成に対する認証メソッド。
valid-users
ロールなど、必須セキュリティ・ロール。動的認証を有効化するセキュリティ制約をトリガーするために使用されます。
アプリケーション・ワークスペースのadf-config.xml
ファイル。このファイルでは、JAASセキュリティ・コンテキストが設定され、ADFセキュリティのセキュリティ・ポリシーの使用が有効化されています。
アプリケーション・ワークスペースのjps-config.xml
ファイル。このファイルには、OPSSセキュリティ・プラットフォームの構成がデザインタイムに保持されます。(このファイルはアプリケーションEARファイルの一部としてデプロイできますが、ランタイムには使用されません。そのかわり、サーバー・インスタンスのドメインに保存されたファイルのバージョンが使用されます。)
アプリケーションのjazn-data.xml
ファイル。これは、デザインタイムにアプリケーションのアイデンティティおよびポリシー・ストアとして機能します。アプリケーションをOracle WebLogic Serverにデプロイすると、デフォルトで、サーバーはjazn-data.xml
内のユーザーとグループをサーバーのアイデンティティ・ストアにコピーし、ポリシーをサーバーのポリシー・ストア(統合WebLogic Serverにあるsystem-jazn-data.xml
)にマージします。
本番サーバーにデプロイする前に、jazn-data.xml
ファイルに作成するすべてのユーザーとグループを削除して、悪意のあるユーザーがそれらの資格証明を使用してアプリケーションへのアクセス権限を取得するリスクを避けます。
アプリケーションのweblogic.xml
ファイル。このファイルでは、valid-users
セキュリティ・ロールがusers
(すべてのユーザーに対するWebLogic Serverの暗黙的なロール)にマップされています。
図8-3は、JDeveloperで作成および構成されるセキュリティ・アーティファクトと、それらをOracle WebLogic Serverのランタイム・セキュリティ・アーキテクチャへマップする方法を示しています。
図8-3 ADFセキュリティの構成とデプロイメント
ADFアプリケーション内の次のタイプのリソースは、セキュリティ認識タイプであるため、個々のセキュリティ・ポリシーを使用して構成されます。
ADFバインド・タスク・フローセキュリティ・ポリシーを設定して、バインド・タスク・フローのエントリ・ポイントを保護し、それによりそのフローに含まれるページへのユーザーのアクセスが制御されます。セキュリティ・ポリシーをすべてのバインド・タスク・フローに設定するようお薦めします。
バインド・タスク・フローによって追加されるページに直接アクセスできないようにするために、それらに関連付けられたページ定義ファイルを介して追加されたページにアクセス権限を付与しないでください。バインド・タスク・フローのコンテキスト内でページに追加のセキュリティが必要な場合は、それらのページをサブタスク・フローに含めて、このネストされたタスク・フローに対する権限の定義を追加します。
ADFページ定義ファイル。Webページにバインディングを追加し、個々のページにマップします。ページ定義ファイルのページがバインド・タスク・フローに含まれていない場合、ページ定義ファイルにセキュリティ・ポリシーを設定する必要があります。対応するページ定義ファイルが含まれないページを保護する場合には、そのページに空のページ定義ファイルを作成できます。
ADFビジネス・コンポーネント・エンティティ・オブジェクトとエンティティ・オブジェクトの属性。それらのエンティティ・オブジェクトは、データの行を参照し、ユーザー・インタフェースの表示のコレクションを定義できます。エンティティ・オブジェクトがそのデータ・ソース上で開始する、読取り、更新および削除の操作に権限を設定できます。
エンティティ・オブジェクトに対して認可を有効化すると、そのエンティティ・オブジェクトで定義されたすべての行が権限により保護されます。このレベルの粒度では、表コンポーネントがWebページにレンダリングされるとき、ユーザーのアクセス権に応じて、すべてのデータが表示されるかデータがまったく表示されないかのどちらかになります。コレクション全体を保護するかわりに、個々の属性ごとにセキュリティ・ポリシーを提供できます。
ADFセキュリティの認可を有効化すると、そのアプリケーションとユーザーの相互作用はすべて、oracle.adf.share.security.authentication.AuthenticationServlet
サーブレットで仲介されます。このサーブレットでは、アプリケーションのいずれかの保護されたリソースにアクセスできるようにするには、ユーザーが正常にログインしている必要があります。それは、ユーザー・インタフェース・プロジェクトのweb.xml
ファイルでリソースとして指定され、フィルタ・マッピングとセキュリティ制約タグによって参照されています。
認証されたユーザーに関する情報は、Javaコード、Groovy式、またはELを介したユーザー・インタフェース・コンポーネントを使用して、ADFセキュリティ・コンテキストへのコールによりアクセスできます。ユーザーが認証されているかどうか、特定のリソースへの権限を付与されているかどうかなどを判断できます。次にこの情報を使用して、どのコンテンツとコントロールをそのユーザーに表示するかを判断できます。セキュリティ・コンテキストは、JavaでSecurityContext
オブジェクト、ELでsecurityContext
ネームスペース、およびGroovyでSecurityContext
オブジェクトによって表されます。
ADFセキュリティのフレームワークの使用方法は、次の基本的な手順で構成されます。
JDeveloperで、「ADFセキュリティの構成」ウィザードを実行して、アプリケーションのセキュリティを構成します。この手順により、セキュリティ・モデルの設定、Webプロジェクトの認証タイプの構成、test-allロールに対する表示アクセスの付与、正常に認証されたユーザーに対するようこそページの設定が可能になります。
このウィザードを開発サイクルの早い時期に実行して、繰り返しセキュリティをテストし、最善のセキュリティを取り入れる設計上の決定を実践できるようにすることをお薦めします。
1つまたは複数のアプリケーション・ロールを作成します。
作成するアプリケーション・ロールはアプリケーションに固有であり、これを使用すると、同じレベルのアクセス権を一連のユーザー(またはメンバー・ユーザー)に付与できます。テスト・フェーズではユーザーをいくつか作成し、作成したアプリケーション・ロールのメンバーとして追加します。
セキュリティ・ポリシーを設定して任意のADFセキュリティ認識リソース(バインド・タスク・フローなど)を、1つまたは複数のアプリケーション・ロール(作成済のロールで、アクセス権限を設定してある)に関連付けます。
各種のロールにテスト・ユーザーを作成します。
JDeveloperでアプリケーションを実行し、作成したテスト・ユーザーを使用して様々なリソースへのアクセスをテストします。
アプリケーションをデプロイする前に、アプリケーションをテストするために追加したポリシー付与とユーザーを削除します。
完成したポリシー・ストアと資格証明ストアをターゲット・サーバーに移行します。アプリケーションがOracle WebLogic Serverにデプロイされると、アプリケーションのポリシーと資格証明が自動的にドメイン・ストアに移行されます。
ADFセキュリティ・フレームワークとOPSSの使用の詳細は、次を参照してください。
『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』の「Fusion WebアプリケーションでのADFセキュリティの有効化」
次のリソースでは、OPSSについて詳しく説明します。
『Oracle Fusion Middleware Oracle WebLogic Serverセキュリティの理解』の「概要とロードマップ」
『Oracle Fusion Middleware Oracle WebLogic Serverセキュティの管理』の「概要とロードマップ」
『Oracle Fusion Middleware Oracle WebLogic Serverロールおよびポリシーによるリソースの保護』の「概要とロードマップ」
OTNのOracle Platform Security Servicesのページ: http://www.oracle.com/technetwork/middleware/id-mgmt/index-100381.html