Oracle® Fusion Middleware Oracle Entitlements Server開発者ガイド 11g リリース1 (11.1.2) B71698-01 |
|
前 |
次 |
システム管理権限およびポリシー管理権限を、ある管理者から別の管理者に委任するには、制限付きの権限を持つ管理ロールを作成するか、既存の管理ロールをユーザーに付与します。管理の委任は、サブジェクト(ロールが付与される人)、リソース(ロールが関連するオブジェクト)およびロールが制御(表示、管理)するリソースへのアクションの定義で構成されます。この章では、ポリシーおよびシステム管理タスクを委任する方法について説明します。この章には次の項目があります。
管理とは、ある作業を行うユーザーに1つ以上の認可された権限が付与される場合を指します。委任とは、そのユーザーが自分に付与された権限を別のユーザーに引き渡す機能です。これらを組み合せて、管理の委任を、あるユーザーから別のユーザーへの認可された権限の移行として定義できます。Oracle Entitlements Serverでは、ポリシー・オブジェクトおよびエンティティでのタスクを実行する資格を持つ管理者は、この権限を他の人に譲渡できます。
Oracle Entitlements Serverでの委任された管理は、ロールベース・アクセス制御(RBAC)のアプローチを使用してモデル化されます。ユーザーは、このアプローチによって、アプリケーション、ポリシー・ドメインおよびその他のロールを使用するポリシー・オブジェクトへ管理を譲渡できます。RBACの中核となる概念は、権限(アクションを実行する許可)と、アクションを実行可能な権限としてモデル化できるオブジェクトを組み合せることです。次に、これらの権限をロールに割り当てます。ユーザーをロールに割り当てると、そのユーザーに適切な権限が付与されます。
図5-1のとおり、管理ロールはポリシー関連の特定の操作に対して作成されます。ジョブ専用の操作を実行する権限は、そのロールで定義されます。ユーザーは、ロールに割り当てられ、その割当ての間にジョブを実行する権限を取得します。ユーザーは直接権限に割り当てられないため、個々のユーザー権限の管理は、適切なロールを適切なユーザーに割り当てることになります。管理ロールは、ポリシー・オブジェクトの管理が可能なユーザーを決定するために使用します。
委任管理は、リソースおよびポリシー・オブジェクトの管理をある人から別の人に譲渡することに関するすべてです。委任の範囲(または委任によって適用されるオブジェクトの範囲)は、レベルで定義されます。管理の粒度は、各範囲で管理されるオブジェクトのタイプを定義します。各範囲が作成されると、デフォルトの管理ロールが自動的に作成されます。追加の管理ロールは後で作成できます。最高から最低まで、範囲および適用可能な粒度は、次のとおりです。
最高レベルのシステム管理者には、システムレベルのリソースおよび最上位のポリシー・ストア範囲でポリシー関連オブジェクトを管理する権限があります。システム・リソースには、管理者ロールとシステム構成およびバインディングが含まれます。ポリシー・ストア・レベルのオブジェクトはApplicationPolicy
オブジェクトとグローバル・オブジェクトです。
注意: システム管理者は、すべての |
アプリケーション・ポリシーの管理者は、割当て先のApplicationPolicy
オブジェクト内のすべてのオブジェクトを管理する権限を持っています。作成されたアプリケーション・ポリシーごとに、アプリケーション・ポリシー管理者が1つ作成されます。これらは、ポリシー・ドメイン・オブジェクトおよびその子(関数、属性、アプリケーション・ロール、リソース・タイプなど)を含む、アプリケーション・ポリシー内のポリシー・オブジェクトの管理を委任することを主な目的としています。
ポリシー・ドメイン管理者は、割当て先のポリシー・ドメイン・オブジェクト内のすべての子オブジェクトを管理する権限を持っています。作成される各ポリシー・ドメインに、1つのポリシー・ドメイン管理者が生成されます。これらは、主に、該当するポリシー・ドメイン内にポリシー、権限セットおよびリソースを定義することを目的としています。
注意:
|
管理者ロールは、管理および表示アクションを持つ権限を割り当てることができます。これらのアクションの権限は次のとおりです。
管理権限を持つ管理者ロールは、割り当てられた管理範囲内のオブジェクト(子のオブジェクトを含む)ですべてのメソッドをコールできます。たとえば、管理権限を持つアプリケーション・ポリシー管理者は、アプリケーション・ポリシーとそのポリシー・ドメイン・オブジェクトの両方のオブジェクトで、すべてのメソッドをコールできます。管理権限を持つ管理者は、親の範囲にある必要なオブジェクトを表示することもできます。たとえば、ポリシー・ドメインの管理権限を持つ管理者は、親のアプリケーション・ポリシーにあるすべてのリソース・タイプ、関数および属性を参照できます。これは、ポリシーの定義の際にこれらのオブジェクトを使用するためです。
表示権限を持つ管理者は、割り当てられた管理範囲内のオブジェクト(子のオブジェクトを含む)で、get
メソッドのみをコールできます。たとえば、表示権限を持つグローバル管理者は、アプリケーション・ポリシーとそのポリシー・ドメイン・オブジェクトの両方で、すべてのオブジェクトを表示できます。
インストール後、ポリシー・ストアには、ポリシー・ストア・レベルでの完全な表示および管理権限を持つSystemAdminというデフォルトの管理ロールが含まれています。この管理ロールとその他のデフォルトの管理ロールを次のリストで説明します。これらのデフォルトの管理ロールのメンバーのみが、他の管理ロールを作成および管理できます。デフォルトの管理ロールは、削除したり、権限を変更することはできません。
SystemAdmin — これは、デフォルトのポリシー・ストア管理者でポリシー・ストア全体の管理権限を持ちます。このロールは、WebLogic Server Administratorsグループに割り当てられ、すべてのアプリケーション・ポリシー・オブジェクトおよびポリシー・ドメイン・オブジェクトでポリシーを管理するために必要な権限を持ちます。
ApplicationPolicyAdmin — この名前のロールは、新規のアプリケーション・ポリシー・オブジェクトごとに自動的に作成されます。アプリケーション・ポリシーとネストされたポリシー・ドメイン・オブジェクトでの管理権限を持ちます。
PolicyDomainAdmin — この名前のロールは、新規のポリシー・ドメイン・オブジェクトごとに自動的に作成されます。ポリシー・ドメインとネストされたポリシー・ドメイン・オブジェクトでの管理権限を持ちます。また、親のアプリケーション・ポリシー内のオブジェクトに対する表示権限を持ちます。
管理ロールは、システム管理権限を委任するために使用します。管理ロールは、異なる範囲でデータを管理する目的で作成できます。たとえば、管理者ロールを適切なレベルで作成し、ユーザーまたはグループにこのロールを割り当てることによって、アプリケーション・ポリシーおよびポリシー・ドメインの管理者を定義できます。
管理ロールの作成には、いくつかの手順があります。特定の管理リソースに表示または管理権限を付与するには、次の詳細な手順を使用します。
5.5.1項「管理ロールの作成」の説明に従って、管理ロールを作成するオブジェクトと、AdminManager
のインスタンスを取得します。
5.5.2項「管理ロールへのアクションとリソース(権限)の割当て」の説明に従って、リソースと適切なアクションを定義します。
5.5.3項「管理ロールへのプリンシパルの割当て」の説明に従って、ユーザー(プリンシパル)を割り当てます。
5.5.4項「プリンシパルの管理リソースの取得」では、プリンシパルを割り当て済の管理ロールを取得する方法について説明しています。
管理ロールを作成するには、目的の管理範囲(ポリシー・ストア、管理ポリシーまたはポリシー・ドメイン)を包含するオブジェクトを取得し、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.は管理ロールのオプションの説明です。
権限は、リソースを管理する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 |
ポリシー・ドメイン・オブジェクトを管理できます。 |
アプリケーション・ロールに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()
メソッドを使用します。
管理ユーザーがアクセス可能なリソースを指定するには、該当する範囲(ポリシー・ストア、アプリケーション・ポリシーまたはポリシー・ドメイン)でAdminManager
のインスタンスを取得し、getAdminRole()
メソッドと管理ロールの名前を使用して管理者を取得します。次にgetGrantedAdminResources()
メソッドを呼び出すことで、管理者に適用可能なすべてのAdminResourceActionEntry
オブジェクトが返されます。(AdminResourceActionEntryオブジェクトは、管理者が管理可能なエンティティと、そのエンティティに実行可能なアクションをペアにします。)
5.5項「管理ロールの作成」では、AdminRoleEntry
オブジェクトの作成方法について説明しました。管理ロールは、目的の範囲内からAdminManager
のインスタンスを取得することにより、すべての範囲レベル(PolicyStore
、ApplicationPolicy
およびPolicyDomain
を含む)で作成できます。また、AdminManager
のインスタンスを取得することで、これらの任意の範囲からAdminRoleEntry
オブジェクトを削除および取得できます。例5-1は、ApplicationPolicy
のAdminManager
を取得することによる削除のアクションを示しています。
例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
)の取得
管理ロールの変更
ポリシー・ドメインには、完了したポリシー定義のコンポーネントが含まれます。これは、ターゲット・リソース(リソース・タイプのインスタンス)、権限セット(リソースで実行できるアクション)、およびポリシー(コントロールをアセンブルするルールおよび影響を及ぼすプリンシパル)を合せたものです。ポリシー・ドメインは、管理を委任する目的で作成します。このドメインを1つ(以上)作成することで、ポリシー管理を別の管理者に委任できます。
注意: ポリシー・ドメインの作成はオプションであるため、リソース、権限セットおよびポリシーを作成可能なデフォルトのポリシー・ドメインとして |
1つ以上のポリシー・ドメインを使用して、保護されたアプリケーションを保護しているポリシーの管理を委任できます。複数のポリシー・ドメインを使用することによって、保護されたアプリケーションのアーキテクチャや、ポリシーの管理の委任方法など、定義されたロジックに従ってポリシーをパーティション化できます。たとえば、1つのポリシー・ドメインを使用して、すべてのポリシーのリソース保護を維持することも、複数のポリシー・ドメインを使用して、リソースの特定の特性を反映することもできます。異なるポリシー・ドメインを担当する別の管理者を配置することができます。ポリシー管理を委任する必要がない場合には、ポリシー・ドメインを作成する必要はありません。この場合、ポリシー・ドメインに関連付けられたすべての子のオブジェクトは、ApplicationPolicy
インタフェースを使用して該当する子のオブジェクト・マネージャをコールすることで作成できます。
ポリシー・ドメインは、プログラミングではPolicyDomainEntry
オブジェクトとして表現されます。ApplicationPolicy
オブジェクト内で、1つ以上の(オプションの)PolicyDomainEntry
オブジェを作成できます。PolicyDomainEntry
オブジェクトには、1つ以上の子オブジェクトを含めることができます。これらのオブジェクトはポリシー・ドメインを作成する前に定義する必要があります。
注意:
|
PolicyDomainEntry
オブジェクトを作成するには、getPolicyDomainManager()
メソッドを使用して、PolicyDomainManager
のインスタンスを取得します。(ネストしたポリシー・ドメインを作成するには、ApplicationPolicy
またはPolicyDomainEntry
自体に対してgetPolicyDomainManager()
を呼び出します。)PolicyDomainManager
インタフェースのcreatePolicyDomain()
メソッドを使用してオブジェクトを作成します。例5-3は、Trading ApplicationPolicy
からPolicyDomainManager
を取得することで、East_Tradingという名前のPolicyDomainEntry
オブジェクトを作成しています。
例5-2 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項「リソースのインスタンス化」を参照してください。
注意: 同じターゲット・リソースをポリシー・ドメイン間で共有することはできません。 |