Active Directory 向け Agent

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

Active Directory 向け Agent はコンテナとして稼働させます。次のように compose.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
    entrypoint:
      - ./bin/agent
      - -verbose
      - -jsonl
    environment:
      LDAP_SCHEME: "${AGENT_AD_SCHEME}"
      LDAP_HOSTS: "${AGENT_AD_HOSTS}"
      LDAP_PORT: "${AGENT_AD_PORT}"
      LDAP_SECURE_SKIP: "${AGENT_AD_SECURE_SKIP}"
      # SSL_CERT_FILE: "${SSL_CERT_FILE}"
      LDAP_BIND_DN: "${AGENT_AD_BIND_DN}"
      LDAP_BIND_PASSWORD: "${AGENT_AD_BIND_PASSWORD}"
      LDAP_SEARCH_BASE: "${AGENT_AD_SEARCH_BASE}"
      LDAP_USER_SEARCH_FILTER: "${AGENT_AD_USER_SEARCH_FILTER}"
      LDAP_GROUP_SEARCH_FILTER: "${AGENT_AD_GROUP_SEARCH_FILTER}"
      LDAP_GROUP_MEMBER_ATTRIBUTE: "${AGENT_AD_GROUP_MEMBER_ATTRIBUTE}"
      PROTOCOL: "${AGENT_AD_PROTOCOL}"
      EXCLUDE_ATTRIBUTES: "${AGENT_AD_EXCLUDE_ATTRIBUTES}"
      POLLING_TIME: "${AGENT_AD_POLLING_TIME}"
      PAGE_KEY_PATH: "${AGENT_PAGE_KEY_PATH}"
      API_HOST: "${API_HOST}"
      API_PORT: "${API_PORT}"
      API_ACCOUNT_AUTH_USER: "${AGENT_API_ACCOUNT_AUTH_USER}"
      API_ACCOUNT_AUTH_PASSWORD: "${AGENT_API_ACCOUNT_AUTH_PASSWORD}"
    restart: "always"

Agent の永続化ディレクトリ

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

$ ls volumes/agent-data/ad

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

環境変数の設定

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

環境変数規定値説明
API_SCHEMEhttpshttpUCIDM API サーバーの
プロトコル
API_HOST任意localhostUCIDM API サーバー名
API_PORT任意18080UCIDM API サーバーの
ポート番号
API_ACCOUNT_AUTH_USER任意接続する UCIDM API の
アカウント認証ユーザー
API_ACCOUNT_AUTH_PASSWORD任意接続する UCIDM API の
アカウント認証パスワード
  • 認証はベーシック認証またはアカウント認証はどちらか一方を設定します
    • 両方設定するとベーシック認証を使います

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

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

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

接続する Active Directory サーバーの設定をします。

環境変数規定値説明
LDAP_SCHEME任意ldapLDAP サーバーのプロトコル
LDAP_HOSTS任意接続する AD サーバー名
カンマ(,)区切りで複数指定
LDAP_PORT任意389接続する AD サーバーの
ポート番号
LDAP_SECURE_SKIP任意falseAD サーバーの任意の証明書を許可
SSL_CERT_FILE任意LDAP サーバーとの接続において
信頼する CA 証明書を指定
LDAP_BIND_DN任意bind ユーザー
LDAP_BIND_PASSWORD任意bind パスワード
LDAP_SEARCH_BASE任意dc=example,dc=comユーザー・グループ検索対象 DN
LDAP_USER_
SEARCH_BASE
任意LDAP_SEARCH_BASE と同じ値を設定
LDAP_USER_
SEARCH_FILTER
任意(&(objectClass=person)
(!(objectClass=computer)))
ユーザー検索条件
LDAP_GROUP_
SEARCH_BASE
任意LDAP_SEARCH_BASE と同じ値を設定
LDAP_GROUP_
SEARCH_FILTER
任意(objectClass=group)グループ検索条件
PROTOCOLdirsyncLDAP 通信のプロトコル
EXCLUDE_
ATTRIBUTES
任意連携除外属性
カンマ(,)区切りで複数指定
LDAP_GROUP_MEMBER_
ATTRIBUTE
任意memberグループメンバーの値が入る属性の属性名
USER_GROUP_
LINK_ATTRIBUTE
任意ユーザーとグループにおいて紐づけたい属性名を指定
POLLING_TIME1h更新を定期的に
問い合わせる間隔
PAGE_KEY_PATH任意同期状況の
保存先ディレクトリ
  • LDAP_USER_SEARCH_BASE と LDAP_GROUP_SEARCH_BASE は LDAP_SEARCH_BASE と同じ値を設定してください
  • Windows Server 2003 以降のドメイン コントローラーで Active Directory への匿名 LDAP 操作が無効になっている ため、Active Directory 向け Agent は anonymous bind をサポートしません。適切な bind ユーザーのアカウントをご用意ください
  • AD から正常にエントリを取得して UCIDM API サーバーへの連携に失敗 (リトライしても失敗) したときは自動で復旧しません
  • グループにおいて、メンバーの値が入る属性の属性名を LDAP_GROUP_MEMBER_ATTRIBUTE に設定することができます(例:member)
    • この設定をした属性の情報はグループのメンバーの情報としてグループとは別に UCIDM API に連携されます
    • この環境変数にucidm-not-divide-member の値を設定すると、メンバーの情報がグループから分離されず、そのままグループエントリとして連携されます
      • この ucidm-not-divide-member の設定をした際は、USER_GROUP_LINK_ATTRIBUTE の環境変数設定は行わないようお願いいたします
  • ユーザーとグループにおいて、紐づけたい属性を USER_GROUP_LINK_ATTRIBUTE に設定することができます(例:gidNumber)
    • この設定をした場合、例えば gidNumber を設定した場合は、ユーザーの gidNumber と同じ gidNumber を持つグループのメンバーに該当ユーザーが割り当てられて UCIDM API に連携されます
    • 設定値がない場合は、この属性によるユーザーとグループの紐づけは行われません
  • LDAP_HOSTSで指定された複数のホストに対して、接続を試みます
    • 接続に失敗した場合はリトライせず、次のホストへ接続を試みます

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 社のドキュメントを参照してください。

ID 連携の対象外となる属性

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

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