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は、問合せとパラメータ間のデータの流れです。値は
IN
、OUT
またはINOUT
です。 -
TAGSは、問合せの処理前に各パラメータに適用される囲み文字です。この値は、
DOUBLEQUOTES
、QUOTES
、UPPERCASE
またはLOWERCASE.
です。複数のタグを使用する場合、それらのタグをエスケープ・クォートで囲んで、カンマで区切る必要があります。ただし、同じ問合せ内で
DOUBLEQUOTES
とQUOTES
、またはUPPERCASE
とLOWERCASE
を一緒に使用することはできません。例:
"Type:String,TAGS:\"DOUBLEQUOTES,UPPERCASE\"
-
-
ExtensionJoin (オプション)はEXTENSIONJOINで表される演算子であり、主問合せを問合せ拡張と結合するために使用されます。
例:
ExtensionJoin=","
-
ExtensionSeparator (オプション)は問合せ拡張間のデリミタであり、EXTENSIONSEPARATORで表されます。
例:
ExtensionSeparator=", "
-
QueryExtensions (オプション)は主問合せに追加する必要のある拡張であり、EXTENSION1、EXTENSION2などのように表されます。
例:
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の値は、
SQL
、StoredProc
または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は、問合せとパラメータ間のデータの流れです。値は
IN
、OUT
またはINOUT
です。 -
ColNameは、問合せ内のパラメータに対応するターゲット・システム内の列名です。
-
ColQueryは、対応する問合せパラメータの値をフェッチするために使用される問合せです。
-
-
ExtensionJoin (オプション)はEXTENSIONJOINで表される演算子であり、主問合せを問合せ拡張と結合するために使用されます。
例:
ExtensionJoin=","
-
ExtensionSeparator (オプション)は問合せ拡張間のデリミタであり、EXTENSIONSEPARATORで表されます。
例:
ExtensionSeparator=", "
-
QueryExtensions (オプション)は主問合せに追加する必要のある拡張であり、EXTENSION1、EXTENSION2などのように表されます。
例:
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は、問合せとパラメータ間のデータの流れです。値は
IN
、OUT
またはINOUT
です。 -
TAGSは、問合せの処理前に各パラメータに適用される囲み文字です。この値は、
DOUBLEQUOTES
、QUOTES
、UPPERCASE
またはLOWERCASE.
です。複数のタグを使用する場合、それらのタグをエスケープ・クォートで囲んで、カンマで区切る必要があります。ただし、同じ問合せ内で
DOUBLEQUOTES
とQUOTES
、またはUPPERCASE
とLOWERCASE
を一緒に使用することはできません。例:
"Type:String,TAGS:\"DOUBLEQUOTES,UPPERCASE\"
-
-
ExtensionJoin (オプション)はEXTENSIONJOINで表される演算子であり、主問合せを問合せ拡張と結合するために使用されます。
例:
ExtensionJoin=","
-
ExtensionSeparator (オプション)は問合せ拡張間のデリミタであり、EXTENSIONSEPARATORで表されます。
例:
ExtensionSeparator=", "
-
QueryExtensions (オプション)は主問合せに追加する必要のある拡張であり、EXTENSION1、EXTENSION2などのように表されます。
プロビジョニング操作時に、コネクタによってこれらすべての構成要素が次の問合せに結合されます。
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の値は、
SQL
、StoredProc
またはQUERYEXTENSION
です。例:
QueryType="SQL"
-
Parametersは主問合せで使用されるパラメータおよびパラメータ定義のカンマ区切りリストであり、"PARAM1":"PARAMDEFN1", "PARAM2":"PARAMDEFN2"などのように表されます。
次に例を示します。
Parameters=["__UID__":"Type:String,Direction:OUT,ColName:USER"]
パラメータには次の属性を指定できます。
-
Typeはパラメータのタイプです。
-
Directionは、問合せとパラメータ間のデータの流れです。値は
IN
、OUT
またはINOUT
です。 -
ColNameは、問合せ内のパラメータに対応するターゲット・システム内の列名です。
-
ColQueryは、対応する問合せパラメータの値をフェッチするために使用される問合せです。
-
-
ExtensionJoin (オプション)はEXTENSIONJOINで表される演算子であり、主問合せを問合せ拡張と結合するために使用されます。
例:
ExtensionJoin=","
-
ExtensionSeparator (オプション)は問合せ拡張間のデリミタであり、EXTENSIONSEPARATORで表されます。
例:
ExtensionSeparator=", "
-
QueryExtensions (オプション)は主問合せに追加する必要のある拡張であり、EXTENSION1、EXTENSION2などのように表されます。
例:
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.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をインストールし、これを構成してインストールされたすべてのターゲット・システムをリンクしようとしています。