7 Database User Managementコネクタの拡張

特定のビジネス要件に対応するようにコネクタの機能を拡張できます。

7.1 事前定義済問合せの変更または新規問合せの作成

プロビジョニングおよびリコンシリエーション用の事前定義済の問合せについて、およびこれらの更新方法や要件に合う新しい問合せの作成方法について学習します。

7.1.1 Oracle Databaseの事前定義済問合せの理解

事前定義済の問合せ、プロビジョニングおよびリコンシリエーション操作で使用される問合せの構文、参照フィールド同期に使用される値リスト問合せの構文、および事前定義済の問合せの変更または新しい問合せの作成時に適用する必要があるガイドラインについて学習します。

7.1.1.1 Oracle Databaseの事前定義済問合せについて

コネクタには、ターゲット・システムのユーザー・レコードのリコンサイル、参照フィールド値とOracle Identity Governanceとの同期、およびプロビジョニング操作のために事前定義されたSQL問合せとストアド・プロシージャが用意されています。これらの事前定義済問合せを変更したり、独自の問合せを追加することができます。

たとえば、リコンシリエーション問合せファイルを見つけるには、コネクタ・インストール・パッケージ内の/bundle/org.identityconnectors.dbum-1.0.1116.jarファイルを抽出し、/scripts/oracle/Search.queriesファイルを開きます。

コネクタには次のタイプの問合せが含まれています。

  • プロビジョニング問合せ

    作成、更新および削除の操作で使用されます。問合せファイルはscripts/oracle/Provisioning.queriesです。

  • 値リスト検索問合せ

    参照定義のリコンシリエーションで使用されます。値リスト問合せは、プロファイル、権限、ロール、表領域などのフィールドの値セットに対して使用します。問合せファイルはscripts/oracle/LoVSearch.queriesです。

  • アカウント検索問合せ

    完全リコンシリエーション、増分リコンシリエーションおよびリコンシリエーション削除の操作に使用されます。アカウント検索問合せは、様々な条件でのアカウント検索およびグループ検索に対して使用します。問合せファイルはscripts/oracle/Search.queriesです。

    Oracle Databaseの事前定義済問合せを次に示します。

    • SEARCH_USER

      この問合せは、DBA_USERS表からすべてのユーザー・レコードをフェッチするために使用します。

    • BATCHED_SEARCH_USER

      この問合せは、指定された範囲内に存在するユーザー・レコードをDBA_USERS表からフェッチするために使用します。これは、ターゲット・リソースとして構成されたターゲット・システムでバッチ・リコンシリエーションを実行するために使用されます。

    • SEARCH_USER_ROLE

      この問合せは、DBA_ROLE_PRIVS表からすべてのユーザー・ロールをフェッチするために使用します。

    • SEARCH_USER_PRIVILEGE

      この問合せは、DBA_SYS_PRIVS表からすべてのユーザー権限をフェッチするために使用します。

ノート:

  • プロセス・フォームでライトバック用にストアド・プロシージャOUTパラメータを構成することはできません。戻された値をコネクタ操作に使用することはできません。

  • Oracle Databaseユーザーの更新操作は、ユーザーの作成時にそのユーザーに割り当てられた作成タイムスタンプに基づいて処理されます。増分リコンシリエーション時には、このタイムスタンプの後に作成されたユーザーのみがフェッチされます。ただし、タイムスタンプの後に更新されたユーザーはフェッチされません。

7.1.1.2 Oracle Databaseでのプロビジョニング問合せの構文

プロビジョニング操作で使用される問合せの構文は、次のとおりです。

QUERYID {

Query="QUERY"

QueryType="QUERYTYPE"

Parameters=["PARAM1":"PARAMDEFN1", "PARAM2":"PARAMDEFN2"...]

ExtensionJoin="EXTENSIONJOIN"

ExtensionSeparator="EXTENSIONSEPARATOR"

QueryExtensions=["EXTENSION1","EXTENSION2"...]

}

次に例を示します。

CREATE_EXTERNAL_USER {
    Query="CREATE USER {__NAME__} IDENTIFIED EXTERNALLY"
    QueryType="SQL"
    Parameters=["__NAME__":"Type:String,TAGS:DOUBLEQUOTES"]
    ExtensionJoin=","
    ExtensionSeparator=", "
    QueryExtensions=["TEMP_TABLESPACE_QUERY","TABLESPACE_QUERY","PROFILE_QUERY"]
}

この構文の説明は次のとおりです。

  • QUERYIDは、問合せの一意の名前です。

    例: CREATE_EXTERNAL_USER

    CREATEプロビジョニング問合せの場合、QUERYIDの書式は、CREATE_AUTHENTICATIONTYPE_ACCOUNTTYPEです。デフォルトのアカウント・タイプは、USERです。その他のプロビジョニング問合せでの書式は、OPERATIONTYPE_ATTRIBUTE (UPDATE_GLOBALDNなど)です。

  • QUERYは主問合せです。

    例: Query="CREATE USER {__NAME__} IDENTIFIED EXTERNALLY"

  • QueryTypeは主問合せのタイプ(SQL問合せまたはストアド・プロシージャ)です。QUERYTYPEの値は、SQLまたはStoredProcです。

    例: QueryType="SQL"

  • Parametersは主問合せで使用されるパラメータおよびパラメータ定義のカンマ区切りリストであり、"PARAM1":"PARAMDEFN1", "PARAM2":"PARAMDEFN2"などのように表されます。

    例: Parameters=["__NAME__":"Type:String,TAGS:DOUBLEQUOTES"]

    パラメータには次の属性を指定できます。

    • Typeはパラメータのタイプです。

    • Directionは、問合せとパラメータ間のデータの流れです。値はINOUTまたはINOUTです。

    • TAGSは、問合せの処理前に各パラメータに適用される囲み文字です。この値は、DOUBLEQUOTESQUOTESUPPERCASEまたはLOWERCASE.です。

      複数のタグを使用する場合、それらのタグをエスケープ・クォートで囲んで、カンマで区切る必要があります。ただし、同じ問合せ内でDOUBLEQUOTESQUOTES、またはUPPERCASELOWERCASEを一緒に使用することはできません。

      例: "Type:String,TAGS:\"DOUBLEQUOTES,UPPERCASE\"

  • ExtensionJoin (オプション)はEXTENSIONJOINで表される演算子であり、主問合せを問合せ拡張と結合するために使用されます。

    例: ExtensionJoin=","

  • ExtensionSeparator (オプション)は問合せ拡張間のデリミタであり、EXTENSIONSEPARATORで表されます。

    例: ExtensionSeparator=", "

  • QueryExtensions (オプション)は主問合せに追加する必要のある拡張であり、EXTENSION1EXTENSION2などのように表されます。

    例: QueryExtensions=["TEMP_TABLESPACE_QUERY","TABLESPACE_QUERY","PROFILE_QUERY"]

プロビジョニング操作時に、コネクタによってこれらすべての構成要素が次の問合せに結合されます。

QUERY PARAM1, PARAM2... [EXTENSIONJOIN [EXTENSION1 EXTENSIONSEPARATOR EXTENSION2 EXTENSIONSEPARATOR...]]

次に例を示します。

CREATE USER {__NAME__} IDENTIFIED EXTERNALLY, TEMP_TABLESPACE_QUERY, TABLESPACE_QUERY, PROFILE_QUERY

表7-1に、プロビジョニング問合せのスクリプト選択ロジックを示します。

表7-1 Oracleのプロビジョニング問合せのスクリプト選択ロジック

操作 選択ロジック 問合せID

CREATE

CREATE_AUTHTYPE_OBJECTYPE

CREATE_PASSWORD_USER

CREATE_GLOBAL_USER

CREATE_EXTERNAL_USER

DELETE

DELETE_OBJECTTTYPE

DELETE_USER

ENABLE

ENABLE_OBJECTTYPE

ENABLE_USER

DISABLE

DISABLE_OBJECTTYPE

DISABLE_USER

RESET PASSWORD

SET_PASSWORD

SET_PASSWORD

UPDATE

UPDATE_ATTRIBUTE

UPDATE_TABLESPACE

UPDATE_DEFAULTQUOTA

UPDATE_GLOBALDN

UPDATE_PROFILE

UPDATE_TEMPTABLESPACE

ADD CHILD VALUES

UPDATE_ADD_ATTRIBUTE

UPDATE_ADD_ROLES

UPDATE_ADD_PRIVILEGES

REMOVE CHILD VALUES

UPDATE_REVOKE_ATTRIBUTE

UPDATE_REVOKE_ROLES

UPDATE_REVOKE_PRIVILEGES

7.1.1.3 Oracle Databaseでのリコンシリエーション問合せの構文

リコンシリエーション操作時に使用される検索問合せの構文を次に示します。

QUERYID {

Query="QUERY"

QueryType="QUERYTYPE"

Parameters=["PARAM1":"PARAMDEFN1", "PARAM2":"PARAMDEFN2"...]

ExtensionJoin="EXTENSIONJOIN"

ExtensionSeparator="EXTENSIONSEPARATOR"

QueryExtensions=["EXTENSION1","EXTENSION2"...]

}

次に例を示します。

SEARCH_USER {
    Query="SELECT {__UID__}, {authType}, {externalname}, {tablespace}, {status}, {tempTableSpace}, {profile}," +
        " {defaultQuota}, {tmpQuota}, {lastModified} FROM  DBA_USERS dba {filter}"
    QueryType="SQL"
    Parameters=["__UID__":"Type:String,Direction:OUT,ColName:USERNAME",
            "authType":"Type:String,Direction:OUT,ColName:PASSWORD,ColQuery:\"DECODE(PASSWORD, 'EXTERNAL', 'EXTERNAL', 'GLOBAL', 'GLOBAL', 'PASSWORD')\"",
            "tablespace":"Type:String,Direction:OUT,ColName:DEFAULT_TABLESPACE",
            "tmpQuota":"Type:String,Direction:OUT,ColName:TEMPORARY_TABLESPACE_QUOTA,ColQuery:(SELECT MAX_BYTES FROM DBA_TS_QUOTAS WHERE dba.USERNAME = USERNAME AND TABLESPACE_NAME = dba.TEMPORARY_TABLESPACE)",
            "defaultQuota":"Type:String,Direction:OUT,ColName:DEFAULT_TABLESPACE_QUOTA,ColQuery:(SELECT MAX_BYTES FROM DBA_TS_QUOTAS WHERE dba.USERNAME = USERNAME AND TABLESPACE_NAME = dba.DEFAULT_TABLESPACE)",
            "externalname":"Type:String,Direction:OUT,ColName:EXTERNAL_NAME",
            "status":"Type:String,Direction:OUT,ColName:ACCOUNT_STATUS",
            "tempTableSpace":"Type:String,Direction:OUT,ColName:TEMPORARY_TABLESPACE",
            "profile":"Type:String,Direction:OUT,ColName:PROFILE",
            "lastModified":"Type:long,Direction:OUT,ColName:TIMESTAMP, ColQuery:\"((CREATED - TO_DATE('01011970','ddmmyyyy')) *24*60*60*1000)\""]
    QueryExtensions=["SEARCH_USER_ROLE", "SEARCH_USER_PRIVILEGE"]
}

この構文の説明は次のとおりです。

  • QUERYIDは、問合せの一意の名前です。

    例: SEARCH_USER

    QUERYIDの値は次のいずれかです。

    • SEARCH_USER

    • BATCHED_SEARCH_USER

    • SEARCH_USER_ROLE

    • SEARCH_USER_PRIVILEGE

  • QUERYは主問合せです。

    例: Query="SELECT {__UID__}, {authType}, {externalname}, {tablespace}, {status}, {tempTableSpace}, {profile}," + " {defaultQuota}, {tmpQuota}, {lastModified} FROM DBA_USERS dba {filter}"

  • QueryTypeは主問合せのタイプであり、SQL問合せ、ストアド・プロシージャまたは問合せ拡張のいずれかです。QUERYTYPEの値は、SQLStoredProcまたはQUERYEXTENSIONです。

    例: QueryType="SQL"

  • Parametersは主問合せで使用されるパラメータおよびパラメータ定義のカンマ区切りリストであり、"PARAM1":"PARAMDEFN1", "PARAM2":"PARAMDEFN2"などのように表されます。

    次に例を示します。

    Parameters=["__UID__":"Type:String,Direction:OUT,ColName:USERNAME",

    "authType":"Type:String,Direction:OUT,ColName:PASSWORD,ColQuery:\"DECODE(PASSWORD, 'EXTERNAL', 'EXTERNAL', 'GLOBAL', 'GLOBAL', 'PASSWORD')\""]

    パラメータには次の属性を指定できます。

    • Typeはパラメータのタイプです。

    • Directionは、問合せとパラメータ間のデータの流れです。値はINOUTまたはINOUTです。

    • ColNameは、問合せ内のパラメータに対応するターゲット・システム内の列名です。

    • ColQueryは、対応する問合せパラメータの値をフェッチするために使用される問合せです。

  • ExtensionJoin (オプション)はEXTENSIONJOINで表される演算子であり、主問合せを問合せ拡張と結合するために使用されます。

    例: ExtensionJoin=","

  • ExtensionSeparator (オプション)は問合せ拡張間のデリミタであり、EXTENSIONSEPARATORで表されます。

    例: ExtensionSeparator=", "

  • QueryExtensions (オプション)は主問合せに追加する必要のある拡張であり、EXTENSION1EXTENSION2などのように表されます。

    例: QueryExtensions=["SEARCH_USER_ROLE", "SEARCH_USER_PRIVILEGE"]

リコンシリエーション操作時に、コネクタによってこれらすべての構成要素が次の問合せに結合されます。

QUERY PARAM1, PARAM2... [EXTENSIONJOIN [EXTENSION1 EXTENSIONSEPARATOR EXTENSION2 EXTENSIONSEPARATOR...]]

次に例を示します。

SELECT {__UID__}, {authType}, {externalname}, {tablespace}, {status}, {tempTableSpace}, {profile}, {defaultQuota}, {tmpQuota}, {lastModified} FROM DBA_USERS dba {filter}, SEARCH_USER_ROLE, SEARCH_USER_PRIVILEGE

7.1.1.4 Oracle Databaseでの値リスト問合せの構文

User Nameなどのアカウント・タイプに対して検索問合せが実行された場合、その問合せはリコンシリエーション問合せとみなされます。それ以外のオブジェクトに対して検索問合せが実行された場合、その問合せは値リスト問合せとみなされます。

参照フィールド同期に使用される値リスト問合せの構文を次に示します。

OBJECTTYPE = "QUERY"

次に例を示します。

__PROFILE__="SELECT DISTINCT profile FROM dba_profiles"

この構文の説明は次のとおりです。

  • OBJECTTYPEは参照フィールド属性です。

    例: __PROFILE__

  • QUERYは、参照フィールド属性をフェッチするために使用される問合せです。

    例: SELECT DISTINCT profile FROM dba_profiles

値リスト問合せでは、参照フィールドのエントリとして使用される値が戻されます。デフォルトでは、コネクタには各参照定義に専用のスケジュール済ジョブが含まれています。カスタム参照定義を使用するには、カスタム・フィールドを問合せファイルに追加する必要があります。

7.1.1.5 Oracle Databaseからのリコンシリエーションで使用される検索問合せの構成に関するガイドライン

次に、リコンシリエーションのための問合せの変更または作成を行うときに従う必要があるガイドラインを示します。

  • リコンシリエーション問合せのSELECT句で列を追加または削除することにより、リコンシリエーションのためのターゲット・システム属性のリストで属性を追加または削除します。リコンサイルされる属性のリストの変更(追加または削除)をコネクタが処理できるように、コネクタのプロビジョニングの部分で対応する変更を行う必要があります。

    読取り専用属性が存在する場合、個々のプロセス・フォームで読取り専用属性に対する更新を無効化する必要があります。

  • 問合せプロパティ・ファイル内の事前定義済問合せの名前は変更しないでください。

  • 一部の事前定義済問合せでは内部問合せが使用されます。外部問合せの列を追加または削除する場合は、内部問合せもそれに応じて変更する必要があります。

  • 「ユーザー名」リソース・オブジェクト属性に対応する列は削除できません。

  • 「パラメータ」リストに含まれている次の条件が削除されていないことを確認する必要があります。

    "lastModified":"Type:long,Direction:IN,ColQuery:\"((CREATED - TO_DATE('01011970','ddmmyyyy')) *24*60*60*1000)\""]
    

    この条件は、増分リコンシリエーション属性スケジュール済ジョブ属性に格納されているタイムスタンプの後にターゲット・システム・レコードが追加または更新されたかどうかを判別するために使用されます。

  • 日付リテラルの書式は、必ずTO_DATE関数を使用して指定します。たとえば、日付値を'31-Dec-4712'と指定するかわりにTO_DATE('31-Dec-4712','DD-Mon-YYYY')を使用します。

  • プロパティ・ファイル内の問合せのSELECT句の列を追加または削除した場合は、子属性とターゲット・システム列名の間のマッピングが含まれる属性マッピング参照定義を更新する必要があります。さらに、他のOIMオブジェクトも更新する必要があります。

  • Search.queriesファイル内の問合せを変更または追加する前に、標準データベース・クライアントを使用してこの問合せを実行し、ターゲット・システム・データベースで実行したときに必要な結果が生成されることを確認する必要があります。

7.1.2 MySQLの事前定義済問合せの理解

事前定義済の問合せ、プロビジョニングおよびリコンシリエーション操作で使用される問合せの構文、および参照フィールド同期に使用される値リスト問合せの構文について学習します。

7.1.2.1 MySQLデータベースの問合せについて

コネクタには、ターゲット・システムのユーザー・レコードのリコンサイル、参照フィールド値とOracle Identity Governanceとの同期、およびプロビジョニング操作のために事前定義されたSQL問合せとストアド・プロシージャが用意されています。これらの事前定義済問合せを変更したり、独自の問合せを追加することができます。

たとえば、リコンシリエーション問合せファイルを見つけるには、コネクタ・インストール・パッケージ内の/bundle/org.identityconnectors.dbum-1.0.1116.jarファイルを抽出し、/scripts/mysql/Search.queriesファイルを開きます。

コネクタには次のタイプの問合せが含まれています。

  • プロビジョニング問合せ

    作成、更新および削除の操作で使用されます。問合せファイルは/scripts/mysql/Provisioning.queriesです。

  • 値リスト検索問合せ

    参照定義のリコンシリエーションで使用されます。値リスト問合せは、プロファイル、権限、ロール、表領域などのフィールドの値セットに対して使用します。問合せファイルは/scripts/mysql/LoVSearch.queriesです。

  • アカウント検索問合せ

    完全リコンシリエーション操作および削除リコンシリエーション操作で使用されます。アカウント検索問合せは、様々な条件でのアカウント検索およびグループ検索に対して使用します。問合せファイルは/scripts/mysql/Search.queriesです。

    Oracle Databaseの事前定義済問合せを次に示します。

    • SEARCH_USER

      この問合せは、mysql.user表からすべてのユーザー・レコードをフェッチするために使用します。

    • BATCHED_SEARCH_USER

      この問合せは、指定された範囲内に存在するユーザー・レコードをmysql.user表からフェッチするために使用します。これは、ターゲット・リソースとして構成されたターゲット・システムでバッチ・リコンシリエーションを実行するために使用されます。

    • SEARCH_USER_ROLE

      この問合せは、information_schema.SCHEMA_PRIVILEGES表からすべてのユーザー・ロールをフェッチするために使用します。

    • SEARCH_USER_PRIVILEGE

      この問合せは、DBA_SYS_PRIVS表からすべてのユーザー権限をフェッチするために使用します。

ノート:

プロセス・フォームでライトバック用にストアド・プロシージャOUTパラメータを構成することはできません。戻された値をコネクタ操作に使用することはできません。

7.1.2.2 MySQLデータベースでのプロビジョニング問合せの構文

プロビジョニング操作で使用される問合せの構文は、次のとおりです。

QUERYID {

Query="QUERY"

QueryType="QUERYTYPE"

Parameters=["PARAM1":"PARAMDEFN1", "PARAM2":"PARAMDEFN2"...]

ExtensionJoin="EXTENSIONJOIN"

ExtensionSeparator="EXTENSIONSEPARATOR"

QueryExtensions=["EXTENSION1","EXTENSION2"...]

}

次に例を示します。

CREATE_USER {
    Query="CREATE USER {__NAME__} IDENTIFIED BY {__PASSWORD__}"
    QueryType="SQL"
    Parameters=["__NAME__":"Type:String","__PASSWORD__":"Type:GuardedString,TAGS:QUOTES"]
    QueryExtensions=[]
}

この構文の説明は次のとおりです。

  • QUERYIDは、問合せの一意の名前です。

    例: CREATE_USER

  • QUERYは主問合せです。

    例: Query="CREATE USER {__NAME__} IDENTIFIED BY {__PASSWORD__}"

  • QueryTypeは主問合せのタイプ(SQL問合せまたはストアド・プロシージャ)です。QUERYTYPEの値は、SQLまたはStoredProcです。

    例: QueryType="SQL"

  • Parametersは主問合せで使用されるパラメータおよびパラメータ定義のカンマ区切りリストであり、"PARAM1":"PARAMDEFN1", "PARAM2":"PARAMDEFN2"などのように表されます。

    例: Parameters=["__NAME__":"Type:String","__PASSWORD__":"Type:GuardedString,TAGS:QUOTES"]

    パラメータには次の属性を指定できます。

    • Typeはパラメータのタイプです。

    • Directionは、問合せとパラメータ間のデータの流れです。値はINOUTまたはINOUTです。

    • TAGSは、問合せの処理前に各パラメータに適用される囲み文字です。この値は、DOUBLEQUOTESQUOTESUPPERCASEまたはLOWERCASE.です。

      複数のタグを使用する場合、それらのタグをエスケープ・クォートで囲んで、カンマで区切る必要があります。ただし、同じ問合せ内でDOUBLEQUOTESQUOTES、またはUPPERCASELOWERCASEを一緒に使用することはできません。

      例: "Type:String,TAGS:\"DOUBLEQUOTES,UPPERCASE\"

  • ExtensionJoin (オプション)はEXTENSIONJOINで表される演算子であり、主問合せを問合せ拡張と結合するために使用されます。

    例: ExtensionJoin=","

  • ExtensionSeparator (オプション)は問合せ拡張間のデリミタであり、EXTENSIONSEPARATORで表されます。

    例: ExtensionSeparator=", "

  • QueryExtensions (オプション)は主問合せに追加する必要のある拡張であり、EXTENSION1EXTENSION2などのように表されます。

プロビジョニング操作時に、コネクタによってこれらすべての構成要素が次の問合せに結合されます。

QUERY PARAM1, PARAM2... [EXTENSIONJOIN [EXTENSION1 EXTENSIONSEPARATOR EXTENSION2 EXTENSIONSEPARATOR...]]

次に例を示します。

CREATE USER {__NAME__} IDENTIFIED BY {__PASSWORD__}

表7-2に、プロビジョニング問合せのスクリプト選択ロジックを示します。

表7-2 MySQLのプロビジョニング問合せのスクリプト選択ロジック

操作 選択ロジック 問合せID

CREATE

CREATE_OBJECTYPE

CREATE_USER

DELETE

DELETE_OBJECTTTYPE

DELETE_USER

RESET PASSWORD

SET_PASSWORD

SET_PASSWORD

ADD CHILD VALUES

UPDATE_ADD_ATTRIBUTE

UPDATE_ADD_PRIVILEGES

REMOVE CHILD VALUES

UPDATE_REVOKE_ATTRIBUTE

UPDATE_REVOKE_PRIVILEGES

7.1.2.3 MySQLデータベースでのリコンシリエーション問合せの構文

リコンシリエーション操作時に使用される検索問合せの構文を次に示します。

QUERYID {

Query="QUERY"

QueryType="QUERYTYPE"

Parameters=["PARAM1":"PARAMDEFN1", "PARAM2":"PARAMDEFN2"...]

ExtensionJoin="EXTENSIONJOIN"

ExtensionSeparator="EXTENSIONSEPARATOR"

QueryExtensions=["EXTENSION1","EXTENSION2"...]

}

次に例を示します。

SEARCH_USER {
    Query="SELECT {__UID__} FROM MYSQL.USER {filter}"
    QueryType="SQL"
    Parameters=["__UID__":"Type:String,Direction:OUT,ColName:USER"]
    QueryExtensions=["SEARCH_USER_PRIVILEGE"]
}

この構文の説明は次のとおりです。

  • QUERYIDは、問合せの一意の名前です。

    例: SEARCH_USER

    QUERYIDの値は次のいずれかです。

    • SEARCH_USER

    • BATCHED_SEARCH_USER

    • SEARCH_USER_PRIVILEGE

  • QUERYは主問合せです。

    例: Query="SELECT {__UID__} FROM MYSQL.USER {filter}"

  • QueryTypeは主問合せのタイプであり、SQL問合せ、ストアド・プロシージャまたは問合せ拡張のいずれかです。QUERYTYPEの値は、SQLStoredProcまたはQUERYEXTENSIONです。

    例: QueryType="SQL"

  • Parametersは主問合せで使用されるパラメータおよびパラメータ定義のカンマ区切りリストであり、"PARAM1":"PARAMDEFN1", "PARAM2":"PARAMDEFN2"などのように表されます。

    次に例を示します。

    Parameters=["__UID__":"Type:String,Direction:OUT,ColName:USER"]

    パラメータには次の属性を指定できます。

    • Typeはパラメータのタイプです。

    • Directionは、問合せとパラメータ間のデータの流れです。値はINOUTまたはINOUTです。

    • ColNameは、問合せ内のパラメータに対応するターゲット・システム内の列名です。

    • ColQueryは、対応する問合せパラメータの値をフェッチするために使用される問合せです。

  • ExtensionJoin (オプション)はEXTENSIONJOINで表される演算子であり、主問合せを問合せ拡張と結合するために使用されます。

    例: ExtensionJoin=","

  • ExtensionSeparator (オプション)は問合せ拡張間のデリミタであり、EXTENSIONSEPARATORで表されます。

    例: ExtensionSeparator=", "

  • QueryExtensions (オプション)は主問合せに追加する必要のある拡張であり、EXTENSION1EXTENSION2などのように表されます。

    例: QueryExtensions=["SEARCH_USER_PRIVILEGE"]

リコンシリエーション操作時に、コネクタによってこれらすべての構成要素が次の問合せに結合されます。

QUERY PARAM1, PARAM2... [EXTENSIONJOIN [EXTENSION1 EXTENSIONSEPARATOR EXTENSION2 EXTENSIONSEPARATOR...]]

次に例を示します。

SELECT {__UID__} FROM MYSQL.USER {filter} SEARCH_USER_PRIVILEGE

7.1.2.4 MySQLデータベースでの値リスト問合せの構文

User Nameなどのアカウント・タイプに対して検索問合せが実行された場合、その問合せはリコンシリエーション問合せとみなされます。それ以外のオブジェクトに対して検索問合せが実行された場合、その問合せは値リスト問合せとみなされます。

参照フィールド同期に使用される値リスト問合せの構文を次に示します。

OBJECTTYPE = "QUERY"

次に例を示します。

__PRIVILEGES__="SELECT CONCAT(p.PRIVILEGE_TYPE, ' ON ',s.SCHEMA_NAME) SchemaPrivilege FROM INFORMATION_SCHEMA.SCHEMATA s,INFORMATION_SCHEMA.SCHEMA_PRIVILEGES p"

この構文の説明は次のとおりです。

  • OBJECTTYPEは参照フィールド属性です。

    例: __PRIVILEGES__

  • QUERYは、参照フィールド属性をフェッチするために使用される問合せです。

    例: SELECT CONCAT(p.PRIVILEGE_TYPE, ' ON ',s.SCHEMA_NAME) SchemaPrivilege FROM INFORMATION_SCHEMA.SCHEMATA s,INFORMATION_SCHEMA.SCHEMA_PRIVILEGES p

値リスト問合せでは、参照フィールドのエントリとして使用される値が戻されます。デフォルトでは、コネクタには各参照定義に専用のスケジュール済ジョブが含まれています。カスタム参照定義を使用するには、カスタム・フィールドを問合せファイルに追加する必要があります。

7.1.3 カスタム・パラメータおよび参照フィールドのサポートを追加するための問合せの構成

コネクタでは、作成、削除、検索などのコネクタ操作に対して事前定義済問合せが使用されます。要件に応じて、カスタム・パラメータおよび参照定義フィールドを追加できます。

次の各項では、パラメータまたは参照定義フィールドを問合せファイルに追加する手順について説明します。

7.1.3.1 問合せファイルの更新

Oracle DatabaseまたはMySQLの問合せファイルを更新するには、次のようにします。
  1. Oracle Identity GovernanceのJARダウンロード・ユーティリティを実行して、Oracle Identity Governanceデータベースからコネクタ・バンドルJARファイルをダウンロードします。このユーティリティは、Oracle Identity Governanceのインストール時に次の場所にコピーされます。

    ノート:

    このユーティリティを使用する前に、Oracle WebLogic ServerをインストールしたディレクトリにWL_HOME環境変数が設定されていることを確認してください。

    Microsoft Windowsの場合:

    OIM_HOME/server/bin/DownloadJars.bat

    UNIXの場合:

    OIM_HOME/server/bin/DownloadJars.sh

    このユーティリティを実行する場合、Oracle Identity Governance管理者のログイン資格証明、Oracle Identity Governanceホスト・コンピュータのURL、コンテキスト・ファクトリ値、ダウンロード対象のJARファイルのタイプ、およびJARファイルのダウンロード元の場所を入力するよう求められます。ICFBundleをJARタイプとして選択します。

  2. バンドルJARファイルを一時ディレクトリにコピーします。

    サンプルJARファイル: bundle/org.identityconnectors.dbum-12.3.0.jar

    サンプル一時ディレクトリ: c:\temp

  3. 次のコマンドを実行して、コネクタ・バンドルJARファイルを抽出します。
    jar -xvf org.identityconnectors.dbum-12.3.0.jar
    

    ノート:

    また、WinZipまたはWinRARユーティリティを実行して、JARファイルからコンテンツを抽出することもできます。

  4. 一時ディレクトリ内のバンドルJARファイルを削除します。
  5. 要件に応じて、問合せ構文に従って新しいパラメータを使用して問合せファイルを更新します。
    • Oracle Databaseの場合:

      たとえば、新しいパラメータtmpQuotaをCREATE_USERプロビジョニング問合せに追加する場合は、次のようにします。

      1. テキスト・エディタで、プロビジョニング問合せファイルを開きます。

        サンプル問合せファイル: c:\temp\bundle\org.identityconnectors.dbum-12.3.0\scripts\oracle\Provisioning.queries

      2. パラメータtmpQuotaCREATE_USER問合せに追加します。

        更新済のサンプル問合せを次に示します。

        CREATE_USER {
            Query="CREATE USER {__NAME__} IDENTIFIED BY {__PASSWORD__} TEMPORARY QUOTA {tmpQuota} ON {tempTableSpace}"
            QueryType="SQL"
            Parameters=["__NAME__":"Type:String,TAGS:DOUBLEQUOTES", "__PASSWORD__":"Type:GuardedString,TAGS:DOUBLEQUOTES", "tmpQuota":"Type:String", "tempTableSpace":"Type:String,Tags:EXCLUDE_VALIDATION"]
            QueryExtensions=["TABLESPACE_QUERY","TEMP_TABLESPACE_QUERY","PROFILE_QUERY","DEFAULTS_QUOTA_QUERY","TEMPTS_QUOTA_QUERY"]
        }
      3. 問合せファイルを保存して閉じます。

    • MySQLの場合:

      たとえば、新しいパラメータCUSTOM_ATTRIBUTEをCREATE_USERプロビジョニング問合せに追加する場合は、次のようにします。

      1. テキスト・エディタで、プロビジョニング問合せファイルを開きます。

        サンプル問合せファイル: c:\temp\bundle\org.identityconnectors.dbum-12.3.0\scripts\mysql\Provisioning.queries

      2. パラメータCUSTOM_ATTRIBUTECREATE_USER問合せに追加します。

        更新済のサンプル問合せを次に示します。

        CREATE_USER {
            Query="CREATE USER {__NAME__} IDENTIFIED BY {__PASSWORD__}, {CUSTOM_ATTRIBUTE}"
            QueryType="SQL"
            Parameters=["__NAME__":"Type:String", "__PASSWORD__":"Type:GuardedString,TAGS:QUOTES", "CUSTOM_ATTRIBUTE":"Type:String,Direction:IN"]
            QueryExtensions=[]
        }
      3. 問合せファイルを保存して閉じます。

  6. 次のようにして、更新済マニフェスト・ファイルおよびプロビジョニング問合せファイルを含む新しいバンドルJARファイルを作成します。
    1. コマンド・プロンプトを開いて、一時ディレクトリc:\tempに移動します。
    2. 次のコマンドを実行して、コネクタ・バンドル(org.identityconnectors.dbum-12.3.0.jar)を再生成します。
      jar -cvfm org.identityconnectors.dbum-12.3.0.jar META-INF/MANIFEST.MF * 

      ノート:

      コネクタ・バンドルの更新中にMETA-INF\MANIFEST.MFファイルが変更されていないことを確認します。
  7. リモート・コネクタ・サーバーの場合、JARファイルをOracle Identity Governanceデータベースに転送するのではなく、新しいバンドルJARファイルをリモート・コネクタ・サーバーのbundlesディレクトリにコピーします。
  8. Oracle Identity Governance JARアップロード・ユーティリティを実行して、再生成したコネクタ・バンドルをOracle Identity Governanceデータベースにアップロードします。このユーティリティは、Oracle Identity Governanceのインストール時に次の場所にコピーされます。

    ノート:

    このユーティリティを使用する前に、Oracle WebLogic ServerをインストールしたディレクトリにWL_HOME環境変数が設定されていることを確認してください。
    • Microsoft Windowsの場合:

      OIM_HOME/server/bin/UploadJars.bat

    • UNIXの場合:

      OIM_HOME/server/bin/UploadJars.sh

    このユーティリティを実行する場合、Oracle Identity Governance管理者のログイン資格証明、Oracle Identity Governanceホスト・コンピュータのURL、コンテキスト・ファクトリ値、アップロード対象のJARファイルのタイプ、およびJARファイルのアップロード元の場所を入力するよう求められます。JARタイプの値として4 (ICFバンドル)を指定します。

関連項目:

更新する必要がある問合せの構文の詳細は、「Oracle Databaseの事前定義済問合せの理解」または「MySQLの事前定義済問合せの理解」を参照してください
7.1.3.2 カスタム・パラメータ用のOracle Identity Governanceの構成

問合せファイルに追加したカスタム・パラメータをOracle Identity Governanceのスキーマ・フォームに追加します。

ノート:

追加したパラメータがOracle Identity Governanceのデフォルトのフォーム・フィールドとしてすでに存在している場合、この手順は省略します。

問合せファイルに追加したパラメータをIdentity Self Serviceのスキーマ・フォームに追加するには、『Oracle Fusion Middleware Oracle Identity Governanceでのセルフ・サービス・タスクの実行』ターゲット・アプリケーションのスキーマ情報の提供または認可アプリケーションのスキーマ情報の提供に関する項を参照してください。

たとえば、ターゲット・システムとしてOracle Databaseを使用しており、tmpQuotaパラメータをCREATE_USERプロビジョニング問合せに追加する場合、Identity Self Service内のアプリケーションに対応するスキーマ・フォームを更新し、新しく追加したパラメータの詳細を含めます。次にサンプル値を示します。

  • Display Name: Temporary Quota

  • Target Name: tmpQuota

  • DataType: String

  • Provisioning Field?: Yes

7.2 データの変換および検証の構成

アプリケーションの作成時にGroovyスクリプト・ロジックを作成することにより、ユーザー・アカウント・データの変換と検証を構成します。

要件に応じて、リコンサイルされた単一値ユーザー・データの変換を構成できます。たとえば、「名」および「姓」値を使用して、Oracle Identity Governanceの「氏名」フィールドの値を作成できます。

同様に、要件に応じて、リコンサイルおよびプロビジョニングされた単一値データの検証を構成できます。たとえば、「名」属性からフェッチしたデータを検証して、そのデータに番号記号(#)が含まれていないことを確認します。また、プロセス・フォームの「名」フィールドに入力したデータを検証して、プロビジョニング操作中にターゲット・システムに番号記号(#)が送信されないようにします。

ユーザー・アカウント・データの変換または検証を構成するには、アプリケーションの作成時にGroovyスクリプトを作成する必要があります。Groovyスクリプト・ベースの検証および変換ロジックの作成の詳細は、『Oracle Fusion Middleware Oracle Identity Governanceでのセルフ・サービス・タスクの実行』プロビジョニングおよびリコンシリエーション属性の検証および変換に関する項を参照してください。

7.3 アクション・スクリプトの構成

アプリケーションの作成時に独自のGroovyスクリプトを作成することにより、アクション・スクリプトを構成できます。

これらのスクリプトは、アカウントの作成、更新または削除のプロビジョニング操作の前または後に実行するように構成できます。たとえば、あるスクリプトを、個々のユーザー作成操作前に実行するように構成できます。

アクション・スクリプトの追加または編集の詳細は、『Oracle Fusion Middleware Oracle Identity Governanceでのセルフ・サービス・タスクの実行』プロビジョニング構成の更新に関する項を参照してください。

7.4 ターゲット・システムの複数のインストールに対するコネクタの構成

ベース・アプリケーションの構成のコピーを作成して、ターゲット・システムの複数のインストールに対して構成する必要があります。

次の例でこの要件について説明します。

Example Multinational Inc.のロンドンとニューヨークのオフィスには、ターゲット・システムが独自にインストールされており、それぞれに独立したスキーマが使用されています。最近、この会社では、Oracle Identity Governanceをインストールし、これを構成してインストールされたすべてのターゲット・システムをリンクしようとしています。

このようなシナリオによって提起される要件を満たすために、アプリケーションをクローニングし、クローニングしたアプリケーションにベース・アプリケーションのすべての構成がコピーされるようにする必要があります。アプリケーションのクローニングの詳細は、『Oracle Fusion Middleware Oracle Identity Governanceでのセルフ・サービス・タスクの実行』アプリケーションのクローニングに関する項を参照してください。