プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle Entitlements Server開発者ガイド
11gリリース2 (11.1.2.3)
E67355-01
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

5 ポリシー管理の委任

システム管理権限およびポリシー管理権限を、ある管理者から別の管理者に委任するには、制限付きの権限を持つ管理ロールを作成するか、既存の管理ロールをユーザーに付与します。管理の委任は、サブジェクト(ロールが付与される人)、リソース(ロールが関連するオブジェクト)およびロールが制御(表示、管理)するリソースへのアクションの定義で構成されます。この章では、ポリシーおよびシステム管理タスクを委任する方法について説明します。

この章には次の項目があります。

5.1 管理の委任

管理とは、ある作業を行うユーザーに1つ以上の認可された権限が付与される場合を指します。委任とは、そのユーザーが自分に付与された権限を別のユーザーに引き渡す機能です。これらを組み合せて、管理の委任を、あるユーザーから別のユーザーへの認可された権限の移行として定義できます。Oracle Entitlements Serverでは、ポリシー・オブジェクトおよびエンティティでのタスクを実行する資格を持つ管理者は、この権限を他の人に譲渡できます。

Oracle Entitlements Serverでの委任された管理は、ロールベース・アクセス制御(RBAC)のアプローチを使用してモデル化されます。ユーザーは、このアプローチによって、アプリケーション、ポリシー・ドメインおよびその他のロールを使用するポリシー・オブジェクトへ管理を譲渡できます。RBACの中核となる概念は、権限(アクションを実行する許可)と、アクションを実行可能な権限としてモデル化できるオブジェクトを組み合せることです。次に、これらの権限をロールに割り当てます。ユーザーをロールに割り当てると、そのユーザーに適切な権限が付与されます。

図5-1 管理ロール・モデル

図5-1の説明が続きます
「図5-1 管理ロール・モデル」の説明

図5-1のとおり、管理ロールはポリシー関連オブジェクトの特定の操作に対して作成されます。ジョブ専用の操作を実行する権限は、そのロールで定義されます。ユーザーは、ロールに割り当てられ、その割当ての間にジョブを実行する権限を取得します。ユーザーは直接権限に割り当てられないため、個々のユーザー権限の管理は、適切なロールを適切なユーザーに割り当てることになります。管理ロールは、ポリシー・オブジェクトの管理が可能なユーザーを決定するために使用します。

5.2 範囲と委任の粒度の管理

委任管理は、リソースおよびポリシー・オブジェクトの管理をある人から別の人に譲渡することに関するすべてです。委任の範囲(または委任によって適用されるオブジェクトの範囲)は、レベルで定義されます。管理の粒度は、各範囲で管理されるオブジェクトのタイプを定義します。各範囲が作成されると、デフォルトの管理ロールが自動的に作成されます。追加の管理ロールは後で作成できます。最高から最低まで、範囲および適用可能な粒度は、次のとおりです。

  • 最高レベルのシステム管理者には、システムレベルのリソースおよび最上位のポリシー・ストア範囲でポリシー関連オブジェクトを管理する権限があります。システム・リソースには、管理者ロールとシステム構成およびバインディングが含まれます。ポリシー・ストア・レベルのオブジェクトはApplicationPolicyオブジェクトとグローバル・オブジェクトです。


    注意:

    システム管理者は、すべてのApplicationPolicyオブジェクトおよび子のPolicyDomainオブジェクトを含む、ポリシー・ストア全体に対する権限を持っていますが、構成、ApplicationPolicyオブジェクトおよび2つの間のバインディングを管理することを主な目的としています。

  • アプリケーション・ポリシーの管理者は、割当て先のApplicationPolicyオブジェクト内のすべてのオブジェクトを管理する権限を持っています。作成されたアプリケーション・ポリシーごとに、アプリケーション・ポリシー管理者が1つ作成されます。これらは、ポリシー・ドメイン・オブジェクトおよびその子(関数、属性、アプリケーション・ロール、リソース・タイプなど)を含む、アプリケーション・ポリシー内のポリシー・オブジェクトの管理を委任することを主な目的としています。

  • ポリシー・ドメイン管理者は、割当て先のポリシー・ドメイン・オブジェクト内のすべての子オブジェクトを管理する権限を持っています。作成される各ポリシー・ドメインに、1つのポリシー・ドメイン管理者が生成されます。これらは、主に、該当するポリシー・ドメイン内にポリシー、権限セットおよびリソースを定義することを目的としています。


注意:

ApplicationPolicyオブジェクトの詳細は、第1章「ポリシー・モデルの使用方法」を参照してください。PolicyDomainオブジェクトの詳細は、5.7項「ポリシー・ドメインによる委任」を参照してください。

5.3 権限の割当て

管理者ロールは、管理および表示アクションを持つ権限を割り当てることができます。これらのアクションの権限は次のとおりです。

  • 管理権限を持つ管理者ロールは、割り当てられた管理範囲内のオブジェクト(子のオブジェクトを含む)ですべてのメソッドをコールできます。たとえば、管理権限を持つアプリケーション・ポリシー管理者は、アプリケーション・ポリシーとそのポリシー・ドメイン・オブジェクトの両方のオブジェクトで、すべてのメソッドをコールできます。管理権限を持つ管理者は、親の範囲にある必要なオブジェクトを表示することもできます。たとえば、ポリシー・ドメインの管理権限を持つ管理者は、親のアプリケーション・ポリシーにあるすべてのリソース・タイプ、関数および属性を参照できます。これは、ポリシーの定義の際にこれらのオブジェクトを使用するためです。

  • 表示権限を持つ管理者は、割り当てられた管理範囲内のオブジェクト(子のオブジェクトを含む)で、getメソッドのみをコールできます。たとえば、表示権限を持つグローバル管理者は、アプリケーション・ポリシーとそのポリシー・ドメイン・オブジェクトの両方で、すべてのオブジェクトを表示できます。

5.4 デフォルトの管理ロールの使用方法

インストール後、ポリシー・ストアには、ポリシー・ストア・レベルでの完全な表示および管理権限を持つSystemAdminというデフォルトの管理ロールが含まれています。この管理ロールとその他のデフォルトの管理ロールを次のリストで説明します。これらのデフォルトの管理ロールのメンバーのみが、他の管理ロールを作成および管理できます。デフォルトの管理ロールは、削除したり、権限を変更することはできません。

  • SystemAdmin — これは、デフォルトのポリシー・ストア管理者でポリシー・ストア全体の管理権限を持ちます。このロールは、WebLogic Server Administratorsグループに割り当てられ、すべてのアプリケーション・ポリシー・オブジェクトおよびポリシー・ドメイン・オブジェクトでポリシーを管理するために必要な権限を持ちます。

  • ApplicationPolicyAdmin — この名前のロールは、新規のアプリケーション・ポリシー・オブジェクトごとに自動的に作成されます。アプリケーション・ポリシーとネストされたポリシー・ドメイン・オブジェクトでの管理権限を持ちます。

  • PolicyDomainAdmin — この名前のロールは、新規のポリシー・ドメイン・オブジェクトごとに自動的に作成されます。ポリシー・ドメインとネストされたポリシー・ドメイン・オブジェクトでの管理権限を持ちます。また、親のアプリケーション・ポリシー内のオブジェクトに対する表示権限を持ちます。

5.5 管理ロールの作成

管理ロールは、システム管理権限を委任するために使用します。管理ロールは、異なる範囲でデータを管理する目的で作成できます。たとえば、管理者ロールを適切なレベルで作成し、ユーザーまたはグループにこのロールを割り当てることによって、アプリケーション・ポリシーおよびポリシー・ドメインの管理者を定義できます。


注意:

管理者ロールは、システム管理権限を範囲指定によって委任し、階層構造を持ちません。詳細は、5.2項「範囲と委任の粒度の管理」を参照してください。

管理ロールの作成には、いくつかの手順があります。特定の管理リソースに表示または管理権限を付与するには、次の詳細な手順を使用します。

  1. 5.5.1項「管理ロールの作成」の説明に従って、管理ロールを作成するオブジェクトと、AdminManagerのインスタンスを取得します。

  2. 5.5.2項「管理ロールへのアクションとリソース(権限)の割当て」の説明に従って、リソースと適切なアクションを定義します。

  3. 5.5.3項「管理ロールへのプリンシパルの割当て」の説明に従って、ユーザー(プリンシパル)を割り当てます。

5.5.4項「プリンシパルの管理リソースの取得」では、プリンシパルを割り当て済の管理ロールを取得する方法について説明しています。

5.5.1 管理ロールの作成

管理ロールを作成するには、目的の管理範囲(ポリシー・ストア、管理ポリシーまたはポリシー・ドメイン)を包含するオブジェクトを取得し、getAdminManager()メソッドを使用してAdminManagerのインスタンスを取得し、さらにcreateAdminRole()メソッドを使用してadminRoleロールを作成します。次のコードは、TRADINGアプリケーション・ポリシーに対してAppAdminという名前の管理者を作成しています。

//Get the Application Policy and AdminManager 
ApplicationPolicy app = ps.getApplicationPolicy("TRADING"); 
AdminManager appAdminManager = app.getAdminManager(); 
AdminRoleEntry adminRole = appAdminManager.createAdminRole
 ("AppAdmin", "AppAdmin Role", "Role for application admins.");

createAdminRole()パラメータの値は次のように定義されています。

  • 名前 - AppAdminは管理ロールの名前です。

  • 表示名 - AppAdmin Roleは管理ロールのオプションの判読可能名です。

  • 説明 - Role for application admins.は管理ロールのオプションの説明です。

5.5.2 管理ロールへのアクションとリソース(権限)の割当て

権限は、リソースを管理するArrayListを作成することで管理ロールへ割り当てて、許可されたアクションを追加します(BasicAdminResourceActionEntryを使用)。次のコードでは、前に作成したAppAdminロールに、TRADINGアプリケーションのリソース・タイプとアプリケーション・ロールの管理権限を割り当てています。

//Construct the permission to be granted 
List<AdminResourceActionEntry> adminResourceActions = new ArrayList 
 <AdminResourceActionEntry>(); 

//Add operations (Manage) and objects (resources) to the permission
adminResourceActions.add(new BasicAdminResourceActionEntry 
 (AdminResource.RESOURCE_TYPE, Action.MANAGE)); 
adminResourceActions.add(new BasicAdminResourceActionEntry 
 (AdminResource.APPLICATION_ROLE, Action.MANAGE)); 

//Grant AppAdmin the rights 
admManager.grant(adminRole, adminResourceActions); 

権限をロールから削除するには、grant()メソッドではなくrevoke()メソッドを使用します。表5-1で、ポリシー・ストア、アプリケーション・ポリシーおよびポリシー・ドメインに対して許可されたリソース名のオプションを説明します。

表5-1 リソース名のオプション

名前 説明

ADMIN_POLICY

管理ポリシーを管理できます。

ADMIN_ROLE

管理ロールのメンバーシップと権限を管理できます。

APPLICATION_ POLICY

アプリケーション・ポリシー・オブジェクトを管理できます。

APPLICATION_ ROLE

アプリケーション・ロールを管理できます。

CONFIGURATION

セキュリティ・モジュールを管理できます。

DISTRIBUTE_ APPLICATION_ POLICY

管理者にポリシー配布の開始を許可します。

ENROLL

管理者にセキュリティ・モジュール・インスタンスの登録を許可します。

EXTENSION

関数と属性の管理を許可します。

PERMISSION_SET

権限セットを管理できます。

POLICY

ポリシーを管理できます。

RESOURCE_TYPE

リソース・タイプを管理できます。

RESOURCE

リソースを管理できます。

ROLE_CATEGORY

ロール・カテゴリを管理できます。

SUB_POLICY_DOMAIN

ポリシー・ドメイン・オブジェクトを管理できます。


5.5.3 管理ロールへのプリンシパルの割当て

アプリケーション・ロールに1つ以上のプリンシパルを割り当てるには、2番目のArrayListを該当するユーザー・エントリによって作成し、リストをgrantAdminRole()メソッドへ渡します。次のコードでは、前に作成したadminRoleロールをユーザーのSMITHに付与しています。

//Construct the list of users to be granted 
List<PrincipalEntry> principals = new ArrayList<PrincipalEntry>(); 
principals.add(new BasicPrincipalEntry
  ("weblogic.security.principal.WLSUserImpl", "SMITH"));

//Grant the users in the list the role 
adminManager.grantAdminRole(adminRole, principals);

プリンシパルをロールから削除するには、revokeAdminRole()メソッドを使用します。

5.5.4 プリンシパルの管理リソースの取得

管理ユーザーがアクセス可能なリソースを指定するには、該当する範囲(ポリシー・ストア、アプリケーション・ポリシーまたはポリシー・ドメイン)でAdminManagerのインスタンスを取得し、getAdminRole()メソッドと管理ロールの名前を使用して管理者を取得します。次にgetGrantedAdminResources()メソッドを呼び出すことで、管理者に適用可能なすべてのAdminResourceActionEntryオブジェクトが返されます。(AdminResourceActionEntryオブジェクトは、管理者が管理可能なエンティティと、そのエンティティに実行可能なアクションをペアにします。)

5.6 管理ロールの管理

5.5項「管理ロールの作成」では、AdminRoleEntryオブジェクトの作成方法について説明しました。管理ロールは、目的の範囲内からAdminManagerのインスタンスを取得することにより、すべての範囲レベル(PolicyStoreApplicationPolicyおよびPolicyDomainを含む)で作成できます。また、AdminManagerのインスタンスを取得することで、これらの任意の範囲からAdminRoleEntryオブジェクトを削除および取得できます。例5-1は、ApplicationPolicyAdminManagerを取得することによる削除のアクションを示しています。

例5-1 deleteAdminRole()メソッドの使用方法

//Get the Application Policy and AdminManager 
ApplicationPolicy app = ps.getApplicationPolicy("TRADING"); 
AdminManager appAdminManager = app.getAdminManager(); 

//delete the Administration Role
AdminRoleEntry adminRole = appAdminManager.deleteAdminRole
 ("AppAdmin");

TRADINGは、AdminRoleEntryが作成されたApplicationPolicyの名前です。AppAdminは、削除するロールの固有の識別子です。

getAdminRole()メソッドはAdminRoleEntryを取得するために使用でき、名前によって取得することもできます。例5-2に、これを示します。

例5-2 getAdminRole()メソッドの使用方法

//Get the Application Policy and AdminManager 
ApplicationPolicy app = ps.getApplicationPolicy("TRADING"); 
AdminManager appAdminManager = app.getAdminManager(); 

//Get the Administration Role
AdminRoleEntry adminRole = appAdminManager.getAdminRole
 ("AppAdmin");

getAdminRoles()メソッドをコールし、ResourceTypeSearchQueryクラスを使用して検索条件を渡すことで多数のAdminRoleEntryオブジェクトを取得できます。さらに、AdminManagerインタフェースには、次の操作を行うためのメソッドがあります。

  • PrincipalEntryオブジェクトを管理ロール・メンバーとして追加または削除

  • 名前付き管理ロールを付与されたPrincipalEntryオブジェクトのリストを返す

  • 名前付き管理ロールへのアクションおよびリソース(AdminResourceActionEntry)の付与または取消

  • 現在の管理者に定義されたアクションとリソース(AdminResourceActionEntry)の取得

  • 管理ロールの変更

5.7 ポリシー・ドメインの委任

ポリシー・ドメインには、完了したポリシー定義のコンポーネントが含まれます。これは、ターゲット・リソース(リソース・タイプのインスタンス)、権限セット(リソースで実行できるアクション)、およびポリシー(コントロールをアセンブルするルールおよび影響を及ぼすプリンシパル)を合せたものです。ポリシー・ドメインは、管理を委任する目的で作成します。このドメインを1つ(以上)作成することで、ポリシー管理を別の管理者に委任できます。


注意:

ポリシー・ドメインの作成はオプションであるため、リソース権限セットおよびポリシーを作成可能なデフォルトのポリシー・ドメインとしてApplicationPolicyオブジェクトを指定できます。以降のポリシー・ドメインは、組織の委任に関する計画に従って作成します。

1つ以上のポリシー・ドメインを使用して、保護されたアプリケーションを保護しているポリシーの管理を委任できます。複数のポリシー・ドメインを使用することによって、保護されたアプリケーションのアーキテクチャや、ポリシーの管理の委任方法など、定義されたロジックに従ってポリシーをパーティション化できます。たとえば、1つのポリシー・ドメインを使用して、すべてのポリシーのリソース保護を維持することも、複数のポリシー・ドメインを使用して、リソースの特定の特性を反映することもできます。異なるポリシー・ドメインを担当する別の管理者を配置することができます。ポリシー管理を委任する必要がない場合には、ポリシー・ドメインを作成する必要はありません。この場合、ポリシー・ドメインに関連付けられたすべての子のオブジェクトは、ApplicationPolicyインタフェースを使用して該当する子のオブジェクト・マネージャをコールすることで作成できます。

ポリシー・ドメインは、プログラミングではPolicyDomainEntryオブジェクトとして表現されます。ApplicationPolicyオブジェクト内で、1つ以上の(オプションの)PolicyDomainEntryオブジェを作成できます。PolicyDomainEntryオブジェクトには、1つ以上の子オブジェクトを含めることができます。これらのオブジェクトはポリシー・ドメインを作成する前に定義する必要があります。


注意:

PolicyDomainEntryオブジェクトを削除すると、その中に作成されたすべての子オブジェクトも削除されます。

PolicyDomainEntryオブジェクトを作成するには、getPolicyDomainManager()メソッドを使用して、PolicyDomainManagerのインスタンスを取得します。(ネストしたポリシー・ドメインを作成するには、ApplicationPolicyまたはPolicyDomainEntry自体に対してgetPolicyDomainManager()を呼び出します。)PolicyDomainManagerインタフェースのcreatePolicyDomain()メソッドを使用してオブジェクトを作成します。例5-3は、Trading ApplicationPolicyからPolicyDomainManagerを取得することで、East_Tradingという名前のPolicyDomainEntryオブジェクトを作成しています。

例5-3 createPolicyDomain()メソッドの使用方法

PolicyDomainManager domainMgr = Trading.getPolicyDomainManager();
PolicyDomainEntry domain = domainMgr.createPolicyDomain
 ("East_Trading", "East_Trading Domain", "East_Trading Domain");

createPolicyDomain()パラメータの値は次のように定義されています。

  • 名前 - East_TradingはPolicyDomainEntryオブジェクトの固有の識別子です。

  • 表示名 - East_Trading DomainはPolicyDomainEntryオブジェクトのオプションの判読可能名です。

  • 説明 - East_Trading Domainは、PolicyDomainEntryオブジェクトについて説明するオプションの情報です。

PolicyDomainEntryオブジェクトを作成したら、必要な子のオブジェクトを追加できるようになり、管理者はポリシー定義コンポーネントの制御が可能になります。次のリストは、PolicyDomainEntryの子のオブジェクトについて説明し、第2章「ポリシーのプログラムによる作成」の該当する説明の項へのリンクを示しています。

  • PermissionSetEntryオブジェクト(特定のリソースに実行可能なアクションを関連付ける1つ以上のResourceActionsEntryオブジェクト)。詳細は、2.4.4「権限セットの定義」を参照してください。

  • PolicyEntry (PolicyRuleEntryを1つ、PermissionSetEntryを1つ、PrincipalEntryまたはAppRoleEntryを1つ、およびオプションでObligationEntryを1つ含みます)。詳細は、2.3.8項「ポリシーの定義」を参照してください。

  • AdminRoleEntry (ドメインの管理を定義します)。詳細は、2.3.4項「リソースのインスタンス化」を参照してください。


注意:

同じターゲット・リソースをポリシー・ドメイン間で共有することはできません。