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

# Google Workspace 外部連携モジュール

UCIDM では [Google Workspace](https://workspace.google.com/intl/en_jp/lp/business/) に対して ID 連携できます。

## Google Workspace 外部連携設定手順

### 事前準備

外部連携先の Google Workspace をご用意下さい。また、UCIDM 稼働サーバーから外部連携先 Google Workspace への以下の接続情報をご準備ください。

- Google の Client Email
- Google の秘密鍵
- Google の Subject (主に管理者のメールアドレスを指定)

### コンテナの設定

Google Workspace 外部連携モジュールはコンテナとして稼働させます。次のように `compose.yml` に設定します。entrypoint では次の設定ができます。

- `-verbose`: デバッグログを出力
- `-jsonl`: JSON 形式でログを出力

```yml
  consumer-google:
    depends_on:
      rabbitmq:
        condition: service_healthy
    container_name: consumer-google
    image: docker.io/osstech/ucidm-consumer:latest
    logging: *default-logging
    ports:
      - 7099:7099
    volumes:
      - type: bind
        source: ./server-data
        target: /ucidm
        bind:
          create_host_path: false
    entrypoint:
      - ./bin/app-main
      - -jsonl
    environment:
      TZ: "${TZ}"
      DESTINATION_ID: "google-001"
      MONGO_USER: "${MONGO_USER}"
      MONGO_PASSWORD: "${MONGO_PASSWORD}"
      MONGO_DATABASE: "${MONGO_DATABASE}"
      MONGO_HOSTS: "${MONGO_HOSTS}"
      RABBITMQ_USER: "${RABBITMQ_USER}"
      RABBITMQ_PASSWORD: "${RABBITMQ_PASSWORD}"
      RABBITMQ_HOST: "${RABBITMQ_HOST}"
      MONGO_REPLICA_SET: "${MONGO_REPLICA_SET}"
      GOOGLE_CLIENT_EMAIL: "${GOOGLE_CLIENT_EMAIL}"
      GOOGLE_PRIVATE_KEY: "${GOOGLE_PRIVATE_KEY}"
      GOOGLE_SUBJECT: "${GOOGLE_SUBJECT}"
    restart: "always"
```

ここで参照する環境変数は `ucidm.env` に設定します。

#### 環境変数の設定

| 環境変数                   |        値       |  既定値  | 説明                                                    |
| :--------------------- | :------------: | :---: | :---------------------------------------------------- |
| TZ                     |       任意       |   --  | タイムゾーン情報                                              |
| DESTINATION_ID         |       任意       |   --  | 外部連携先 ID 管理画面で作成した外部連携先 ID を指定                        |
| MONGO_USER             |       任意       |   --  | 接続する MongoDB のユーザ名                                    |
| MONGO_PASSWORD         |       任意       |   --  | 接続する MongoDB のパスワード                                   |
| MONGO_DATABASE         |       任意       | ucidm | 接続する MongoDB のデータベース                                  |
| MONGO_HOSTS            |       任意       |   --  | 接続する MongoDB のホスト                                     |
| MONGO_REPLICA_SET      |       任意       |   --  | 接続する MongoDB のレプリカセットの名前                              |
| RABBITMQ_USER          |       任意       |   --  | 接続する RabbitMQ のユーザ名                                   |
| RABBITMQ_PASSWORD      |       任意       |   --  | 接続する RabbitMQ のパスワード                                  |
| RABBITMQ_HOST          |       任意       |   --  | 接続する RabbitMQ のホスト                                    |
| GOOGLE_CLIENT_EMAIL    |       任意       |   --  | Google Workspace の Client Email                       |
| GOOGLE_PRIVATE_KEY     |       任意       |   --  | Google Workspace の秘密鍵                                 |
| GOOGLE_SUBJECT         |       任意       |   --  | Google Workspace の Subject (主に管理者のメールアドレスを指定)         |
| ENABLE_SCRIPT_PASSWORD | true または false | false | ユーザーパスワード更新時に外部連携の<br />前処理/後処理スクリプトにパスワードの値を連携するかどうか |

### Google Workspace 外部連携設定

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

![](/resource/ucidm/docs/on-premise/static/image/federation-setting.b310b59109.png)
この新規外部連携設定画面の各タブで詳細内容を設定します。設定が完了したら「登録」ボタンを押下することで外部連携設定が作成されます。

外部連携設定作成後は、[ルーティング設定](/resource/ucidm/docs/on-premise/1.9.0/administration/admin-ui/index.md#ルーティング設定画面) にてこの外部連携設定を適用するユーザーおよびグループを指定して下さい。

#### 外部連携主要情報

Google Workspace 外部連携の主要情報を指定します。

- 連携 ID
  - 一意の連携 ID を指定します
- 外部連携先 ID
  - 上記コンテナの DESTINATION_ID 環境変数で設定した値を指定します
- 外部連携先 タイプ
  - Google

#### 動作設定

管理画面にて Google Workspace の動作設定ができます。

設定項目と内容は次になります。

- ドメイン名
  - Google Workspace のドメイン名を指定します
- ドライランモード
  - 接続の取得やエントリの検索は行いますが、実際にエントリの追加/変更/削除は行わないモードとなります
  - 主にテスト時の動作確認等に使うことを想定しています

##### 実施しない操作の設定

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

## マッピング

Google Workspace 外部連携の以下マッピング設定を行います。

- 属性マッピング

次でマッピング設定について説明します。

### 属性マッピング

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

- Google Workspace では階層構造を持つ属性があります。
  - 例えば、name 内の givenName に対して属性値をマッピングする場合は、「name.givenName」に対してマッピングをする必要があります。
- Google Workspace では階層構造に加えて、配列を持つ属性があります。
  - 例えば、emails 内の 最初の配列要素における、address に対して属性値をマッピングする場合は、「emails.0.address」に対してマッピングをする必要があります。
  - 配列の要素番号は、0, 1, 2, ... の形で 0 から始める番号で指定する必要があります。

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

| 連携先の属性名                   | 連携元の属性名   | ビルトイン関数名 | テンプレート文字列 | 固定値   |
| :------------------------ | :-------- | :------- | :-------- | :---- |
| name.familyName           | sn        | --       | --        | --    |
| name.givenName            | givenName | --       | --        | --    |
| hashFunction              | --        | --       | --        | crypt |
| orgUnitPath               | --        | --       | --        | /     |
| suspended                 | --        | --       | --        | false |
| changePasswordAtNextLogin | --        | --       | --        | true  |

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

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

また、以下の属性は Google Workspace 外部連携モジュール独自のマッピングになるため、合わせてご参照ください。

### ユーザ属性

#### primaryEmail 属性

本属性については、連携されてきた primaryID の値を使用し、`${primaryID}@${ドメイン}` の値が自動でセットされるので、マッピング設定は必要ありません。

#### hashFunction 属性

本属性のマッピング設定をする場合は、以下のいずれかの値が連携されるよう設定してください。

- crypt
- SHA-1
- MD5

#### suspended 属性

ユーザの有効化/無効化を制御するための属性となります。この属性に対して、true/false が設定されるようマッピングを行うことで、ユーザの有効化/無効化のステータスを制御することができます。

ここで、有効化の場合は false、無効化の場合は true が割り当てられる必要があることにご注意ください。必要に応じて、マッピング設定の `事前定義済みのビルトイン関数` の `invertBooleanValue` をご使用ください。

### グループ属性

#### email 属性

本属性については、連携されてきた primaryID の値を使用し、`${primaryID}@${ドメイン}` の値が自動でセットされるので、マッピング設定は必要ありません。

## 前処理・後処理スクリプト設定

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

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

## Google Workspace 外部連携モジュールの留意事項

- 更新操作直後に Google 管理コンソールにてユーザー/グループを閲覧すると更新前の状態が表示される場合があります
