ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Entitlements Server開発者ガイド
11gリリース2 (11.1.2.2)
B71698-05
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次
索引へ移動
索引

前
 
次
 

3 ポリシー・オブジェクトのプログラムによる管理

第2章「プログラムによるポリシーの作成」に記載されているアプリケーション・プログラミング・インタフェース(API)の多くは、プログラムによってポリシー・オブジェクトを管理可能なメソッドを含んでいます。この章では、それらのメソッドの使用方法について説明します。この章には次の項目があります。

3.1 Oracle Entitlements Serverを使用したポリシーの管理

Oracle Entitlements Serverでは、管理者がすべてのポリシーおよびグローバル・オブジェクトでの作成、読取り、更新および削除(CRUD)操作を実行できます。これは、次の方法のいずれかで実行できます。

3.2 範囲レベルを使用したポリシー・オブジェクトの管理

ポリシー・ストアには、トップ・レベルのポリシー・ストア自体と、アプリケーション(アプリケーション・ポリシー)およびポリシー・ドメインの3つの範囲レベルがあり、それらの配下でポリシーが管理されます。

  • PolicyStoreオブジェクトはポリシー・ストア全体を表します。アプリケーション・ポリシーとシステム管理ポリシーは、この範囲で管理されます。ポリシー管理アクティビティの前に、2.3.1項「ポリシー・ストアへのアクセス」に記載されているように、PolicyStoreオブジェクトのインスタンスを取得する必要があります。ポリシー・ストアの場所へのアクセスには、アカウントとアカウントのパスワードを使用します。これらは、Oracle Platform Security Servicesの構成ファイルのjps-config.xmlに定義されています。例3-1は、この情報をインストール時にjps-config.xmlに定義する方法を示しています。

    例3-1 jps-config.xmlでのポリシー・ストアの定義

    <jpsConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:noNamespaceSchemaLocation="http:// 
    xmlns.oracle.com/oracleas/schema/jps-config-11_0.xsd">  
        <serviceProviders>  
            <serviceProvider type="POLICY_STORE" name="policy.db" 
    class="oracle.security.jps.internal.policystore.OPSSPolicyStoreProvider">  
               <property name="policystore.type" value="DB_ORACLE"/>
               <property name="repository.type" value="database"/>  
       </serviceProvider>
        </serviceProviders>  
        <serviceInstances>  
            <serviceInstance name="policystore.db" provider="policy.db">  
               <property name="jdbc.url" 
    value="jdbc:oracle:thin:@10.182.219.120:1521:mc"/>  
               <property name="jdbc.driver" value="oracle.jdbc.driver.OracleDriver"/>  
               <property name="bootstrap.security.principal.key" value="bootstrap"/>  
               <property name="bootstrap.security.principal.map" 
    value="BOOTSTRAP_JPS"/>  
               <property name="oracle.security.jps.ldap.root.name"
                 value="cn=farm,cn=JPSContext,cn=jpsroot"/>  
            </serviceInstance>  
        </serviceInstances>  
        <jpsContexts default="default">  
            <jpsContext name="default">  
                <serviceInstanceRef ref="policystore.db"/> 
            
            </jpsContext>     
        </jpsContexts>  
    </jpsConfig>  
    

    注意:

    jps-config.xml構成ファイルの詳細は、『Oracle Fusion Middlewareアプリケーション・セキュリティ・ガイド』を参照してください。Oracle Entitlements Server固有のパラメータは、『Oracle Fusion Middleware Oracle Entitlements Server管理者ガイド』を参照してください。

    詳細は、3.2.1項「PolicyStoreの範囲で作成されたオブジェクトの管理」を参照してください。

  • ApplicationPolicyオブジェクトは、Oracle Entitlements Serverによって保護されるアプリケーションを表します。ApplicationPolicy内では、ポリシーを管理するために使用するプログラム・オブジェクトのResourceTypeEntryFunctionEntryAppRoleEntryおよびRolePolicyEntryが管理されます。


    注意:

    これらのプログラム・オブジェクトは、オプションで、ApplicationPolicy内に1つ(以上の)PolicyDomainEntryオブジェクトを作成して管理することもできます。次の箇条書きと第5章「ポリシー管理の委任」を参照してください。

    詳細は、3.2.2項「ApplicationPolicy範囲内でのオブジェクトの管理」を参照してください。

  • オプションのPolicyDomainEntryオブジェクトは、パーティションに作成することができ、ポリシー・オブジェクトや指定済のポリシー定義に対する管理ポイントとなります。PolicyDomainEntryを1つ使用して、アプリケーションを保護するすべてのポリシーを管理するか、複数使用して必要時にポリシー・コンポーネントを編成できます。ポリシーは、その親のApplicationPolicyオブジェクトで作成されたオブジェクトを使用して定義します。ポリシー・ドメインどうしは、親と子の関係でも互いに不可視です。したがって、あるポリシー・ドメインで管理されるリソース、権限セットおよびポリシーは、そのポリシー・ドメインのみで使用できます。ポリシー・ドメインの詳細は、第5章「ポリシー管理の委任」を参照してください。

    詳細は、3.2.3項「PolicyDomainEntry範囲内でのオブジェクトの管理」を参照してください。

管理ロールは、作成された場所に応じてすべての範囲レベルで管理されます。管理ロールの作成および管理は、第5章「ポリシー管理の委任」を参照してください。

次の項では、さらに詳しい情報について説明します。

3.2.1 PolicyStoreの範囲で作成されたオブジェクトの管理

PolicyStoreオブジェクト内では、異なるアプリケーションを保護するポリシー・コンポーネントが2番目のレベルの1つまたは複数のApplicationPolicyオブジェクト内に編成されます。2.3.2項「アプリケーション・ポリシーの作成」では、ApplicationPolicyオブジェクトの作成方法について説明しました。また、ApplicationPolicyオブジェクトは、PolicyStoreインタフェースのメソッドによって削除または取得できます。


注意:

ApplicationPolicyオブジェクトは、Oracle Entitlements Server管理コンソールでアプリケーションとして表現されます。

例3-2は、Tradingという名前のApplicationPolicyオブジェクトをdeleteApplicationPolicy()メソッドを使用して削除する方法を示しています。

例3-2 deleteApplicationPolicy()メソッドの使用方法

PolicyStore ps = ctx.getServiceInstance(PolicyStore.class); 
ApplicationPolicy ap = ps.deleteApplicationPolicy("Trading");

deleteApplicationPolicy()パラメータの値はTradingです。これはオブジェクトが最初に作成されたときに名前として定義された固有識別子です。getApplicationPolicy()メソッドは、これと同じ名前の値を使用してApplicationPolicyオブジェクトを取得します。さらに、getApplicationPolicies()メソッドをコールし、ApplicationPolicySearchQueryクラスを使用して検索条件を渡すことで多数のApplicationPolicyオブジェクトを取得できます。


注意:

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

3.2.2 ApplicationPolicy範囲内でのオブジェクトの管理

ApplicationPolicyオブジェクト内では、ポリシー・コンポーネントが1つまたは複数のPolicyDomainEntryオブジェクト内に編成されます。ApplicationPolicyレベルで管理されるその他のコンポーネントには、リソース・タイプ、アプリケーション・ロール、ロール・ポリシーおよび拡張機能(関数および属性)があります。詳細は、次の各項を参照してください。

3.2.2.1 PolicyDomainEntryオブジェクトの管理

5.7項「ポリシー・ドメインの委任」では、ポリシー定義コンポーネントのパーティションを作成するために使用できる、オプションのPolicyDomainEntryオブジェクトの作成方法について説明しています。また、PolicyDomainEntryオブジェクトは、ApplicationPolicyインタフェースのメソッドによって削除または取得できます。ポリシー・ドメインを管理するには、PolicyDomainManagerのインスタンスを取得して、適切なメソッドをコールします。例3-3は、Tradingという名前のApplicationPolicy内で作成されたPolicyDomainEntryの削除方法を示しています。mydomainは、オブジェクトが最初に作成されたときに名前として定義された固有の識別子です。

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

PolicyDomainManager domainMgr = app.getPolicyDomainManager();
PolicyDomainEntry pdEntry = domainMgr.deletePolicyDomain("mydomain");

例3-4はインタフェースにあるsetDescription()およびsetDisplayName()メソッドを使用してPolicyDomainEntryの表示名と説明を変更する方法を示しています。

例3-4 modifyPolicyDomain()メソッドの使用方法

PolicyDomainManager domainMgr = app.getPolicyDomainManager();

PolicyDomainManager domainMgr = app.getPolicyDomainManager();
PolicyDomainEntry pdEntry = domainMgr.getPolicyDomain("mydomain");


// modify PolicyDomainEntry displayName and description
pdEntry.setDescription("This is description.");
pdEntry.setDisplayName("Domain Display Name");
 
// persist the change
domainMgr.modifyPolicyDomain(pdEntry);

例3-5は、mydomainを使用してPolicyDomainEntryを取得する方法を示しています。mydomainは、オブジェクトが最初に作成されたときに名前として定義された固有の識別子です。

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

PolicyDomainManager domainMgr = app.getPolicyDomainManager();
PolicyDomainEntry PDEntry = domainMgr.getPolicyDomain("mydomain");

さらに、getPolicyDomains()メソッドをコールし、PolicyDomainSearchQueryクラスを使用して検索条件を渡すことで多数のPolicyDomainEntryオブジェクトを取得できます。

3.2.2.2 ResourceTypeEntryオブジェクトの管理

2.3.3項「リソース・タイプの定義」では、ResourceTypeEntryオブジェクトの作成方法について説明しました。また、ResourceTypeEntryオブジェクトは、ResourceTypeManagerのインスタンスを取得し(ApplicationPolicyインタフェースのgetResourceTypeManager()を使用)、適切なメソッドをコールすることによって削除、変更および取得できます。


注意:

ResourceTypeEntryオブジェクトは、Oracle Entitlements Server管理コンソールでリソース・タイプとして表現されます。

例3-6では、TradingというApplicationPolicyオブジェクト内のTradingResTypeという名前のResourceTypeEntryを削除しています。

例3-6 deleteResourceType()メソッドの使用方法

//get the ResourceTypeManager 
ResourceTypeManager resourceTypeManager = Trading.getResourceTypeManager(); 

//delete the Resource Type 
resourceTypeManager.deleteResourceType("TradingResType", "true");

Tradingは、ResourceTypeオブジェクトが作成されたApplicationPolicyの名前です。TradingResTypeは削除するResourceTypeオブジェクトの名前です。deleteResourceType()パラメータの値は次のように定義されています。

  • 名前 - TradingResTypeは、オブジェクトが最初に作成されたときに名前として定義された固有の識別子です。

  • cascadeDelete - このパラメータは、trueまたはfalseの値を取り、ResourceTypeEntryと関連するオブジェクトの削除方法を管理します。trueの場合、ResourceTypeEntryと、インスタンス化されたすべてのResourceEntryオブジェクトが削除されます。falseで、ResourceEntryインスタンスが存在する場合には、処理が失敗し、PolicyStoreOperationNotAllowedExceptionがスローされます。

getResourceType()メソッドはResourceTypeEntryを取得するために使用でき、名前によって取得することもできます。getResourceTypes()メソッドをコールし、ResourceTypeSearchQueryクラスを使用して検索条件を渡すことで多数のResourceTypeEntryオブジェクトを取得できます。

3.2.2.3 AppRoleEntryオブジェクトの管理と付与

2.4.1項「アプリケーション・ロールの作成」では、AppRoleEntryオブジェクトの作成方法と、AppRoleEntryへのユーザーの割当て方法について説明しました。(次にAppRoleEntryオブジェクトを特定のポリシーに対してプリンシパルとして指定すると、ロールに割り当てられたすべてのユーザーがそのポリシーによって管理されます。)また、AppRoleEntryオブジェクトは、AppRoleManagerのインスタンスを取得し(ApplicationPolicyインタフェースのgetAppRoleManager()を使用)、適切なメソッドをコールすることによって削除、変更および取得できます。


注意:

AppRoleEntryオブジェクトは、Oracle Entitlements Server管理コンソールでアプリケーション・ロールとして表現されます。アプリケーション・ロールは、管理コンソールのナビゲーション・ツリーの「ロール・カタログ」ブランチで検索され、この配下にまとめられます。ロール・カタログは、アプリケーション・ロールとその性質の管理に関連するすべてのアクティビティをグループ化するユーザー・インタフェースです。ロール・カテゴリは管理を容易にするためにロールに割り当てることができるタグです。

例3-7はTradingAppRoleという名前のAppRoleEntryをポリシー・ストアから削除しています。TradingAppは、AppRoleEntryオブジェクトが作成されたApplicationPolicyの名前です。

例3-7 deleteAppRole()メソッドの使用方法

//get the AppRoleManager 
AppRoleManager appRoleManager = Trading.getAppRoleManager(); 

//delete the AppRoleEntry 
appRoleManager.deleteAppRole("TradingAppRole", "true");

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

  • 名前 - TradingAppRoleは、オブジェクトが最初に作成されたときに名前として定義された固有の識別子です。

  • cascadeDelete - このパラメータは、trueまたはfalseの値を取り、AppRoleEntryと関連するオブジェクトの削除方法を管理します。trueの場合、AppRoleEntryが削除され、これを参照しているすべてのポリシーから取り除かれます。(ポリシーが参照しているのがそのロールのみの場合は、ポリシーも削除されます。)falseで、ロールがいずれかのポリシーで参照されている場合には、処理が失敗し、PolicyStoreOperationNotAllowedExceptionがスローされます。

getAppRole()メソッドは、名前を渡すことでAppRoleEntryを取得するために使用できます。getAppRoles()メソッドをコールし、AppRoleSearchQueryクラスを使用して検索条件を渡すことで多数のAppRoleEntryオブジェクトを取得できます。さらに、modifyAppRole()メソッドによってAppRoleEntryを変更し、getDirectAppRoleMembers()メソッドによってアプリケーション・ロールが直接付与されたメンバーを取得し、getDirectGrantedAppRoles()メソッドによって特定のプリンシパルに対するアプリケーション・ロール階層を取得できます。

AppRoleEntryの取消しは、revokeAppRole()メソッドを使用して行えます。1つ以上のPrincipalEntryオブジェクトへのAppRoleEntryの付与は、grantAppRole()メソッドを使用して静的に行うか、ロール・マッピング・ポリシーを使用して動的に行えます。


注意:

ロール・マッピング・ポリシーでは、プリンシパル(ユーザー、グループ)、ターゲット(リソース、リソース名の式)および(オプションの)条件を定義できます。認可ポリシーは、アプリケーション・ロールをアクセス権限にマップするために使用します。認可ポリシーには、プリンシパル(ユーザー、グループ、アプリケーション・ロール)、ターゲット(リソース、資格セット、リソース名の式)、条件および義務を定義できます。詳細は、3.2.2.4項「ロール・マッピング・ポリシー(RolePolicyEntry)オブジェクトの管理」を参照してください。

アプリケーション・ロールは継承および階層も使用します。ロールは、プリンシパルがロールに割り当てられる(ロール・マッピング・ポリシーを使用)階層で作成でき、(他に構成されたポリシーにより禁止されないかぎり)子ロールにも継承されます。子のロールを基にアクションが付与されたユーザーは、そのロールの親からのアクションを継承します。親のロールを基にアクションが拒否されたユーザーは、そのロールの子のアクションも拒否されます。

3.2.2.4 ロール・マッピング・ポリシー(RolePolicyEntry)オブジェクトの管理

2.4.2項「ロール・マッピング・ポリシーの作成」ではRolePolicyEntryオブジェクトの作成方法について説明しました。また、RolePolicyEntryオブジェクトは、RolePolicyManagerのインスタンスを取得し(ApplicationPolicyインタフェースのgetRolePolicyManager()を使用)、適切なメソッドをコールすることによって削除、変更および取得できます。例3-8では、TellerAppというApplicationPolicyオブジェクト内のTellerRoleMappingという名前のRolePolicyEntryを削除する方法を示しています。

例3-8 deleteRolePolicy()メソッドの使用方法

//get the RolePolicyManager 
RolePolicyManager rolePolicyManager = tellerApp.getRolePolicyManager(); 

//delete the RolePolicyEntry 
rolePolicyManager.deleteRolePolicy("TellerRoleMapping");

例3-9では、modifyRolePolicy()メソッドにオブジェクトの修正されたインスタンスを渡すことでRolePolicyEntryを修正する方法を示しています。

例3-9 modifyRolePolicy()メソッドの使用方法

//get the RolePolicyManager 
RolePolicyManager rolePolicyManager = tellerApp.getRolePolicyManager(); 

// get the policy
RolePolicyEntry rolePolicy = rolePolicyManager.getRolePolicy("TellerRoleMapping");
 
// change description
rolePolicy.setDescription("the policy is changed!");
 
//persist the change
rolePolicyManager.modifyRolePolicy(rolePolicy);

getRolePolicy()メソッドは、名前を渡すことでRolePolicyEntryを取得するために使用できます。getRolePolicies()メソッドをコールし、RolePolicySearchQueryクラスを使用して検索条件の配列を渡すことで多数のRolePolicyEntryオブジェクトを取得できます。

3.2.2.5 AttributeEntryおよびFunctionEntryオブジェクトの管理

2.4.3項「属性と関数定義の作成」では、(オプション)でポリシーの条件と義務で使用するAttributeEntry定義とFunctionEntry定義の作成方法について説明しました。また、これらのオブジェクトは、ExtensionManagerをコールすることで削除、変更または取得できます。次の各項では、詳細を説明します。

3.2.2.5.1 AttributeEntryオブジェクトの管理

例3-10では、ポリシー・ストアからPhoneという名前のAttributeEntryオブジェクトを取得しています。bankApplicationは、ExtensionManagerをインスタンス化するApplicationPolicyオブジェクトを参照します。Phoneは、AttributeEntryオブジェクトが最初に作成されたときに名前として定義された固有の識別子を参照します。

例3-10 getAttribute()メソッドの使用方法

//get the ExtensionManager 
ExtensionManager extMgr = bankApplication.getExtensionManager(); 

//retrieve the attribute 
AttributeEntry<? extends DataType> oneAttrEntry = 
  extMgr.getAttribute("Phone");

getAttributes()メソッドをコールし、AttributeSearchQueryクラスを使用して検索条件を渡すことで多数のAttributeEntryオブジェクトを取得できます。例3-11では、ApplicationPolicyからAttributeEntryを削除しています。

例3-11 deleteAttribute()メソッドの使用方法

//get the ExtensionManager 
ExtensionManager extMgr = bankApplication.getExtensionManager(); 

//retrieve the attribute 
AttributeEntry<? extends DataType> oneAttrEntry = 
  extMgr.deleteAttribute("myattr", false);

注意:

deleteAttribute()メソッドを実行する前に、AttributeEntryを参照するポリシーから該当するAttributeEntryを削除します。属性を使用中の場合は削除されず、PolicyStoreOperationNotAllowedExceptionがスローされます。このリリースでは、cascadeDeleteパラメータをfalseにする必要があります。

AttributeEntryオブジェクトを変更するには、新しい変更された値を持つオブジェクトをmodifyAttribute()メソッドを使用してExtensionManagerに渡します。オブジェクトを渡す前に、AttributeEntryインタフェースにあるメソッドを使用して新しい変更する値を設定します。

3.2.2.5.2 FunctionEntryオブジェクトの管理

例3-12では、ポリシー・ストアからClientTypeという名前のFunctionEntryオブジェクトを取得しています。bankApplicationは、ExtensionManagerをインスタンス化するApplicationPolicyオブジェクトを参照します。ClientTypeは、FunctionEntryオブジェクトが最初に作成されたときに名前として定義された固有の識別子を参照します。

例3-12 getFunction()メソッドの使用方法

//get the ExtensionManager 
ExtensionManager extMgr = bankApplication.getExtensionManager(); 

//retrieve the function 
FunctionEntry oneFuncEntry = extMgr.getFunction("ClientType");

getFunctions()メソッドをコールし、FunctionSearchQueryクラスを使用して検索条件を渡すことで多数のFunctionEntryオブジェクトを取得できます。例3-13では、ApplicationPolicyからFunctionEntryを削除しています。

例3-13 deleteFunction()メソッドの使用方法

//get the ExtensionManager 
ExtensionManager extMgr = bankApplication.getExtensionManager(); 

//remove the function 
extMgr.deleteFunction("ClientType", false);

FunctionEntryオブジェクトを変更するには、新しい変更された値を持つオブジェクトをmodifyFunction()メソッドを使用してExtensionManagerに渡します。オブジェクトを渡す前に、FunctionEntryインタフェースにあるメソッドを使用して新しい変更する値を設定します。

3.2.2.6 ResourceEntryオブジェクトの管理

2.3.4項「リソースのインスタンス化」では、ResourceTypeEntryオブジェクトからResourceEntryオブジェクトをインスタンス化する方法について説明しました。また、ResourceEntryオブジェクトは、ResourceManagerのインスタンスを取得し(ApplicationPolicyインタフェースまたは管理を委任するためにポリシー・ドメインを使用している場合はPolicyDomainEntryインタフェースで、getResourceManager()を使用)、適切なメソッドをコールすることによって削除、変更および取得できます。


注意:

ResourceEntryオブジェクトは、Oracle Entitlements Server管理コンソールでリソースとして表現されます。

例3-14は、ResourceEntryオブジェクトの取得方法を示しています。getResource()メソッドは、ResourceManagerインタフェースで拡張されたResourceFinderで定義されています。このメソッドに、リソース・タイプの定義済の名前とリソースを渡すことで、ResourceEntryが返されます。

例3-14 getResource()メソッドの使用方法

//get the ResourceManager 
ResourceManager resMgr = domain.getResourceManager();

//retrieve the Resource 
ResourceEntry checkingRes = resMgr.getResource
  ("WidgetType", "WidgetResource")

例3-15は、当座預金口座のResourceEntryを削除します。domainは、ResourceManagerを取得するPolicyDomainEntryオブジェクトを参照します。このメソッドに、リソース・タイプの定義済の名前とリソースを渡すことで、ResourceEntryが返されます。

例3-15 deleteResource()メソッドの使用方法

//get the ResourceManager 
ResourceManager resMgr = domain.getResourceManager();

//remove the Resource 
resMgr.deleteResource("WidgetType", "WidgetResource", true);

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

  • リソース・タイプ名 - WidgetTypeは、ResourceTypeEntryが最初に作成されたときに名前として定義された固有の識別子です。

  • 名前 - WidgetResourceは、ResourceEntryが最初に作成されたときに名前として定義された固有の識別子です。

  • cascadeDelete - このパラメータは、trueまたはfalseの値を取り、ResourceEntryと関連するオブジェクトの削除方法を管理します。trueの場合、ResourceEntryを参照しているポリシーからResourceEntryが削除されます。ポリシーが参照しているのがそのオブジェクトのみの場合は、ポリシーも削除されます。falseで、ResourceEntryインスタンスが存在する場合には、処理が失敗し、PolicyStoreOperationNotAllowedExceptionがスローされます。

ResourceEntryオブジェクトは、modifyResource()メソッドをコールし、そのオブジェクト自身へのハンドルをEntryReferenceおよび変更の配列の形式で渡すことで変更することもできます。例3-16に、これを示します。

例3-16 modifyResource()メソッドの使用方法

//get the ResourceManager 
ResourceManager resMgr = domain.getResourceManager();
 
// get resource object
ResourceEntry resEntry = resMgr.get("WidgetType", "WidgetResource");

// create attrName Attribute with value of 'test'
AttributeEntry attrEntry1 = new BasicAttributeEntry("testAttr",
  new OpssString("test"));
resEntry.addResourceAttribute(attrEntry1);
 
// persist the change
resMgr.modifyResource(resEntry);

3.2.2.7 権限セットの管理

2.4.4「権限セットの定義」では、PermissionSetManagerをコールし、createPermissionSet()メソッドを使用することで、PermissionSetEntryオブジェクト内で1つ以上のResourceActionsEntryオブジェクトを編成する方法について説明しています。また、PermissionSetEntryオブジェクトは、PermissionSetManagerのインスタンスを取得し(ApplicationPolicyインタフェースまたは管理を委任するためにポリシー・ドメインを使用している場合はPolicyDomainEntryインタフェースで、getPermissionSetManager()を使用)、適切なメソッドをコールすることによって削除、変更および取得できます。


注意:

PermissionSetEntryオブジェクトはOracle Entitlements Server管理コンソールで資格として表現されます。

例3-17は、2つのResourceActionsEntryオブジェクトを削除することでPermissionSetEntryを変更する方法を示しています。domainは、ポリシーが作成され、さらにPermissionSetManagerを取得するポリシー・ドメインを参照します。

例3-17 PermissionSetEntryの変更

// get the PermissionSetManager 
PermissionSetManager psMgr = domain.getPermissionSetManager();
 
// get the PermissionSet
PermissionSetEntry permSetEntry = psMgr.getPermissionSet("myPermSet");
 
// get the ResourceActionEntries from PermissionSet
List<ResourceActionsEntry> resultResActions = 
     permSetEntry.getResourceActionsList();
 
// delete the first ResourceActionsEntry object
permSetEntry.deleteResourceActions(resultResActions.get(0));
 
// persist the change
psMgr.modifyPermissionSet(permSetEntry);

例3-18は、PermissionSetEntryオブジェクトの削除方法を示しています。

例3-18 deletePermissionSet()メソッドの使用方法

//get the PermissionSetManager 
PermissionSetManager psMgr = domain.getPermissionSetManager();

//remove PermissionSetEntry
psMgr.deletePermissionSet("RptsPermSet", "true");

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

  • 名前 - RptsPermSetは、オブジェクトが最初に作成されたときに名前として定義された固有の識別子です。

  • cascadeDelete - このパラメータは、trueまたはfalseの値を取り、PermissionSetEntryと関連するオブジェクトの削除方法を管理します。trueの場合、PermissionSetEntryを参照しているポリシーからPermissionSetEntryが削除されます。ポリシーが参照しているのがそのオブジェクトのみの場合は、ポリシーも削除されます。falseで、PermissionSetEntryインスタンスが参照されている場合には、処理が失敗し、PolicyStoreOperationNotAllowedExceptionがスローされます。

getPermissionSet()メソッドはPermissionSetEntryを取得するために使用でき、名前によって取得することもできます。getPermissionSets()メソッドをコールし、PermissionSetSearchQueryクラスを使用して検索条件を渡すことで多数のPermissionSetEntryオブジェクトを取得できます。modifyPermissionSet()は、入力として使用されるPermissionSetオブジェクトで定義された変更を永続化します。

3.2.2.8 ポリシーの管理

2.3.8項「ポリシーの定義」では、PolicyRuleEntryResourceActionsEntryPrincipalEntryなど、アクセス制御の作成に必要なすべての要素を統合することで、PolicyEntryオブジェクトを作成する方法について説明しました。PolicyManagerのインスタンスを取得したら、createPolicy()メソッドを使用します。また、PolicyEntryオブジェクトは、PolicyManagerのインスタンスを取得し(ApplicationPolicyインタフェースまたは管理を委任するためにポリシー・ドメインを使用している場合はPolicyDomainEntryインタフェースで、getPolicyManager()を使用)、適切なメソッドをコールすることによって削除、変更および取得できます。

例3-19は、PolicyEntryの表示名と表示パラメータの値を変更する方法を示しています。domainは、ポリシーが作成され、さらにPolicyManagerを取得するポリシー・ドメインを参照します。

例3-19 modifyPolicy()メソッドの使用方法

// get the Policy
PolicyManager policyMgr = domain.getPolicyManager();
PolicyEntry policyEntry = policyMgr.getPolicy("mypolicy");
 
// update PolicyEntry description and displayName
policyEntry.setDescription("updated description");
policyEntry.setDisplayName("updated display name");
 
// persist the change
policyMgr.modifyPolicy(policyEntry);

例3-20は、deletePolicy()のメソッドの使用方法を示しています。Bank Policyは、PolicyEntryが作成されたときに名前パラメータの値として定義された固有の識別子を参照します。

例3-20 deletePolicy()メソッドの使用方法

PolicyManager policyMgr = domain.getPolicyManager();
policyManager.deletePolicy("BankPolicy"); 

getPolicy()メソッドはPolicyEntryを取得するために使用でき、名前によって取得することもできます。getPolicies()メソッドをコールし、PolicySearchQueryクラスを使用して検索条件を渡すことで多数のPolicyEntryオブジェクトを取得できます。modifyPolicy()は、入力として使用されるPolicyEntryオブジェクトで定義された変更を永続化します。

PolicyEntryオブジェクトを検索するには、PolicySearchQueryクラスを使用します。問合せを作成して、次のパラメータに基づいて検索できます。

  • 名前

  • 表示名

  • 説明

  • プリンシパル

  • 権限セット

  • 義務

  • 属性

  • 関数

詳細は、Oracle Fusion Middleware Oracle Entitlements Server管理Java APIリファレンスを参照してください。

3.2.3 PolicyDomainEntry範囲内でのオブジェクトの管理

ポリシーのパーティション化が必要な場合には、ポリシー定義のコンポーネントを1つ以上のPolicyDomainEntryオブジェクト内で編成できます。このコンポーネントにはリソース、権限セット、ポリシーなどがあります。


注意:

PolicyDomainEntryの作成はオプションです。ポリシーのパーティション化が必要ない場合は、ApplicationPolicyの範囲でポリシー定義コンポーネントを管理してください。

次の項では、ApplicationPolicyの範囲でコンポーネントを管理する方法について説明します。後からパーティション化するためにPolicyDomainEntryを作成済の場合には、これらの同じコンポーネントをPolicyDomainEntryの範囲で管理できます。

PolicyDomainEntryの使用に関する情報は、5.7項「ポリシー・ドメインの委任」を参照してください。