![]() ![]() ![]() ![]() |
この章では、AquaLogic Data Services Platform リソースを保護する方法、特にこれらのリソースへのアクセスを制御する方法について説明します。
AquaLogic Data Services Platform では、提供する情報のセキュリティを確保するため、基底の WebLogic プラットフォームのセキュリティ機能を使用します。 特に、AquaLogic Data Services Platform では、ロールベースのセキュリティ ポリシーを使用して、データ リソースへのアクセスを制御します。
保護されたリソースの場合、要求側クライアントはそのリソースに適用可能なセキュリティ ポリシーの条件 (リソースへのアクセスが、型付きの Mediator API、アド ホック クエリ、または任意のアクセス インタフェースのどれを介して行われるのか) に合致している必要があります。 一般的に、条件はクライアントによって渡される資格で識別されるユーザのロールに基づきます。 しかし、時刻やユーザ ID など、その他の条件が使われることもあります。
AquaLogic Data Services Platform は、デプロイ対象のアーティファクトを、WebLogic のロールベースのセキュリティ ポリシー制御を通じて保護され得るリソースとして公開します。 AquaLogic Data Services Platform を使用すると、アプリケーションから個々のデータ要素まで、さまざまなレベルでセキュリティ ポリシーを適用できます。 この範囲の広さによって、著しい柔軟性が得られます。 たとえば、AquaLogic Data Services Platform 全体へのアクセスを制御することも、ある注文におけるクレジット カード番号要素のみへのアクセスを制御することも可能です。
AquaLogic Data Services Platform は保護されているリソースに対する要求を受け取ると、そのリソースの識別子を WebLogic に渡します。 すると、WebLogic はリソース識別子、ユーザ名などのコンテキスト情報を、認可プロバイダに渡します。 プロバイダは、WebLogic から渡された情報を基にリソースに適用されるポリシーを評価します。 評価の結果、リソースへのアクセスが許可またはブロックされます。
ユーザが要素レベルのポリシー条件を満たしていない場合、その要素は結果オブジェクトからは編集されて表示されません。
注意 : | デフォルトでは、WebLobic セキュリティは ATZ 認可プロバイダ モジュールを使用します。 ATZ は、ポリシーを LDAP システム内に置いています。 その他の認証機能では、ポリシー評価を実施するために必要な任意の外部リソースを使用できます。 |
AquaLogic Data Services Console で AquaLogic Data Services Platform のセキュリティを設定するには、次の作業のうち 1 つ以上を行う必要があります。
注意 : | AquaLogic Data Services Platform は、リソースに対するロールベースのセキュリティ ポリシーの適用を直接サポートすることに留意してください。 WebLogic Platform では、暗号ベースで転送レベルのセキュリティなど、ユーザによる実装に適用可能な拡張セキュリティ機能もサポートしています。 |
注意 : | WebLogic Server セキュリティについては、WebLogic Server ドキュメントの『WebLogic Server のセキュリティ』を参照してください。 |
また、AquaLogic Data Services Console のインタフェースそれ自体へのアクセス制御を適用することもできます。 たとえば、コンソールのメタデータ ブラウザ部分に対する開発者のアクセスを制限するなど、コンソールの特定機能へのユーザ アクセスを制御可能です。
保護可能なリソースとは、データ要素や関数など、セキュリティ ポリシーを適用可能な AquaLogic Data Services Platform アーティファクトです。 ロールベースのセキュリティで保護可能なリソースには、次のものがあります。
注意 : | カスタム認可プロバイダ (デフォルトの WebLogic 認可プロバイダ以外のもの) を使用する場合は、データ サービス用のポリシーもコンフィグレーションできます。 データ サービス ポリシーは、データ サービスの関数およびデータ要素のどれに対してでも適用されます。 カスタム認可プロバイダの使用の詳細については、「アクセス制御リソースのエクスポート」を参照してください。 |
個々のリソースの保護が完了すると、アプリケーションに対するセキュリティを有効化または無効化できます。 セキュリティ ポリシーは、継承されます。 つまり、アプリケーション レベルで有効化されたそのセキュリティは、アプリケーション内のすべての関数および要素に対して適用されます。 ある特定のリソースに、複数のポリシーが適用されている場合は、より特定的なポリシーが優先されます。 したがって、たとえば要素に対するポリシーが、データ サービスに対するポリシーに取って代わります。
AquaLogic Data Services Platform アーティファクトの階層構造は、次のとおりです。
図 6-2 に、AquaLogic Data Services Platform アプリケーションにおける保護可能なリソースを示します。
匿名アクセスの有効化は、特別なタイプのアプリケーション レベルの設定です。 これによって、デフォルトでアプリケーションへのアクセスを無効化 (さらに特定的なポリシーによって許可されている場合を除く) または有効化 (さらに特定的なポリシーによってブロックされている場合を除く) できます。 有効化されている場合はデフォルトで、認証されていないユーザも含めて、すべてのユーザがリソースにアクセスできます。 匿名アクセス オプションは、WebLogic 認可プロバイダでのみ有効です。
注意 : | AquaLogic Data Services Console 自体が、セキュリティ ポリシーで保護可能な管理リソースを構成しています。 |
セキュリティ ポリシーとは、保護されているリソースへアクセスするために満たさなければならない条件です。 ポリシー、要求されたリソース、およびユーザ コンテキストに照らしての条件評価の結果が false だった場合、リソースへのアクセスはブロックされ、関連データは返されません。
AquaLogic Data Services Console でコンフィグレーションするセキュリティ ポリシーは、デフォルトの WebLogic 認可プロバイダで使用することが意図されています。 別のプロバイダを使用する場合は、その別のプロバイダの機能を使用するポリシーを作成する必要があります。 詳細については、Administration Console オンライン ヘルプの以下のページで「[WebLogic 認可プロバイダ] -->[一般]」を参照してください。
http://edocs.beasys.co.jp/e-docs/wls/docs81/ConsoleHelp/security_defaultauthorizer_general.html
AquaLogic Data Services Console には、AquaLogic Data Services Platform セキュリティ ポリシーを作成するための WebLogic ポリシー エディタ インタフェースが組み込まれています。 ポリシー エディタは、データ要素や関数などの AquaLogic Data Services Platform アプリケーション リソースと、管理リソースの双方に使用できます。
WebLogic ポリシー エディタを使用してポリシーを作成するには、次の手順に従います。
図 6-3 に示す、表示されているポリシー条件のうち、任意のものを選択できます。
表示されるウィンドウは、以下のように、選択した条件によって変わります。
WebLogic セキュリティ ポリシーの詳細については、以下の WebLogic ドキュメントを参照してください。
AquaLogic Data Services Platform リソースは、アプリケーション、データ サービス関数、および要素によって保護できます。 要素レベルのセキュリティ ポリシーは、データ要素を使用するデータ サービス内のすべての関数に適用されます。
要素または関数レベルのセキュリティを使用するには、先にアプリケーションに対するアクセス制御チェックを指定する必要があります。 セキュリティ ポリシーは、アクセス制御チェックが有効になっていないと、ユーザに適用されません。
3 つの任意指定のチェック ボックスにより、アプリケーションのセキュリティを設定します (図 6-5)。 これらのチェック ボックスは以下のとおりです。
これらのオプションは、相互に排他的なものではありません。 一般に、デプロイされたアプリケーションにおいては、アクセス制御は常に有効にしておいたほうがよいでしょう。
アクセス制御チェックを有効にすると、WebLogic Server 認可プロバイダによるポリシーのチェックがアプリケーション全体に対してアクティブ化します。 アクセス制御チェックがアクティブ化されると、アプリケーション内のどのリソースへのアクセスも、そのリソースに対するポリシーによって決定されます。
警告 : | アクセス制御オプションが選択されていない場合、アプリケーション内のデータはまったく保護されていません。 |
デフォルトの認可プロバイダの場合、アクセス制御が有効であり、それをオーバーライドする特定のリソース ポリシーが定義されていなければ、アクセスは拒否されます。
アクセス制御ポリシーは、デフォルトの匿名アクセスを許可するオプションを選択することで、「逆転」できます。 また、別の言い方をするならば、匿名アクセスが有効化されている場合、アプリケーション リソースへのアクセスは、より特定的なポリシーによってアクセスがブロックされない限り、有効です。
注意 : | このオプションは、WebLogic Server セキュリティ フレームワーク内のデフォルトの認可プロバイダにのみ適用されます。 これは、アプリケーション リソースの共通の親リソースに適用されるポリシー ルールを定義することによって機能します。 |
注意 : | このオプションを選択しない場合は、個々のリソースに対して選択的にセキュリティ ポリシーをコンフィグレーションするか、または [アクセス制御の確認] オプションをクリアしてすべてのリソースに対するアクセス制御チェックを無効化する必要があります。 この 2 つ目の選択肢は、推奨されていません。 |
[JDBC メタデータ アクセス制御を有効化] オプションを選択することによって、SQL を介してアクセスされるメタデータを制御できます。 このオプションにより、JDBC ドライバ レベルでのアクセス権に基づき、AquaLogic Data Services Platform メタデータ アクセスがユーザに許可されます。 このオプションを選択すると、ユーザは確実に、使用することが認可されているテーブルおよびプロシージャのみをリストできます。
注意 : | アクセス ポリシーが時間に依存しているか、または変更されており、かつメタデータ アクセス制御オプションが有効化されていると、リストされたテーブルおよびプロシージャにアクセスできない場合があります。 |
AquaLogic Data Services Platform 対応の Workshop アプリケーションのアクセス ポリシーを設定するには、次の手順に従います。
警告 : | アクセス制御が選択されていない場合は、アプリケーションに対してセキュリティが有効化されていません。 |
データ サービスには通常、1 つ以上の読み取り関数、ナビゲーション関数、および単一の送信関数など、いくつかの関数があります。 送信関数により、バック エンド データ ソースを更新できます。 関数レベルのセキュリティ ポリシーによって制御できるものは次のとおりです。
警告 : | 必ず、ユーザが直接アクセスするデータ サービス リソースに対してのポリシーをコンフィグレーションしてください。 他のデータ サービスによって使用されるデータ サービスに対するセキュリティ ポリシーは、呼び出し側のデータ サービスに継承されません。 つまり、保護されたリソースを備えたデータ サービスが、他のデータ サービスを介してアクセスされた場合、呼び出し側に対してポリシー評価が行われることはありません。 |
警告 : | セキュリティの目的上、データ サービス関数は、名前とパラメータ数で識別されます。 つまり、パラメータ数を変更した場合は、関数のセキュリティ設定を再コンフィグレーションする必要があります。 |
関数のセキュリティ ポリシーを作成するには、次の手順に従います。
詳細については、「WebLogic ポリシー エディタを使用する」を参照してください。
注意 : | 関数レベルのセキュリティ ポリシーをユーザに適用するには、アプリケーションに対するアクセス制御を有効化する必要があります。 詳細については、「アプリケーションの保護」を参照してください。 |
図 6-6 に示されているその他のオプションについては、「データ要素のセキュリティ デフォルトの作成」で説明します。
要素レベルのセキュリティでは、データ サービスの戻り値の型内のデータ要素と、セキュリティ ポリシーを関連付けます。 ポリシー条件が満たされていない場合、対応するデータは、結果に含まれません。
要素レベルのセキュリティ ポリシーは、データ サービスのすべての関数に対して適用されますが、それ以外のデータ サービスにはまったく適用されません。 つまり、特定のデータ サービスに対して設定されたセキュリティ ポリシーは、継承されません。 同じデータが、ソースから、またはポリシーがコンフィグレーションされているデータ サービスに含まれるものとして、別のデータ サービスを構成する場合、そのポリシーはそれらのデータ サービスのユーザに対しては適用されません。
要素レベルのセキュリティをコンフィグレーションする際は、まず要素を保護可能なリソースとして識別し、その後、リソースに対してポリシーを設定します。
データ要素セキュリティ ポリシーをコンフィグレーションするには、次の手順に従います。
図 6-7 に示すように、データ型を表すツリーが表示されます。
セキュリティ ポリシーを作成するには、アクション アイコン () をクリックします。 カスタム セキュリティ条件を作成するには、セキュリティ XQuery 関数アイコン (
) をクリックします。
詳細については、「WebLogic ポリシー エディタを使用する」または「データ駆動型セキュリティ ポリシーの使用」を参照してください。
注意 : | データ要素レベルのセキュリティ ポリシーをユーザに適用するには、アプリケーションに対するアクセス制御を有効化する必要があります。 詳細については、「アプリケーションの保護」を参照してください。 |
セキュリティ デフォルト機能を使用すると、任意のデータ サービス フィールドの固定値 (または必須要素) を戻り値型で指定できます。 これらの値は、アクセス制御によってデータ サービスへのアクセスが制限されている場合に使用されます。
アクセス制限を受けている保護されたフィールドを表すには、3 つの方法があります。
これらの設定は、データ サービス セキュリティ ポリシー リスト (図 6-6) を通じて実施されます。 使用可能なオプションを、表 6-1 に示します。
|
セキュリティ XQuery 関数を使用すると、データ要素に適用可能なカスタム セキュリティ ポリシーを指定できます。 特に、セキュリティ XQuery 関数はデータ駆動型のポリシー (データ値に基づくポリシー) の作成に有用です。 たとえば、注文量が所定のしきい値を超えた場合に、ある要素へのアクセスをブロックするようにできます。
標準のセキュリティ ポリシーと、カスタム XQuery セキュリティ関数が両方とも、所定のデータ要素に適用されている場合、アクセスが許可されるためには、2 つのポリシーの評価結果が双方とも true でなければなりません (結果には論理 and が適用されます)。
セキュリティ XQuery 関数は、任意の要素リソースに適用可能です。 データ駆動型セキュリティ ポリシーを適用するには、次の手順に従います。
アプリケーション内のデータ要素に対して適用する 1 つまたは複数のセキュリティ XQuery 関数を作成できます。 関数は、[セキュリティの XQuery 関数] タブで定義します。
セキュリティ XQuery 関数を作成するには、次の手順に従います。
図 6-8 に示すように、既存の XQuery 関数が表示されます。
必要な数だけ関数を追加します。 関数は、関数の修飾名によって要素に適用されます。 関数に対して要求されるのは、ブール値を返すことと、名前がネームスペースによって修飾されることのみです。
注意 : | XQuery 関数作成の詳細については、AquaLogic Data Services Platform の『XQuery 開発者ガイド』を参照してください。 |
関数の戻り値により、アクセスを許可するかどうかが次のように決定されます。
以下に、簡単なセキュリティ XQuery 関数の例を示します。
declare namespace demo="demo";
declare namespace retailerType="urn:retailerType";
declare function demo:secureOrders($order as element(retailerType:ORDER_SUMMARY) ) as xs:boolean {
if (fn-bea:is-access-allowed("LimitAccess", "ld:DataServices/RTLServices/OrderSummaryView.ds")) then
fn:true()
else if ($order/TotalOrderAmount lt (fn-bea:get-property("total_order_amount", "1000000") cast as xs:decimal))
then
fn:true()
else
fn:false()
};
注意 : | セキュリティ XQuery 関数が有効化するには、データ要素に適用されている必要があります。 詳細については、「セキュリティ XQuery 関数の適用」を参照してください。 |
関数では、BEA 拡張 XQuery 関数 is-access-allowed()
を使用しています。 この関数は、現在の要求コンテキストと関連付けられたユーザが、要素名およびリソース識別子によって示される、指定リソースにアクセスできるかどうかをテストします。
AquaLogic Data Services Platform では、セキュリティ目的上、さらに以下の便利な関数を用意しています。
セキュリティ XQuery 関数を使用して、データ要素へのアクセスを制御できます。 「セキュリティ XQuery 関数の作成」で説明したようにセキュリティ XQuery 関数を定義後、有効にするには、データ要素に適用する必要があります。
セキュリティ XQuery 関数を適用するには、次の手順に従います。
図 6-9 に示すように、[セキュリティ ポリシー] ページが表示されます。
図 6-10 では、セキュリティ関数の修飾名を追加できるダイアログが表示されています。
また、[削除] ボタンおよび [追加] ボタンをそれぞれクリックすることで、関数を削除したり、さらに関数を追加したりすることもできます。
WebLogic Administration Console と同様に、AquaLogic Data Services Console はそれ自体が、セキュリティ ポリシーを使用してアクセスを制御可能な、管理リソースです。 ポリシーにより、あるページへのユーザのアクセスがブロックされた場合、そのページはコンソールでは省略されます。
セキュリティ ポリシーは、ページの機能的なカテゴリによってアクセスを制御します。 ページは、次の機能的カテゴリに分けられます。
セキュリティ ポリシー作成の詳細については、「セキュリティ ポリシーについて」を参照してください。
認可とは、ユーザとリソースの対話を制限して、整合性、機密性、および可用性を確保するプロセスです。 WebLogic では、アプリケーション、データ サービス、関数などのデプロイ済み AquaLogic Data Services Platform アーティファクトの識別に、リソース識別子を使用します。 この識別子は、要求されたリソースについてコンフィグレーションされる任意のセキュリティ ポリシーに、クライアント要求を関連付けるのに使用されます。
リソース識別子は、デフォルトの WebLogic 認可プロバイダおよび AquaLogic Data Services Console を使用してポリシーをコンフィグレーションしている場合には、自動的に管理されます。 特に、AquaLogic Data Services Platform アプリケーションおよびそれに属するデータ サービスとデータ サービス関数については、リソース識別子がすでに存在しています。 加えて、保護する要素をコンソールで選択すると、その要素の識別子が生成されます。
ただし、カスタム認可機能を使用している場合は、ユーザがデプロイメントのリソース識別子を知っていて、その別の認可モジュールが予期する形式で、リソースのためのポリシーをコンフィグレーションする必要があります。 つまり、保護する要素リソースを識別する必要があるということです。
注意 : | WebLogic セキュリティ ドキュメントで、WebLogic に対して別のセキュリティ認証機能を接続する方法の詳細を説明しています。 詳細については、Administration Console オンライン ヘルプの以下のページで「[WebLogic 認可プロバイダ] -->[一般]」を参照してください。 |
AquaLogic Data Services Console からアクセス制御リソースをエクスポートすることで、リソース識別子のリストを参照できます。
<ld type="app"><app>RTLApp</app></ld>
<ld type="service><app>RTLApp</app><ds>ld:DataServices/ElectronicsWS/
getProductList.ds</ds></ld>
<ld type="function"><app>RTLApp</app><ds>ld:DataServices/ElectronicsWS/
getProductList.ds</ds><res>{ld:DataServices/ElectronicsWS/
getProductList}getProductList:1</res></ld>
<ld type="submit"><app>RTLApp</app><ds>ld:DataServices/ElectronicsWS/
getProductList.ds</ds><res>ld:submit</res></ld>
<ld type="service><app>RTLApp</app><ds>ld:DataServices/RTLServices/
OrderSummaryView.ds</ds></ld>
<ld type="custom"><app>RTLApp</app><ds>ld:DataServices/RTLServices/
OrderSummaryView.ds</ds><res>ORDER_SUMMARY/ORDER_SUMMARY/
LINE_ITEM</res></ld>
リソース識別子のフォーマットを、図 6-11 に示します。
これらは、AquaLogic Data Services Console の [セキュリティ保護された要素] タブで要素を選択すると、生成されます。
![]() ![]() ![]() |