> For AI agents: the complete documentation index is available at /resource/ucidm/docs/on-premise/dev/llms.txt, the full documentation bundle is available at /resource/ucidm/docs/on-premise/dev/llms-full.txt.

# RDBMS 外部連携モジュール \{#rdbms-destination-module}

UCIDM は RDBMS に対して ID 連携できます。

対応する RDBMS は以下になります。

- MySQL (MariaDB)
- PostgreSQL
- Oracle Database

## RDBMS 外部連携設定手順 \{#setup}

### RDBMS 外部連携設定 \{#destination-settings}

管理画面にて RDBMS の外部連携設定が行えます。ホーム画面の「外部連携設定」を選択し、外部連携設定一覧画面に遷移します。外部連携設定一覧画面で、登録ボタンを押下することで新規外部連携設定画面が表示されます。

![](/resource/ucidm/docs/on-premise/static/image/federation-setting.a8162487da.png)
この新規外部連携設定画面の各セクションで詳細内容を設定します。

### 種別および基本情報 \{#destination-type-basic-info}

外部連携設定の種別および基本情報を指定します。

- 外部連携先の種別
  - RDBMS を指定します
  - 既存の RDBMS 外部連携設定の内容を利用する場合は、「既存の外部連携先を利用」を選択し、利用元の外部連携設定を選択してください
- 連携 ID
  - 一意の連携 ID を指定します
- 外部連携先 ID
  - 任意の値を指定します
- 説明

### 連携設定 \{#federate-settings}

RDBMS 外部連携の連携設定を行います。設定項目と内容は次になります。

- ドライランモード
  - 接続の取得やエントリの検索は行いますが、実際にエントリの追加/変更/削除は行わないモードとなります
  - 主にテスト時の動作確認等に使うことを想定しています
- データベースタイプ
  - 接続する外部連携先のデータベース種別
- ホスト
  - 接続する外部連携先 RDBMS のホスト名
- ポート
  - 外部連携先 RDBMS のポート番号
- ユーザー
  - 外部連携先 RDBMS の接続ユーザー名
- パスワード
  - 外部連携先 RDBMS の接続ユーザーパスワード
- データベース名
  - 外部連携先 RDBMS の接続データベース名

#### 反映方式 \{#apply-mode}

ID 連携されてきたデータを、どのように連携先のデータベースに反映させるかを選択します。

- simple: シンプルなテーブル構成で連携する
- storedProcedure: ストアドプロシージャ／ファンクションを使って手続きを記述して連携する

##### simple \{#apply-method-simple}

ユーザー／グループ／メンバーの3つのテーブルと関連するカラムの識別子を設定します。

- ユーザーテーブル名
  - 連携先 RDBMS のユーザーテーブル名を指定します
- グループテーブル名
  - 連携先 RDBMS のグループテーブル名を指定します
- メンバーテーブル名
  - 連携先 RDBMS のメンバーテーブル名を指定します
- ユーザー主キーカラム名
  - ユーザーテーブルの PrimaryKey の名前
- グループ主キーカラム名
  - グループテーブルの PrimaryKey の名前
- ステータスカラム名
  - ステータス情報を格納するカラムの名前
- パスワードカラム名
  - パスワード情報を格納するカラムの名前

##### storedProcedure \{#apply-method-storedProcedure}

既存のテーブル構成にあわせ、ストアドプロシージャ／ファンクションを使って手続きを記述します。

ストアドプロシージャ／ファンクションへの入力／出力は1つの JSON の値になります。

- ユーザー取得ファンクション
  - ユーザーが存在するか、更新差分を取得するために使います
- グループ取得ファンクション
  - グループが存在するか、更新差分を取得するために使います
- メンバー取得ファンクション
  - メンバーが存在するかを判別するために使います
- ユーザー反映プロシージャ
  - ユーザーを追加／更新／削除するときの手続きを記述します
- グループ反映プロシージャ
  - グループを追加／更新／削除するときの手続きを記述します
- メンバー反映プロシージャ
  - メンバーを追加／更新／削除するときの手続きを記述します

たとえば、ユーザー反映プロシージャ向けには次のような JSON を入力として受け取ります。

```json
// I = 追加（enabled が解決された場合のみ enabled を含む）
{ "opCode": "I",
  "primaryID": "u123",
  "enabled": true,
  "attrs": { "cn": "Taro Yamada", "mail": "taro@example.com", "age": "42", "department": "Sales" }
}

// U = 通常属性の更新（渡した属性だけ更新）
{ "opCode": "U", "primaryID": "u123", "attrs": { "cn": "Jiro Yamada" } }

// P = パスワード更新（通常 update と区別するための専用 opCode）
{ "opCode": "P", "primaryID": "u123", "attrs": { "password": "<mapped-password>" } }

// D = 削除（attrs は付かない）
{ "opCode": "D", "primaryID": "u123" }
```

入出力の JSON の詳細と、データベース製品ごとの実装方法は [ストアドプロシージャ／ファンクション](/resource/ucidm/docs/on-premise/dev/tech/storedProcedure/index.md) を参照してください。

#### その他の設定 \{#other-operations}

- ユーザーステータス設定情報を使用する
  - ユーザープロファイルのステータス設定画面で指定した有効無効設定の情報を利用して、ユーザーのステータスの値を取得する場合は on にします
- ステータス用属性名
  - 有効無効設定情報を使用しない場合にこちらの設定が使われます

#### 実施しない操作の設定 \{#skip-operations}

- ユーザー追加/更新を行わない
  - RDBMS に対してユーザー追加/更新を行わない場合は、この項目をオン（true）にしてください
- ユーザー削除を行わない
  - RDBMS に対してユーザー削除を行わない場合は、この項目をオン（true）にしてください
- ユーザーパスワード更新を行わない
  - RDBMS に対してユーザーパスワード更新を行わない場合は、この項目をオン（true）にしてください
- グループ追加/更新を行わない
  - RDBMS に対してグループ追加/更新を行わない場合は、この項目をオン（true）にしてください
- グループ削除を行わない
  - RDBMS に対してグループ削除を行わない場合は、この項目をオン（true）にしてください
- グループメンバー追加を行わない
  - RDBMS に対してグループメンバー追加を行わない場合は、この項目をオン（true）にしてください
- グループメンバー削除を行わない
  - RDBMS に対してグループメンバー削除を行わない場合は、この項目をオン（true）にしてください

#### 前処理・後処理スクリプト設定 \{#pre-post-processing-scripts}

UCIDM では、外部連携処理の前後で任意のシェルスクリプトを実行することができます。

次の [外部連携の前処理/後処理で実行するスクリプトの配置](/resource/ucidm/docs/on-premise/dev/administration/admin-ui/destination/script.md) を参考に、スクリプトファイルを配置後、[外部連携の前処理/後処理で実行するスクリプトの設定](/resource/ucidm/docs/on-premise/dev/administration/admin-ui/scriptsettings.md) を参考に、実行したいスクリプトファイルを指定してください。

### マッピング \{#mapping}

RDBMS 外部連携の以下マッピング設定を行います。以下順序でマッピングが適用されます。

- PrimaryID マッピング
  - 新規外部連携設定作成画面においては、「詳細設定を表示」を押下することで設定が可能になります
- 属性マッピング

それぞれのマッピング設定について説明します。

#### PrimaryID マッピング \{#primaryid-mapping}

次の [PrimaryID マッピング設定](/resource/ucidm/docs/on-premise/dev/administration/admin-ui/primaryid-mapping.md) を参考にしてください。

#### 属性マッピング \{#attribute-mapping}

次の [属性マッピング設定](/resource/ucidm/docs/on-premise/dev/administration/admin-ui/mappings.md) を参考にしてください。

以下は RDBMS 外部連携のユーザーマッピング設定の一例です。

| 連携先の属性名     | 連携元の属性名     | ビルトイン関数名 | テンプレート文字列 | 固定値 |
| :---------- | :---------- | :------- | :-------- | :-- |
| userName    | uid         | --       | --        | --  |
| cn          | cn          | --       | --        | --  |
| sn          | sn          | --       | --        | --  |
| givenName   | givenName   | --       | --        | --  |
| description | description | --       | --        | --  |

以下は RDBMS 外部連携のグループマッピング設定の一例です。

| 連携先の属性名     | 連携元の属性名     | ビルトイン関数名 | テンプレート文字列 | 固定値 |
| :---------- | :---------- | :------- | :-------- | :-- |
| groupName   | cn          | --       | --        | --  |
| description | description | --       | --        | --  |

以下は RDBMS 外部連携のパスワードマッピング設定の一例です。

| 連携先の属性名      | 連携元の属性名  | ビルトイン関数名 | テンプレート文字列 | 固定値 |
| :----------- | :------- | :------- | :-------- | :-- |
| hashPassword | password | bcrypt   | --        | --  |

### ルーティング \{#routing-setting}

連携するユーザー／グループの決め方について設定します。全ユーザー・全グループをそのまま連携する際は「すべて連携」を選択します。

ルーティング設定の詳細については [ルーティング設定](/resource/ucidm/docs/on-premise/dev/administration/admin-ui/index.md#external-federation-routing) の内容を参考にしてください。

メンバーシップブリッジ設定も行えます。詳細については [メンバーシップブリッジ設定](/resource/ucidm/docs/on-premise/dev/administration/admin-ui/index.md#external-federation-membership-bridge) の内容を参考にしてください。
