フラット・ファイルとの統合

前提条件

フラット・ファイル・オーケストレート済システムをインストールおよび構成する前に、次の前提条件およびタスクを考慮する必要があります。

動作保証されたコンポーネント

システムは次のものである必要があります。

  • テナンシのOracle Cloud Infrastructure (OCI)オブジェクト・ストレージにあるCSVフラット・ファイル

サポートされているモード

フラット・ファイル・オーケストレート済システムでは、次のモードがサポートされています。
  • 認可ソース
  • 管理されたシステム

サポートされている操作

フラット・ファイル・オーケストレート済システムでは、次の操作がサポートされています。
  • アカウントの作成
  • アカウントの削除
  • 資格の追加
  • 資格の削除

フラット・ファイル・オーケストレート済システム操作用のOCIオブジェクト・ストレージ・サービスでのバケットの作成

フラット・ファイルをOracle Access Governanceにロードするには、OCI Object Storageサービスを使用して作成されたバケットにデータファイルを配置する必要があります。このバケットは、OCIテナンシの任意のコンパートメントに作成できます。OCIオブジェクト・ストレージの詳細は、バケットの管理を参照してください。

バケットにアクセスするには、そのバケットに対する読取り、書込みおよび削除アクセス権(管理権限)を持つサービス・ユーザーを作成する必要があります。このプロセスに従って、このサービスユーザーを作成します。

  • コンパートメントの作成、 accessgovernance/
  • テナンシ内の任意のドメインにローカル・アイデンティティ・ユーザーagcs_userを作成します。
  • アイデンティティ・グループagcs_flatfilegroupをテナンシ内の任意のドメインに作成します。
  • アイデンティティ・ユーザーagcs_userをアイデンティティ・グループagcs_flatfilegroupに割り当てます。
  • 次のポリシー・ステートメントを使用して、ポリシーagcs_flatfilepolicyを作成します:
    allow group <groupname> to manage objects in compartment <compartmentname>
        where target.bucket.name = 'bucketname'

    例:

    allow group agcs_flatfilegroup to manage objects in compartment accessgovernance
        where target.bucket.name = 'bucket-20231130-1143'

構成

接続の詳細を入力することで、フラット・ファイルとOracle Access Governance間の接続を確立できます。これを実現するには、Oracle Access Governanceコンソールで使用可能なOrchestrated Systems機能を使用します。

「Orchestrated Systems」ページに移動します。

次のステップに従って、Oracle Access Governanceコンソールの「Orchestrated Systems」ページにナビゲートします。
  1. Oracle Access Governanceのナビゲーション・メニュー・アイコンナビゲーション・メニューから、「Service Administration」→「Orchestrated Systems」を選択します。
  2. ワークフローを開始するには、「オーケストレート済システムの追加」ボタンを選択します。

システムの選択

ワークフローの「システムの選択」ステップで、オンボーディングするシステムのタイプを指定できます。

  1. 「フラット・ファイル」を選択します。
  2. 「次へ」をクリックします。

詳細の入力

ワークフローの「詳細の追加」ステップで、オーケストレート済システムの詳細を入力します:
  1. 「名前」フィールドに、接続先のシステムの名前を入力します。
  2. 「説明」フィールドに、システムの説明を入力します。
  3. このオーケストレート済システムが信頼できるソースかどうか、および次のチェック・ボックスを設定してOracle Access Governanceが権限を管理できるかどうかを決定します。
    • これは私のアイデンティティの認証ソースです

      次の項目から選択します。

      • アイデンティティとその属性のソース: システムは、ソース・アイデンティティおよび関連する属性として機能します。新しいアイデンティティは、このオプションを使用して作成されます。
      • アイデンティティ属性のソースのみ: 追加のアイデンティティ属性の詳細が取り込まれ、既存のアイデンティティに適用されます。このオプションは、新規アイデンティティ・レコードを取込みまたは作成しません。
    • このシステムの権限を管理します
    各ケースのデフォルト値は「未選択」です。
  4. 「次へ」を選択します。

所有者の追加

リソース所有権を関連付けるには、プライマリ所有者と追加所有者を追加します。これにより、これらの所有者は所有するリソースを管理(読取り、更新または削除)できるため、セルフサービスが促進されます。デフォルトでは、リソース作成者はリソース所有者として指定されます。1人のプライマリ所有者と最大20人の追加所有者をリソースに割り当てることができます。
ノート

サービス・インスタンスに対して最初のオーケストレート済システムを設定する場合、「アイデンティティの管理」セクションからアイデンティティを有効にした後にのみ所有者を割り当てることができます。
所有者を追加するには:
  1. 「プライマリ所有者は誰ですか。」フィールドで、Oracle Access Governanceのアクティブ・ユーザーをプライマリ所有者として選択します。
  2. 「他の所有者は誰ですか。」リストで1つ以上の追加所有者を選択します。リソースに最大20人の追加所有者を追加できます。
リストの「プライマリ所有者」を表示できます。すべての所有者は、所有するリソースを表示および管理できます。

アカウント設定

ワークフローの「アカウント設定」ステップで、システムが管理対象システムとして構成されている場合、Oracle Access Governanceでアカウントを管理する方法を入力します:
  1. 権限が要求され、アカウントがまだ存在しない場合は、このオプションを選択して新しいアカウントを作成します。このオプションはデフォルトで選択されています。選択すると、権限が要求されたときにアカウントが存在しない場合、Oracle Access Governanceによってアカウントが作成されます。このオプションをクリアすると、権限はオーケストレート済システム内の既存のアカウントに対してのみプロビジョニングされます。アカウントが存在しない場合、プロビジョニング操作は失敗します。
  2. アカウント作成時の通知電子メールの受信者を選択します。デフォルトの受信者は「ユーザー」です。受信者が選択されていない場合、アカウントの作成時に通知は送信されません。
    • ユーザー
    • ユーザー・マネージャ
  3. 既存のアカウントの構成
    ノート

    これらの構成を設定できるのは、システム管理者によって許可されている場合のみです。グローバル・アカウント終了設定が有効になっている場合、アプリケーション管理者は、調整されたシステム・レベルでアカウント終了設定を管理できません。
    1. 早期終了開始時のアカウントの処理の選択: 早期終了の開始時に実行する処理を選択します。これは、正式な退職日より前にアイデンティティ・アクセスを取り消す必要がある場合に発生します。
      • 削除: Oracle Access Governanceで管理されているすべてのアカウントおよび権限を削除します。
        ノート

        特定のオーケストレート済システムでアクションがサポートされていない場合、アクションは実行されません。
      • 無効化: すべてのアカウントを無効化し、Oracle Access Governanceで管理される権限を無効化します。
        • 無効化されたアカウントの権限の削除: 残存アクセス権がゼロであることを確認するには、これを選択して、アカウントの無効化時に直接割り当てられた権限およびポリシーで付与された権限を削除します。
      • アクションなし: アイデンティティにOracle Access Governanceによる早期終了のフラグが付けられている場合、アクションは実行されません。
    2. 退職日のアカウントの処理の選択: 正式な退職時に実行する処理を選択します。これは、正式な退職日にIDアクセスを取り消す必要がある場合に発生します。
      • 削除: Oracle Access Governanceで管理されているすべてのアカウントおよび権限を削除します。
        ノート

        特定のオーケストレート済システムで「削除」アクションがサポートされていない場合、アクションは実行されません。
      • 無効化: すべてのアカウントを無効化し、Oracle Access Governanceで管理される権限を無効化します。
        • 無効化されたアカウントの権限の削除: 残存アクセス権がゼロであることを確認するには、これを選択して、アカウントの無効化時に直接割り当てられた権限およびポリシーで付与された権限を削除します。
        ノート

        特定のオーケストレート済システムで「無効化」アクションがサポートされていない場合は、アカウントが削除されます。
      • アクションなし: Oracle Access Governanceでは、アカウントおよび権限に対するアクションは実行されません。
  4. アイデンティティが企業を離れたときは、そのアカウントへのアクセス権を削除する必要があります。
    ノート

    これらの構成を設定できるのは、システム管理者によって許可されている場合のみです。グローバル・アカウント終了設定が有効になっている場合、アプリケーション管理者は、調整されたシステム・レベルでアカウント終了設定を管理できません。

    アカウントに対する次のアクションのいずれかを選択します。

    • 削除: Oracle Access Governanceで管理されているすべてのアカウントおよび権限を削除します。
    • 無効化: すべてのアカウントを無効化し、権限を非アクティブとしてマークします。
      • 無効化されたアカウントの権限の削除: アカウントの無効化時に直接割り当てられ、ポリシーで付与された権限を削除して、残存アクセスをゼロにします。
    • アクションなし: アイデンティティが組織を離れるときにアクションを実行しません。
    ノート

    これらのアクションは、オーケストレートされたシステム・タイプでサポートされている場合にのみ使用できます。たとえば、「削除」がサポートされていない場合、「無効化」および「アクションなし」オプションのみが表示されます。
  5. アカウントのすべての権限が削除された場合(アイデンティティが部門間を移動する場合など)、アカウントの処理を決定する必要がある場合があります。オーケストレート済システム・タイプでサポートされている場合、次のいずれかのアクションを選択します。
    • 削除
    • 使用不可
    • 処理なし
  6. アクセス・ガバナンスで作成されていないアカウントの管理: オーケストレート済システムで直接作成されるアカウントを管理する場合に選択します。これにより、既存のアカウントを調整し、Oracle Access Governanceから管理できます。
ノート

システムを管理対象システムとして構成しない場合、ワークフローのこのステップは表示されますが、有効になりません。この場合、ワークフローの「統合設定」ステップに直接進みます。
ノート

オーケストレート済システムで、汎用RESTおよびデータベース・アプリケーション表の統合と同様に動的スキーマ検出が必要な場合は、オーケストレート済システムの作成時に通知電子メールの宛先(ユーザー、Usermanager)のみを設定できます。モーバーおよびリーバの無効化/削除ルールは設定できません。これを行うには、オーケストレート済システムを作成してから、「オーケストレート済システム・アカウント設定の構成」の説明に従ってアカウント設定を更新する必要があります。

統合設定

ワークフローの「統合設定」ステップで、Oracle Access Governanceがフラット・ファイルに接続できるようにするために必要な構成の詳細を入力します。

  1. 「OCIユーザーのOCIDは何ですか。」フィールドに、統合するフラット・ファイルを含むバケットを所有するOCIユーザーのOCIDを追加します。
  2. OCIユーザーのAPIキーのフィンガープリントは何ですか。 OCUユーザーのAPIキーのフィンガープリントを入力します。この値の取得方法の詳細は、OCIドキュメントの必要なキーおよびOCIDsを参照してください。
  3. PEM形式のユーザーの秘密APIキーを「PEM形式のOCIユーザーの秘密APIキーは何ですか。」フィールドに入力します。この値の取得方法の詳細は、OCIドキュメントの必要なキーおよびOCIDsを参照してください。
  4. 「OCIユーザーのOCIテナンシとは何ですか。」フィールドにテナンシを入力します。
  5. 「OCIテナンシのホーム・リージョン・コードとは何ですか。」フィールドにテナンシのホーム・リージョン・コードを入力します。リージョン・コードの詳細は、リージョンおよび可用性ドメインのOCIドキュメントを参照してください。
  6. 「バケットのネームスペースは何ですか。」フィールドにテナンシのバケット・ネームスペースを入力します。
  7. 「フラット・ファイルが格納されているOCIオブジェクト・ストレージのバケットの名前を入力します」フィールドに、フラット・ファイルが格納されているOCIオブジェクト・ストレージのバケットの名前を入力します。
  8. 「エンコーディング」フィールドにエンコーディングを入力します。デフォルトはUTF-8です。
  9. 「フィールド・デリミタ」フィールドに、フラット・ファイルで使用するフィールドのデリミタ文字を入力してください。デフォルトは,です。
  10. 「サブ・フィールド・デリミタ」フィールドに、フラット・ファイルで使用されるサブ・フィールドのデリミタ文字を入力してください。デフォルトは#です。
  11. MultiValueデリミタ・フィールドに、フラット・ファイルで使用する複数値のデリミタ文字を入力してください。デフォルトは;です。
  12. 「テキスト修飾子」フィールドに、フラット・ファイルでテキスト修飾子として使用する文字を入力してください。デフォルトは"です。
  13. 「日付書式」フィールドに、日付タイプ・フィールドがフラット・ファイルに含まれるJavaデータ書式(dd/MM/yyyyなど)を入力します。日付書式が指定されていない場合、日付フィールドはデータ型Longとみなされます。
  14. フラット・ファイルへの接続を確認する場合は、「統合のテスト」ボタンをクリックします。
  15. 「追加」をクリックして、オーケストレート済システムを作成します。

完了

最後に、仮想システムを有効にしている場合は、まずサブシステムのCSVファイルを定義してアップロードしてから、オーケストレート済システムをアクティブ化する必要があります。「完了しました」を選択します。

仮想システムが無効になっている場合は、オーケストレートされたシステムをアクティブ化するか、ドラフトとしてのみ保存できます。

CSVファイルのアップロード

仮想システムを有効にしている場合は、システムのIDおよび名前を含むCSVファイルをアップロードします。最大100個の仮想システムを追加できます。

例:

ID 名前
virtual_ad_123 アルファ
virtual_ad_456 ベータ版
virtual_ad_789 ガンマ
  • 仮想システム名に次の特殊文字`~!@#$%^&*><"を含めることはできません。
  • IDまたは名前には特殊文字を使用できません。
  • 仮想システム名は、すべてのオーケストレート済システムで一意である必要があります。
  • IDは、そのオーケストレート済システムに対して一意である必要があります。

「更新」ボタンを選択して、仮想システムの最新バージョンを追加します。

既存の仮想システムは削除できませんが、更新できます。作成後に仮想システムを管理するには、Manage Virtual Systemsを参照してください。

構成後処理

バケット・フォルダ構造の確認

オーケストレート済システムの作成後、定義済バケットに次のフォルダ構造を作成する必要があります。

<ServiceInstanceName>/<OrchestratedSystemName>
    failed //Same sub-folders to be created as inbox
    inbox/
	IDENTITY/
		virtual-sys-1
		virtual-sys-2
		virtual-sys-3
	PERMISSION/
		virtual-sys-1
		virtual-sys-2
		virtual-sys-3
	TARGETACCOUNT/
		virtual-sys-1
		virtual-sys-2
		virtual-sys-3
    outbox/
	Same sub-folders to be created as inbox
    sample/
    schema/
ノート

virtual-sys-1virtual-sys-2などのサブ・フォルダは、仮想システムが有効化されている場合にのみ作成されます。
これらのフォルダは次の目的を果たします。
  • failed : データ・ロード操作が失敗した場合、データ問題のあるファイルは、それぞれのエンティティ・フォルダの下にあるこのフォルダに移動されます。
  • inbox : IDENTITYPERMISSIONおよびTARGETACCOUNTフォルダが含まれ、各フォルダにはIDで参照される仮想システム・フォルダが含まれます。データ・ロード操作に含める仮想システム・フォルダ内にCSVファイルを配置します。構成中に仮想システムを選択していない場合は、データファイルをIDENTITYPERMISSIONおよびTARGETACCOUNTフォルダに直接配置します。
  • outbox : オーケストレート済システムの各エンティティのプロビジョニング・イベント。
  • sample : 必要なヘッダーを含むサンプルCSVが含まれます。これらは、データを生成し、データ・ロード用の受信ボックスに入れるための参照として使用できます。これらのファイルは変更しないでください。
  • schema : 各エンティティのスキーマのJSON表現が含まれます。これは、次のような詳細を理解するために参照できます。
    • dataType
    • 必須の属性
    • 属性が複数値かどうか
    • 属性が複雑で、ネストされた属性がある場合(dataTypeはCUSTOMになります)
    • サポートされているdataTypesは次のとおりです。
      • TEXT
      • NUMBER
      • DECIMAL_NUMBER
      • DATE
      • FLAG
      • CUSTOM

カスタムの属性の定義

カスタム属性は、IDENTITYエンティティでサポートされています。データロードにカスタム属性を含める場合は、それらを<ServiceInstanceName>/<OrchestratedSystemName>/schema/IDENTITY.jsonファイルに追加する必要があります。

カスタム属性名は、次の要件を満たす必要があります。
  • AからZまたはaからzの文字との照合を実行します
  • 文字または数字のみを含む: A-Z、a-zまたは0-9
  • DATE型属性の場合、long値のみがサポートされます
  • カスタム属性は追加のみ可能で、削除できません
  • CUSTOMタイプのカスタム属性は追加できません

IDENTITY.jsonファイルにカスタム属性を追加したら、「最新のカスタム属性のフェッチ」の説明に従って、それらをOracle Access Governanceに含める必要があります。これが完了すると、サンプルCSVが新しく追加されたカスタム属性で更新されます。inboxのデータファイルを更新して、カスタム属性を次のデータ・ロードに含めます。

データロードの実行

データ・ロードはオンデマンドです。カスタム属性を定義するか、関連するCSVデータ・ファイルをinboxフォルダに追加した後は、必ずデータ・ロードを実行してください。データ・ロードを実行するたびにフル・データ・ロードされるため、増分ロードはありません。UTF-8-BOMエンコーディングはサポートされていません。

いずれかの種類の障害(単一レコードまたは完全なファイル障害)がある場合、データ・ロード操作は失敗としてマークされます。正常に処理されたファイルはinboxにとどまり、失敗したファイルはfailedフォルダに移動されます。データの問題を修正し、ファイルをinboxフォルダに再度配置します。

データ整合性の問題(CSVにないアカウントに権限が割り当てられているなど)も、データ・ロード操作が失敗する可能性があります。ただし、このような場合、CSVファイルはfailedフォルダに移動されません。ファイルがfailedフォルダに移動されるのは、必須データの欠落など、データ自体の読取りに問題がある場合のみです。

スキーマ拡張- カスタム・アカウント属性の追加

フラット・ファイル・オーケストレート済システムのアカウント属性、およびデフォルトでサポートされているデフォルトのアカウント属性を構成できます。アカウント属性とその管理方法の詳細は、「アカウント属性」および「アカウント属性の構成」を参照してください。

スキーマ拡張- 単純属性の例

単純なアカウント属性を追加する方法を示すために、フラット・ファイル・スキーマに電話番号属性を追加する例を見てみましょう。

フラット・ファイル・オーケストレート済システムの日付0の構成があり、デフォルトで次の属性があるとします。
  • commonName
  • displayName
  • Eメール
  • firstName
  • lastName
  • middleName
  • __名前__
  • 権限
  • __有効__
  • タイトル
  • __UID__
TARGETACCOUNT.csvの例を次に示します。
__NAME__,firstName,lastName,middleName,displayName,commonName,title,__ENABLE__,email,permissions
TARGETACCOUNT.jsonの例を次に示します。
[
    {
        "name": "displayName",
        "dataType": "TEXT",
        "required": false,
        "multiValued": false
    },
    {
        "name": "permissions",
        "dataType": "CUSTOM",
        "required": false,
        "multiValued": true,
        "subAttributes": [
            {
                "name": "__NAME__",
                "dataType": "TEXT",
                "required": true,
                "idAttribute": true
            }
        ]
    },
    {
        "name": "middleName",
        "dataType": "TEXT",
        "required": false,
        "multiValued": false
    },
    {
        "name": "lastName",
        "dataType": "TEXT",
        "required": false,
        "multiValued": false
    },
    {
        "name": "commonName",
        "dataType": "TEXT",
        "required": false,
        "multiValued": false
    },
    {
        "name": "firstName",
        "dataType": "TEXT",
        "required": false,
        "multiValued": false
    },
    {
        "name": "__NAME__",
        "dataType": "TEXT",
        "required": true,
        "multiValued": false
    },
    {
        "name": "title",
        "dataType": "TEXT",
        "required": false,
        "multiValued": false
    },
    {
        "name": "email",
        "dataType": "TEXT",
        "required": false,
        "multiValued": false
    },
    {
        "name": "__ENABLE__",
        "dataType": "FLAG",
        "required": false,
        "multiValued": false
    }
]
カスタム・アカウント属性phoneNumberを追加するには、「アカウント属性の構成」で説明されているステップを実行します。次に例を示します。
  1. システム提供の属性phoneNumberを作成し、インバウンド・データおよびアウトバウンド・データに含まれるオプションを選択し、複数の値をサポートします。
  2. TARGETACCOUNT.csvおよびTARGETACCOUNT.jsonに新しい属性を追加します。
    __NAME__,firstName,lastName,middleName,displayName,commonName,title,__ENABLE__,email,permissions,phoneNumber
                                    
    [
        {
            "name": "displayName",
            "dataType": "TEXT",
            "required": false,
            "multiValued": false
        },
        {
            "name": "permissions",
            "dataType": "CUSTOM",
            "required": false,
            "multiValued": true,
            "subAttributes": [
                {
                    "name": "__NAME__",
                    "dataType": "TEXT",
                    "required": true,
                    "idAttribute": true
                }
            ]
        },
        {
            "name": "phoneNumber",
            "dataType": "TEXT",
            "required": false,
            "multiValued": true
        },
        {
            "name": "firstName",
            "dataType": "TEXT",
            "required": false,
            "multiValued": false
        },
        {
            "name": "email",
            "dataType": "TEXT",
            "required": false,
            "multiValued": false
        },
        {
            "name": "__ENABLE__",
            "dataType": "FLAG",
            "required": false,
            "multiValued": false
        },
        {
            "name": "middleName",
            "dataType": "TEXT",
            "required": false,
            "multiValued": false
        },
        {
            "name": "lastName",
            "dataType": "TEXT",
            "required": false,
            "multiValued": false
        },
        {
            "name": "commonName",
            "dataType": "TEXT",
            "required": false,
            "multiValued": false
        },
        {
            "name": "__NAME__",
            "dataType": "TEXT",
            "required": true,
            "multiValued": false
        },
        {
            "name": "title",
            "dataType": "TEXT",
            "required": false,
            "multiValued": false
        }
    ]
  3. Oracle Access Governanceコンソールからフル・データ・ロードをトリガーします。新しいカスタム属性がロードされ、エンタープライズ・ワイド・ブラウザに表示されます。

スキーマ拡張- 複合属性の例

複雑なアカウント属性を追加する方法を示すために、他の連絡先詳細属性をフラット・ファイル・スキーマに追加する例を見てみましょう。

フラット・ファイル・オーケストレート済システムの日付0の構成があり、デフォルトで次の属性があるとします。
  • commonName
  • displayName
  • Eメール
  • firstName
  • lastName
  • middleName
  • __名前__
  • 権限
  • __有効__
  • タイトル
  • __UID__
TARGETACCOUNT.csvの例を次に示します。
__NAME__,firstName,lastName,middleName,displayName,commonName,title,__ENABLE__,email,permissions
TARGETACCOUNT.jsonの例を次に示します。
[
    {
        "name": "displayName",
        "dataType": "TEXT",
        "required": false,
        "multiValued": false
    },
    {
        "name": "permissions",
        "dataType": "CUSTOM",
        "required": false,
        "multiValued": true,
        "subAttributes": [
            {
                "name": "__NAME__",
                "dataType": "TEXT",
                "required": true,
                "idAttribute": true
            }
        ]
    },
    {
        "name": "middleName",
        "dataType": "TEXT",
        "required": false,
        "multiValued": false
    },
    {
        "name": "lastName",
        "dataType": "TEXT",
        "required": false,
        "multiValued": false
    },
    {
        "name": "commonName",
        "dataType": "TEXT",
        "required": false,
        "multiValued": false
    },
    {
        "name": "firstName",
        "dataType": "TEXT",
        "required": false,
        "multiValued": false
    },
    {
        "name": "__NAME__",
        "dataType": "TEXT",
        "required": true,
        "multiValued": false
    },
    {
        "name": "title",
        "dataType": "TEXT",
        "required": false,
        "multiValued": false
    },
    {
        "name": "email",
        "dataType": "TEXT",
        "required": false,
        "multiValued": false
    },
    {
        "name": "__ENABLE__",
        "dataType": "FLAG",
        "required": false,
        "multiValued": false
    }
]
カスタム・アカウント属性otherContactDetailsを追加するには、「アカウント属性の構成」で説明されているステップを実行します。次に例を示します。
  1. 次の子属性を使用して、システム提供の属性otherContactDetailsを作成します。
    • contactDetailsId
    • faxNumber
    • Webサイト
    インバウンドおよびアウトバウンド・データに含まれるオプションを選択し、複数の値をサポートします。
  2. TARGETACCOUNT.csvおよびTARGETACCOUNT.jsonに新しい属性を追加します。
    __NAME__,firstName,lastName,middleName,displayName,commonName,title,__ENABLE__,email,permissions,phoneNumber,otherContactDetails.contactDetailsId,otherContactDetails.faxNumber,otherContactDetails.website
                                    
    [
        {
            "name": "displayName",
            "dataType": "TEXT",
            "required": false,
            "multiValued": false
        },
        {
            "name": "permissions",
            "dataType": "CUSTOM",
            "required": false,
            "multiValued": true,
            "subAttributes": [
                {
                    "name": "__NAME__",
                    "dataType": "TEXT",
                    "required": true,
                    "idAttribute": true
                }
            ]
        },
        {
            "name": "firstName",
            "dataType": "TEXT",
            "required": false,
            "multiValued": false
        },
        {
            "name": "email",
            "dataType": "TEXT",
            "required": false,
            "multiValued": false
        },
        {
            "name": "__ENABLE__",
            "dataType": "FLAG",
            "required": false,
            "multiValued": false
        },
        {
            "name": "middleName",
            "dataType": "TEXT",
            "required": false,
            "multiValued": false
        },
        {
            "name": "lastName",
            "dataType": "TEXT",
            "required": false,
            "multiValued": false
        },
        {
            "name": "commonName",
            "dataType": "TEXT",
            "required": false,
            "multiValued": false
        },
        {
            "name": "title",
            "dataType": "TEXT",
            "required": false,
            "multiValued": false
        },
        {
            "name": "__NAME__",
            "dataType": "TEXT",
            "required": true,
            "multiValued": false
        },
        {
            "name": "otherContactDetails",
            "dataType": "CUSTOM",
            "required": false,
            "multiValued": true,
            "subAttributes": [
                {
                    "name": "faxNumber",
                    "dataType": "NUMBER",
                    "required": false
                },
                {
                    "name": "contactDetailsId",
                    "dataType": "TEXT",
                    "required": true,
                    "idAttribute": true
                },
                {
                    "name": "website",
                    "dataType": "TEXT",
                    "required": false
                }
            ]
        }
    ]
  3. Oracle Access Governanceコンソールからフル・データ・ロードをトリガーします。新しいカスタム属性がロードされ、エンタープライズ・ワイド・ブラウザに表示されます。

アフィリエイトのサポート(アイデンティティ・スキーマ拡張) - カスタム複合アイデンティティ属性の追加

デフォルトのアイデンティティ属性に加えて、フラット・ファイル・オーケストレート済システムのアイデンティティ属性を構成できます。アフィリエイトの詳細については、Handling Identity Personas with Affiliationsを参照してください。

0日目に、IDENTITY.csvの場合、オブジェクト・ストレージから構成されるすべてのエンティティに単純な属性が含まれます。日付Nでは、既存のスキーマを拡張し、さらに単純な属性を追加できます。

スキーマ拡張- 複合属性の例

1つ以上のサブ属性を含むオブジェクト・タイプ属性であるカスタム属性を含めるには、アイデンティティ・スキーマに対する追加の変更が必要です。複雑なアイデンティティ属性を追加する方法を示すために、フラット・ファイル・スキーマにアドレス属性を追加する例を見てみましょう。

フラット・ファイル・オーケストレート済システムのDay 0構成があり、デフォルトで次の属性があるとします。

IDENTITY.csvの例を次に示します。
__UID__, __NAME__,firstName,lastName,middleName,displayName,title,__ENABLE__,email,empNo,employeeType.... other columns
「スキーマ」フォルダでは、サンプルIDENTITY.jsonに次が含まれます。
[
  {
    "name": "displayName",
    "dataType": "TEXT",
    "required": false,
    "multiValued": false
  },
  {
    "name": "postalCode",
    "dataType": "TEXT",
    "required": false,
    "multiValued": false
  },
  {
    "name": "location",
    "dataType": "TEXT",
    "required": false,
    "multiValued": false
  },
  {
    "name": "employeeType",
    "dataType": "TEXT",
    "required": false,
    "multiValued": false
  },
  {
    "name": "managerUid",
    "dataType": "TEXT",
    "required": false,
    "multiValued": false
  },
  {
    "name": "territory",
    "dataType": "TEXT",
    "required": false,
    "multiValued": false
  },
  {
    "name": "state",
    "dataType": "TEXT",
    "required": false,
    "multiValued": false
  },
  {
    "name": "firstName",
    "dataType": "TEXT",
    "required": false,
    "multiValued": false
  },
  {
    "name": "department",
    "dataType": "TEXT",
    "required": false,
    "multiValued": false
  },
  {
    "name": "UID",
    "dataType": "TEXT",
    "required": true,
    "multiValued": false
  },
  {
    "name": "email",
    "dataType": "TEXT",
    "required": false,
    "multiValued": false
  },
  {
    "name": "ENABLE",
    "dataType": "FLAG",
    "required": false,
    "multiValued": false
  },
  {
    "name": "employeeNumber",
    "dataType": "TEXT",
    "required": false,
    "multiValued": false
  },
  {
    "name": "middleName",
    "dataType": "TEXT",
    "required": false,
    "multiValued": false
  },
  {
    "name": "country",
    "dataType": "TEXT",
    "required": false,
    "multiValued": false
  },
  {
    "name": "lastName",
    "dataType": "TEXT",
    "required": false,
    "multiValued": false
  },
  {
    "name": "jobCode",
    "dataType": "TEXT",
    "required": false,
    "multiValued": false
  },
  {
    "name": "organizationName",
    "dataType": "TEXT",
    "required": false,
    "multiValued": false
  },
  {
    "name": "title",
    "dataType": "TEXT",
    "required": false,
    "multiValued": false
  },
  {
    "name": "NAME",
    "dataType": "TEXT",
    "required": true,
    "multiValued": false
  }
]

カスタム複合属性を追加するには:

  1. IDENTITY.jsonファイル内のスキーマを拡張します。
    {
            "name": "userAddresses", // Name of the custom-complex attribute
            "dataType": "CUSTOM", // CUSTOM data type represents that it has sub attributes
            "required": false, // Denotes whether it is a mandatory attribute or not 
            "multiValued": true, // Custom-complex attribute has to be multivalued
            "subAttributes": [ // The list of sub attributes
                {
                    "name": "postalCode", // Name of child attribute
                    "dataType": "TEXT", // The data type of attribute, the supported data types are TEXT, NUMBER, DECIMAL_NUMBER, DATE and FLAG
                    "required": true //  Denotes whether it is a mandatory sub attribute or not  
                },
                {
                    "name": "addressTwo",
                    "dataType": "TEXT",
                    "required": false
                },
                {
                    "name": "landmark",
                    "dataType": "TEXT",
                    "required": false
                },
                {
                    "name": "city",
                    "dataType": "TEXT",
                    "required": true
                },
                {
                    "name": "houseNo",
                    "dataType": "TEXT",
                    "required": true
                },
                {
                    "name": "addressId", // Name of Identifier attribute.
                    "dataType": "TEXT", // Identifier attribute should be of TEXT data type.
                    "required": true, // Identifier attribute should always be mandatory.
                    "idAttribute": true // Denotes if the sub-attribute acts as the identifier. There should always be exact one such sub-attribute in a custom complex attribute.
                },
                {
                    "name": "addressOne",
                    "dataType": "TEXT",
                    "required": true
                }
            ]
        }
  2. IDENTITY.jsonで前述の変更を行った後、
  3. IDENTITY.csv CSVヘッダーを確認します
    __UID__,__NAME__,firstName,lastName,.... other columns
                    .....,userAddresses.addressId,userAddresses.postalCode,userAddresses.addressTwo,userAddresses.landmark,userAddresses.city,userAddresses.houseNo,userAddresses.addressOne

    単純な属性は、CSVヘッダーにカンマ区切り列として表示されます。カスタム複合属性はフラット構造を使用します。各サブ属性は、ドット(.)表記で区切られた親属性とともにヘッダーに含まれます。

複雑なカスタム属性の単一値エントリ

複合属性のデータ入力は、CSVで次のように行う必要があります。

                                userAddresses.addressId,userAddresses.postalCode,userAddresses.addressTwo,userAddresses.landmark,userAddresses.city,userAddresses.houseNo,userAddresses.addressOne
101,200200,,Near St. Thomas Church,Boston,23/78,The Galaxy Garden
  • 正しい列ヘッダーを必ず含めます。
  • 空のフィールド(addressTwoなど)の場合は、カンマの間に空白値を含めます。
結果のユーザー・データ
[
    {
        "addressId": "101",
        "postalCode": "200200",
        "addressTwo": null,
        "landmark": "Near St. Thomas Church",
        "city": "Boston",
        "houseNo": "23/78",
        "addressOne": "The Galaxy Garden"
    }
]

複合カスタム属性の複数値エントリ

複数値エントリを処理する場合は、セミコロン(;)を使用して、各サブ属性に複数の値を区切ります。次のCSVは、複数値住所の正しい表現を示しています。CSVの各行は、複数の住所エントリを持つ可能性がある1人のユーザーを表します

                            userAddresses.addressId,userAddresses.postalCode,userAddresses.addressTwo,userAddresses.landmark,userAddresses.city,userAddresses.houseNo,userAddresses.addressOne
101;102,200200;300400,;3rd Street,Near St. Thomas Church;,Boston;Denver,23/78;B-003,The Galaxy Garden;The Technology Park
  • 欠落データの場合は、デリミタ間の値を空白のままにし、最初のアドレスの場合はaddressTwoを空にします)
  • 各属性の値は位置によって対応します。各属性の最初の値は最初のアドレスを形成し、2番目の値は2番目のアドレスを形成します。
結果のユーザー・データ
[
    {
        "addressId": "101",
        "postalCode": "200200",
        "addressTwo": null,
        "landmark": "Near St. Thomas Church",
        "city": "Boston",
        "houseNo": "23/78",
        "addressOne": "The Galaxy Garden"
    },
    {
        "addressId": "102",
        "postalCode": "300400",
        "addressTwo": "3rd Street",
        "landmark": null,
        "city": "Denver",
        "houseNo": "B-003",
        "addressOne": "The Technology Park"
    }
]