この付録では、オフラインのWLSTコマンドupgradeSecurityStoreを使用して、リリース10.1.3.xで使用しているJAZNセキュリティ・データを、11gリリース1(11.1.1)のOPSSで使用するセキュリティ・データに更新し、ファイルベースのアプリケーション・ポリシーをリリース11.1.1.1.0からリリース11.1.1.2.0にアップグレードする手順について説明します。このWLSTコマンドでは、アイデンティティ、ポリシーまたは資格証明データを別々にアップグレードできます。
| 
 11gR1から11gR1 PS1へのアップグレード: アップグレードの詳細は、『Oracle Fusion Middlewareインストレーション・プランニング・ガイド』のOracle Fusion Middleware 11gリリース1(11.1.1.1.0)の特別な手順に関する項を参照してください。 | 
この項では、WLSTコマンドupgradeSecurityStoreを使用して、前のリリースから最近のリリースにアプリケーション・セキュリティ・データをアップグレードする方法を説明します。特定のシナリオの詳細は、コマンドの様々な構文とともに後述しています。
アップグレードの対象がLDAPベースのリポジトリの場合には、コマンドを使用する前にいくつかの設定が必要になります。第7.1.2項「LDAPベースのポリシー・ストアを使用する場合の前提条件」を参照してください。
次に示すコマンドは、オフラインであり(つまり、実行中のサーバーに接続しなくても動作します)、インタラクティブ・モードまたはスクリプト・モードで実行できます。インタラクティブ・モードの場合は、コマンドライン・プロンプトにコマンドを入力すると、応答が即座に表示されます。スクリプト・モードの場合、コマンドはテキスト・ファイル(ファイル名拡張子は.py)に記述するので、シェル・スクリプトのディレクティブのように入力なしで実行できます。
| 
 重要: シェル内でセキュリティ関連のWLSTコマンドを起動する前に、次のサンプルで説明するように、wlst.shスクリプトを実行する必要があります。
> sh $ORACLE_HOME/common/bin/wlst.sh これにより、必要なJARがクラス・パスに確実に追加されるようになります。新しいシェル内で前述のスクリプトを実行しないと、WLSTコマンドが使用できない状態になります。  | 
スクリプト・モードおよびインタラクティブ・モードの構文
コマンド構文は、アップグレードされるストアのタイプによって異なります。オプションの引数は角カッコで囲まれています。スクリプト・モードの構文では、わかりやすいように引数が別々の行に記述されています。
10.1.3.x XMLのアイデンティティ・データを11gリリース1(11.1.1)XMLのアイデンティティ・データにアップグレードするには、次のいずれかの構文を使用します。
updateSecurityStore -type xmlIdStore
                    -jpsConfigFile jpsConfigFileLocation
                    -srcJaznDataFile srcJazn
                    -srcRealm jaznRealm
                    [-dst dstJpsContext]
updateSecurityStore(type="xmlIdStore", jpsConfigFile="jpsConfigFileLocation", srcJaznDataFile="srcJazn", srcRealm="jaznRealm", [dst="dstJpsContext"])
                     
10.1.3.x XMLのポリシー・データを11gリリース1(11.1.1)XMLのポリシー・データにアップグレードするには、次のいずれかの構文を使用します。
updateSecurityStore -type xmlPolicyStore
                    -jpsConfigFile jpsConfigFileLocation
                    -srcJaznDataFile srcJazn
                    [-dst dstJpsContext]
updateSecurityStore(type="xmlPolicyStore", jpsConfigFile="jpsConfigFileLocation", srcJaznDataFile="srcJazn", [dst="dstJpsContext"])
                     
10.1.3.x Oracle Internet DirectoryのLDAPベースのポリシー・データを11gリリース1(11.1.1)XMLのポリシー・データにアップグレードするには、次のいずれかの構文を使用します。
updateSecurityStore -type oidPolicyStore
                    -jpsConfigFile jpsConfigFileLocation
                    -srcJaznConfigFile srcJazn
                    [-dst dstJpsContext]
updateSecurityStore(type="oidPolicyStore", jpsConfigFile="jpsConfigFileLocation", srcJaznConfigFile="srcJazn", [dst="dstJpsContext"])
                     
XMLベースのアプリケーション・ポリシーをリリース11.1.1.1.0からリリース11.1.1.2.0にアップグレードするには、次のいずれかの構文を使用します。
updateSecurityStore -type xmlAppPolicies
                    -srcApp applicationStripeName
                    -jpsConfigFile jpsConfigFileLocation
                    -srcJaznDataFile srcJazn
                    -dstJaznDataFile dstJazn
                    -resourceTypeFile resTypeJazn
updateSecurityStore(type="xmlAppPolicies", srcApp="applicationStripeName", jpsConfigFile="jpsConfigFileLocation", srcJaznDataFile="srcJazn", dstJaznDataFile="dstJazn", srcJaznDataFile="resTypeJazn")
                     
引数(dst以外はすべて必須)の意味は、次のとおりです。
typeは、アップグレードするセキュリティ・データの種類を指定します。有効な値は、xmlIdStore、xmlPolicyStore、oidPolicyStore、xmlCredStoreおよびxmlAppPoliciesのみです。
jpsConfigFileでは、構成ファイルjps-config.xmlの位置を、このコマンドを実行するディレクトリを基準とした相対パスで指定します。アップグレードのターゲット・ストアは、引数dstで指定したコンテキストから読み取られます。
typeがxmlAppPoliciesの場合、構成ファイルは、ソースやターゲットの参照では使用されず、監査サービスの構成でのみ使用されます。監査サービスがjps-config.xmlファイルで指定されていない場合でも、その場所を渡す必要があることに注意してください。
srcJaznDataFileでは、10.1.3.x jaznデータ・ファイルの位置を、このコマンドを実行するディレクトリを基準とした相対パスで指定します。指定したtypeがxmlIdStore、xmlPolicyStoreまたはxmlCredStoreの場合、この引数は必須です。
指定したtypeがxmlAppPoliciesの場合、この引数はアプリケーション11.1.1.1.0のjazn-data.xmlファイルの場所を指定します。このファイルにはリソース・タイプの指定はありません。
srcJaznConfigFileでは、10.1.3.x jazn構成ファイルの位置を、このコマンドを実行するディレクトリを基準とした相対パスで指定します。指定したtypeがoidPolicyStoreの場合、この引数は必須です。
usersは、それぞれrealmName/userNameという形式で表されたユーザーのカンマ区切りリストを指定します。指定したtypeがxmlCredStoreの場合、この引数は必須です。
srcRealmは、引数srcJaznDataFileで渡されるファイル内の、移行するアイデンティティを識別するレルム名を指定します。指定したtypeがxmlIdStoreの場合、この引数は必須です。
dstは、引数jpsConfigFileで渡されるファイル内の、宛先ストアを構成しているjpsContextの名前を指定します。これはオプションです。指定しない場合は、デフォルトのjpsContextが使用されます。
srcAppでは、アプリケーション・ストライプを指定します。これは、srcJaznDataFileファイルおよびresourceTypeFileファイルに存在するアプリケーション名と一致する必要があります。この名前のストライプは、dstJaznDataFileファイルで作成します。
dstJaznDataFileでは、アプリケーション11.1.1.2.0のjazn-data.xmlファイルの場所を指定します。このファイルは、リソース・タイプとリソース・インスタンスを指定しており、srcJaznDataFileで指定した元のjazn-data.xmlにかわるものです。
resourceTypeFileでは、リソース・タイプを指定しているjazn-data.xmlファイルの場所を指定します。
次の例では、様々な目的のコマンドの使用を示しています。引数は、明確に提示できるように、個別の行に記述されています。
次のコマンドを起動すると、10.1.3のファイルベースのアイデンティティが11gリリース1(11.1.1)のファイルベースのアイデンティティ・ストアに移行します。
upgradeSecurityStore -type xmlIdStore 
                     -jpsConfigFile jps-config-idstore.xml
                     -srcJaznDataFile jazn-data.xml
                     -srcRealm jazn.com
このコマンドの使用では、(a)ファイルjps-config-idstore.xmlおよびjazn-data.xmlが、コマンドが実行されているディレクトリに格納されていること、(b)ファイルjps-config-idstore.xml内のデフォルトのjpsContextがターゲットのアイデンティティ・ストアを参照していること、および(c)ファイルjazn-data.xmlにjazn.comという名前のレルムが含まれていることを前提としています。
上のサンプルで使用されている2つのファイルから関連する部分を抜粋したものを次に示します。
<!-- excerpt from file jps-config-idstore.xml -->  
<serviceProviders>
   <serviceProvider name="R11idstore" class="oracle.security.jps.internal.idstore.xml.XmlIdentityStoreProvider" type="IDENTITY_STORE">
     <description>11g XML-based IdStore</description>
   </serviceProvider>
</serviceProviders>
...
<serviceInstances>
  <serviceInstance name="idstore.xml1" provider="R11idstore" location="./jazn-data-11.xml">
    <property name="subscriber.name" value="jazn.com"/>
    <property name="jps.xml.idstore.pwd.encoding" value="OBFUSCATE"/>
  </serviceInstance>
</serviceInstances> 
...
<jpsContexts default="default">
   <jpsContext name="default">
      <serviceInstanceRef ref="idstore.xml1" />
   </jpsContext>
</jpsContexts>
<!-- excerpt from jazn-data.xml -->
<jazn-realm>
          <realm>
                <name>jazn.com</name>
                    <users> ... </users>
    <roles> ... </roles>
  </realm>
</jazn-realm>
このサンプルを実行すると、要素<users>内のすべてのユーザーがXMLアイデンティティ・ストアR11idStoreに移行します。
次のコマンドを起動すると、10.1.4 Oracle Internet DirectoryのLDAPベースのポリシー・ストアが11gリリース1(11.1.1)Oracle Internet DirectoryのLDAPベースのポリシー・ストアに移行します。
upgradeSecurityStore -type oidPolicyStore 
                     -jpsConfigFile jps-config.xml
                     -srcJaznConfigFile jazn.xml
                     -dst destContext
この例に含まれる2つのXMLファイルの場所についての前提は、例2の場合とほぼ同じです。この他に、(a)ターゲットのOracle Internet Directory LDAPベースのポリシー・ストアを指すjpsContext destContextがファイルjps-config.xmlに含まれていること、および(b)移行するポリシーのOracle Internet Directory LDAPサーバーの場所がファイルjazn.xmlに記述されていることを前提としています。
ファイルjazn.xmlから関連する部分を抜粋したものを次に示します。
<jazn provider="LDAP" location="ldap://myCompany.com:3843"> <property name="ldap.user" value="cn=orcladmin"/> <property name="ldap.password" value="!welcome1"/> <property name="ldap.protocol" value="no-ssl"/> <property name="ldap.cache.policy.enable" value="false"/> <property name="ldap.initctx" value="com.sun.jndi.ldap.LdapCtxFactory"/> </jazn>
次のコマンドを起動すると、10.1.3のファイルベースのポリシー・ストアが11gリリース1(11.1.1)のポリシー・ストアに移行します。
upgradeSecurityStore -type xmlPolicyStore 
                     -jpsConfigFile jps-config.xml
                     -srcJaznDataFile jazn-data.xml
                     -dst destContext
このコマンドの使用では、コマンドの実行ディレクトリにファイルjps-config.xmlおよびjazn-data.xmlが格納されていること、およびファイルjps-config.xmlにdestContextという名前のjpsContextが記述されていることが前提となっています。
上のサンプルで使用されている2つのファイルから関連する部分を抜粋したものを次に示します。
<!-- excerpt from file jps-config.xml -->
<serviceProviders>
  <serviceProvider type="POLICY_STORE" name="policystore.xml.provider" class="oracle.security.jps.internal.policystore.xml.XmlPolicyStoreProvider">
  <description>R11 XML-based PolicyStore Provider</description>
        </serviceProvider>
</serviceProviders>
...
<serviceInstances>
  <serviceInstance name="policystore1.xml" provider="policystore.xml.provider">
  <property name="R11PolStore" value="jazn-data1.xml"/>
</serviceInstance>
...
<jpsContexts default="default1">
   <jpsContext name="default1"> ... </jpsContext>
   <jpsContext name="destContext">
       ...
       <serviceInstanceRef ref="policystore1.xml"/>
   </jpsContext>
</jpsContexts>
<!-- excerpt from jazn-data.xml -->
<jazn-realm>
          <realm>
                ...
    <roles> ... </roles>
  </realm>
</jazn-realm>
...
<jazn-policy> ... </jazn-policy>
このサンプルを起動すると、要素<roles>内のすべてのロールと要素<jazn-policy>内のすべてのポリシーがXMLポリシー・ストアR11PolStoreに移行します。
次のサンプルを実行すると、アプリケーション11.1.1.1.0のファイルベースのポリシー・ストアがアプリケーション11.1.1.2.0のファイルベースのポリシー・ストアにアップグレードされます。
updateSecurityStore -type xmlAppPolicies
                    -srcApp PolicyServlet1
                    -jpsConfigFile ./folder/jps-config.xml
                    -srcJaznDataFile ./11.1.1.1.0/jazn-data.xml
                    -dstJaznDataFile ./11.1.1.2.0/final-jazn-data.xml
                    -resourceTypeFile ./resCat/res-jazn-data.xml
 
このアップグレードの重要な点は、元の11.1.1.1.0ファイルではリソース・カタログの要素が使用されていませんが、アップグレード後の11.1.1.2.0ファイルではリソース・タイプおよびリソース・インスタンスの要素が使用されることです。
このコマンドでは、基本的に元のアプリケーションの構成ファイルとリソース・タイプの要素を指定する別のファイルを取得して新しい構成ファイルを作成します。この新しい構成ファイルは、元のファイルと同様にポリシーを指定していますが、リソース・カタログの指定を使用するように変更されています。
元の構成ファイルと新しいアプリケーション構成ファイルのアプリケーションに対する動作はまったく同じです。
このサンプルの実行では、次のことが前提となっています。
ソース・ファイル./11.1.1.1.0/jazn-data.xmlでアプリケーションPolicyServlet1のポリシーを指定している。
リソース・タイプ・ファイル./resCat/res-jazn-data.xmlでアプリケーションPolicyServlet1のリソース・タイプを指定している。
構成ファイル./folder/jps-config.xmlは任意の有効な構成ファイルで、監査サービス・インスタンスを使用していても、使用していなくてもかまわない。いずれの場合も、監査サービスを指定する必要があります。
次のサンプルは、3つのデータ・ファイル(入力ソースのjazn-data.xml、入力リソースのres-jazn-data.xmlおよび出力のfinal-jazn-data.xml)の関連部分を示しています。
入力ソース・ファイルjazn-data.xml
<policy-store>
  <applications>
    <application>
      <name>PolicyServlet1</name>
      <app-roles>
        <app-role>
          <name>myAppRole2</name>
          <display-name>application role myAppRole</display-name>
          <members>
            <member>
              <class>
oracle.security.jps.service.policystore.ApplicationRole</class>
              <name>myAppRole</name>
            </member>
          </members>
        </app-role>
        <app-role>
          <name>myAppRole</name>
          <display-name>application role myAppRole</display-name>
          <members>
            <member>
              <class>
oracle.security.jps.internal.core.principals.JpsXmlEnterpriseRoleImpl</class>
              <name>developers</name>
            </member>
          </members>
        </app-role>
        <app-role>
          <name>testrole_DATA</name>
          <display-name>application role test</display-name>
          <members>
            <member>
              <class>
oracle.security.jps.internal.core.principals.JpsXmlEnterpriseRoleImpl</class>
            <name>test-entrole</name>
          </member>
        </members>
      </app-role>
      <app-role>
        <name>myAppRole_PRIV</name>
        <display-name>application role private</display-name>
        <description>app role private description</description>
        <members>
          <member>
            <class>
oracle.security.jps.internal.core.principals.JpsXmlEnterpriseRoleImpl</class>
            <name>developers</name>
          </member>
          <member>
            <class>
oracle.security.jps.service.policystore.ApplicationRole</class>
            <name>myAppRole</name>
          </member>
        </members>
      </app-role>
    </app-roles>
    <jazn-policy>
      <grant>
        <grantee>
          <principals>
            <principal>
              <class>
oracle.security.jps.service.policystore.ApplicationRole</class>
              <name>myAppRole_PRIV</name>
            </principal>
          </principals>
        </grantee>
        <permissions>
          <permission>
            <class>oracle.security.jps.JpsPermission</class>
            <name>getClassLoader</name>
          </permission>
          <permission>
            <class>
oracle.adf.share.security.authorization.RegionPermission</class>
            <name>dummyName</name>
            <actions>view,edit</actions>
          </permission>
        </permissions>
      </grant>
      <grant>
        <grantee>
          <principals>
            <principal>
              <class>
oracle.security.jps.service.policystore.ApplicationRole</class>
              <name>myAppRole</name>
            </principal>
          </principals>
        </grantee>
        <permissions>
          <permission>
            <class>java.lang.XYZPermission</class>
            <name>newxyz</name>
          </permission>
        </permissions>
      </grant>
      <grant>
        <grantee>
          <principals>
            <principal>
              <class>
oracle.security.jps.internal.core.principals.JpsXmlEnterpriseRoleImpl</class>
              <name>test-entrole</name>
            </principal>
          </principals>
        </grantee>
        <permissions>
          <permission>
            <class>oracle.security.jps.JpsPermission</class>
            <name>newxy</name>
            <actions>view,edit</actions>
          </permission>
        </permissions>
      </grant>
    </jazn-policy>
  </application>
 </applications>
</policy-store>
入力リソース・ファイルres-jazn-data.xml
<jazn-data>
  <jazn-realm default="jazn.com">
  </jazn-realm>
  <policy-store>
    <applications>
      <application>
        <name>PolicyServlet1</name>
        <resource-types>
          <resource-type>
            <name>FileResourceType</name>
            <display-name>File Access</display-name>
            <description>Resource Type Modelling File Access</description>
            <provider-name>provider</provider-name>
            <matcher-class>oracle.security.jps.JpsPermission</matcher-class>
            <actions-delimiter>,</actions-delimiter>
            <actions>delete,write,read</actions>
          </resource-type>
        </resource-types>
        <jazn-policy>
        </jazn-policy>
      </application>
    </applications>
  </policy-store>
  <jazn-policy>
  </jazn-policy>
</jazn-data>
出力データ・ファイルfinal-jazn-data.xml
<jazn-data>
  <jazn-realm>
  </jazn-realm>
  <policy-store>
    <applications>
      <application>
        <name>PolicyServlet1</name>
        <app-roles>
          <app-role>
            <name>myAppRole2</name>
            <display-name>application role myAppRole</display-name>
            <guid>4341CC10EAFB11DE9F7F17D892026AF8</guid>
            <class>
oracle.security.jps.service.policystore.ApplicationRole</class>
            <members>
              <member>
                <class>
oracle.security.jps.service.policystore.ApplicationRole</class>
                <name>myAppRole</name>
                <guid>43428F60EAFB11DE9F7F17D892026AF8</guid>
              </member>
            </members>
          </app-role>
          <app-role>
            <name>myAppRole</name>
            <display-name>application role myAppRole</display-name>
            <guid>43428F60EAFB11DE9F7F17D892026AF8</guid>
            <class>
oracle.security.jps.service.policystore.ApplicationRole</class>
            <members>
              <member>
                <class>weblogic.security.principal.WLSGroupImpl</class>
                <name>developers</name>
              </member>
            </members>
          </app-role>
          <app-role>
            <name>testrole_DATA</name>
            <display-name>application role test role</display-name>
            <guid>4342B670EAFB11DE9F7F17D892026AF8</guid>
            <class>
oracle.security.jps.service.policystore.ApplicationRole</class>
            <members>
              <member>
                <class>weblogic.security.principal.WLSGroupImpl</class>
                <name>test-entrole</name>
              </member>
            </members>
          </app-role>
          <app-role>
            <name>myAppRole_PRIV</name>
            <display-name>application role private</display-name>
            <description>app role private description</description>
            <guid>4342B671EAFB11DE9F7F17D892026AF8</guid>
            <class>
oracle.security.jps.service.policystore.ApplicationRole</class>
            <members>
              <member>
                <class>
weblogic.security.principal.WLSGroupImpl</class>
                <name>developers</name>
              </member>
              <member>
                <class>
oracle.security.jps.service.policystore.ApplicationRole</class>
                <name>myAppRole</name>
                <guid>43428F60EAFB11DE9F7F17D892026AF8</guid>
              </member>
            </members>
          </app-role>
        </app-roles>
        <resource-types>
          <resource-type>
            <name>FileResourceType</name>
            <display-name>File Access</display-name>
            <description>Resource Type Modelling File Access</description>
            <provider-name>provider</provider-name>
            <matcher-class>oracle.security.jps.JpsPermission</matcher-class>
            <actions-delimiter>,</actions-delimiter>
            <actions>delete,write,read</actions>
          </resource-type>
        </resource-types>
        <resources>
          <resource>
            <name>getClassLoader</name>
            <type-name-ref>FileResourceType</type-name-ref>
          </resource>
          <resource>
            <name>newxy</name>
            <type-name-ref>FileResourceType</type-name-ref>
          </resource>
        </resources>
        <jazn-policy>
          <grant>
            <grantee>
              <principals>
                <principal>
                  <class>
oracle.security.jps.service.policystore.ApplicationRole</class>
                  <name>myAppRole_PRIV</name>
                  <guid>4342B671EAFB11DE9F7F17D892026AF8</guid>
                </principal>
              </principals>
            </grantee>
            <permissions>
              <permission>
                <class>oracle.security.jps.JpsPermission</class>
                <name>getClassLoader</name>
              </permission>
              <permission>
                <class>
oracle.adf.share.security.authorization.RegionPermission</class>
                <name>dummyName</name>
                <actions>view,edit</actions>
              </permission>
            </permissions>
            <permission-set-refs>
            </permission-set-refs>
          </grant>
          <grant>
            <grantee>
              <principals>
                <principal>
                  <class>
oracle.security.jps.service.policystore.ApplicationRole</class>
                  <name>myAppRole</name>
                  <guid>43428F60EAFB11DE9F7F17D892026AF8</guid>
                </principal>
              </principals>
            </grantee>
            <permissions>
              <permission>
                <class>java.lang.XYZPermission</class>
                <name>newxyz</name>
              </permission>
            </permissions>
            <permission-set-refs>
            </permission-set-refs>
          </grant>
          <grant>
            <grantee>
              <principals>
                <principal>
                  <class>
weblogic.security.principal.WLSGroupImpl</class>
                  <name>test-entrole</name>
                </principal>
              </principals>
            </grantee>
            <permissions>
              <permission>
                <class>oracle.security.jps.JpsPermission</class>
                <name>newxy</name>
                <actions></actions>
              </permission>
            </permissions>
            <permission-set-refs>
            </permission-set-refs>
          </grant>
        </jazn-policy>
      </application>
    </applications>
  </policy-store>
  <jazn-policy>
  </jazn-policy>
</jazn-data>