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

# Active Directory 向け Agent

UCIDM は社内で管理している Active Directory サーバーから ID 情報を取得して UCIDM API に連携します。

Active Directory 向け Agent はコンテナとして稼働させます。次のように `compose.yml` に設定します。

```yml
  agent-ad:
    depends_on:
      - api
    container_name: agent-ad
    image: docker.io/osstech/ucidm-agent:latest
    logging: *default-logging
    volumes:
      - type: bind
        source: ./agent-data/ad
        target: ${AGENT_PAGE_KEY_PATH}
        bind:
          create_host_path: true
      #- type: bind
      #  source: ./certs/chainCA.crt
      #  target: ${SSL_CERT_FILE}
      #  read_only: true
      #  bind:
      #    create_host_path: false
    entrypoint:
      - ./bin/agent
      - -verbose
      - -jsonl
    environment:
      TZ: "${TZ}"
      # SSL_CERT_FILE: "${SSL_CERT_FILE}"
      PROTOCOL: "dirsync"
      PAGE_KEY_PATH: "${AGENT_PAGE_KEY_PATH}"
      RELOAD_INTERVAL: "${AGENT_RELOAD_INTERVAL}"
      API_HOST: "${API_HOST}"
      API_PORT: "${API_PORT}"
      API_ACCOUNT_AUTH_USER: "${API_ACCOUNT_AUTH_USER}"
      API_ACCOUNT_AUTH_PASSWORD: "${API_ACCOUNT_AUTH_PASSWORD}"
    restart: "always"
```

## Agent の永続化ディレクトリ

永続化が必要なファイルなどは volumes/agent-data/ad 配下に配置されます。

```bash
$ ls volumes/agent-data/ad
```

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

## 環境変数の設定

### Agent モジュール

接続する Active Directory サーバーに関する設定は [UCIDM API サーバーのシステム設定](/resource/ucidm/docs/on-premise/1.8.0/configuration/system-setting.md#metaActiveDirectory) で行います。

| 環境変数            |    値    | 既定値 | 説明                                    |
| :-------------- | :-----: | :-: | :------------------------------------ |
| TZ              |    任意   |  -- | タイムゾーン情報                              |
| SSL_CERT_FILE   |    任意   |  -- | LDAP サーバーとの接続において<br />信頼する CA 証明書を指定 |
| PROTOCOL        | dirsync |  -- | LDAP 通信のプロトコル                         |
| PAGE_KEY_PATH   |    任意   |  -- | 同期状況の保存先ディレクトリ                        |
| RELOAD_INTERVAL |    任意   |  1m | システム設定の更新を定期的に問い合わせる間隔                |

- AD から正常にエントリを取得して UCIDM API サーバーへの連携に失敗 (リトライしても失敗) したときは自動で復旧しません
  - [別途ツールで運用対応する](/resource/ucidm/docs/on-premise/1.8.0/operation/resync.md) 必要があります

次の属性は Windows サーバーでのみ必要なシステム関連の属性なので連携されません。

- lmPwdHistory
- ntPwdHistory
- supplementalCredentials
- nTSecurityDescriptor
- pwdLastSet
- parentGUID
- objectSid
- memberOf
- unicodePwd
- dBCSPwd
- codePage
- countryCode
- instanceType
- sAMAccountType
- objectCategory
- badPwdCount
- badPasswordTime
- dSCorePropagationData

#### 1回の検索リクエストで取得できるエントリー数の設定

1回の検索リクエストで取得できるエントリー数はデフォルトで MaxPageSize=1000 に設定されています。あるグループに所属するメンバー数が1000件よりも多い場合、この設定値をメンバー数よりも大きい値に設定する必要があります。MaxPageSize の値は次のようにして設定を変更します。

```
c:\>ntdsutil
ntdsutil: ldap policies
ldap policy: connections
server connections: connect to server localhost
server connections: quit
ldap policy: show values
  現在の設定を確認
ldap policy: set maxpagesize to 10000
ldap policy: commit changes
ldap policy: show values
  変更した設定を確認
ldap policy: quit
ntdsutil: quit
```

詳細については Microsoft 社のドキュメントを参照してください。

- [View and set LDAP policy in Active Directory by using Ntdsutil.exe](https://learn.microsoft.com/en-us/troubleshoot/windows-server/active-directory/view-set-ldap-policy-using-ntdsutil)

### API サーバー

接続する UCIDM API サーバーの設定をします。

- [アカウント認証は agent アカウントの利用を推奨](/resource/ucidm/docs/on-premise/1.8.0/configuration/agent/account.md)

| 環境変数                      |   値   |    既定値    | 説明                           |
| :------------------------ | :---: | :-------: | :--------------------------- |
| API_SCHEME                | https |    http   | UCIDM API サーバーのプロトコル         |
| API_HOST                  |   任意  | localhost | UCIDM API サーバー名              |
| API_PORT                  |   任意  |   18080   | UCIDM API サーバーのポート番号         |
| API_ACCOUNT_AUTH_USER     |   任意  |     --    | 接続する UCIDM API のアカウント認証ユーザー  |
| API_ACCOUNT_AUTH_PASSWORD |   任意  |     --    | 接続する UCIDM API のアカウント認証パスワード |

UCIDM API サーバーへのリクエストに失敗 (ステータスコードが 500 以上を返す) したときのリトライの設定をします。

| 環境変数                  |  値  | 既定値 | 説明            |
| :-------------------- | :-: | :-: | :------------ |
| CLIENT_RETRY_WAIT_MIN |  任意 |  1s | 1回目のリトライの待ち時間 |
| CLIENT_RETRY_WAIT_MAX |  任意 | 30s | リトライの最大の待ち時間  |
| CLIENT_RETRY_MAX      |  任意 |  4  | リトライの最大回数     |
