OpenLDAP 向け Agent

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

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

  agent-ldap:
    depends_on:
      - api
    container_name: agent-ldap
    image: docker.io/osstech/ucidm-agent:latest
    logging: *default-logging
    volumes:
      - ./volumes/agent-data/openldap:${COOKIE_PATH}
    entrypoint:
      - ./bin/agent
      - -verbose
      - -jsonl
    environment:
      LDAP_SCHEME: "${AGENT_LDAP_SCHEME}"
      LDAP_HOSTS: "${AGENT_LDAP_HOSTS}"
      LDAP_PORT: "${AGENT_LDAP_PORT}"
      LDAP_SECURE_SKIP: "${AGENT_LDAP_SECURE_SKIP}"
      LDAP_BIND_DN: "${AGENT_LDAP_BIND_DN}"
      LDAP_BIND_PASSWORD: "${AGENT_LDAP_BIND_PASSWORD}"
      LDAP_SEARCH_BASE: "${AGENT_LDAP_SEARCH_BASE}"
      LDAP_USER_SEARCH_BASE: "${AGENT_LDAP_USER_SEARCH_BASE}"
      LDAP_USER_SEARCH_FILTER: "${AGENT_LDAP_USER_SEARCH_FILTER}"
      LDAP_GROUP_SEARCH_BASE: "${AGENT_LDAP_GROUP_SEARCH_BASE}"
      LDAP_GROUP_SEARCH_FILTER: "${AGENT_LDAP_GROUP_SEARCH_FILTER}"
      REQUESTER: "${AGENT_LDAP_REQUESTER}"
      PROTOCOL: "${AGENT_LDAP_PROTOCOL}"
      COOKIE_PATH: "${AGENT_COOKIE_PATH}"
      GROUP_MEMBER_ATTRIBUTE: "${AGENT_LDAP_GROUP_MEMBER_ATTRIBUTE}"
      USER_GROUP_LINK_ATTRIBUTE: "${AGENT_LDAP_USER_GROUP_LINK_ATTRIBUTE}"
      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/openldap 配下に配置されます。

# ls volumes/agent-data/openldap

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

環境変数の設定

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

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

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

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

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

環境変数規定値説明
LDAP_SCHEME任意ldapLDAP サーバーのプロトコル
LDAP_HOSTS任意接続する AD サーバー名
カンマ(,)区切りで複数指定
LDAP_PORT任意389接続する LDAP サーバーの
ポート番号
LDAP_SECURE_SKIP任意falseTLS の自己証明書を許可
LDAP_BIND_DN任意bind ユーザー
LDAP_BIND_PASSWORD任意bind パスワード
LDAP_SEARCH_BASE任意dc=example,dc=comユーザー・グループ検索対象 DN
LDAP_USER_SEARCH_BASE任意ou=users,dc=example,dc=comユーザー検索対象 DN
LDAP_USER_SEARCH_FILTER任意(&(objectClass=person)
(!(objectClass=computer)))
ユーザー検索条件
LDAP_GROUP_SEARCH_BASE任意ou=groups,dc=example,dc=comグループ検索対象 DN
LDAP_GROUP_SEARCH_FILTER任意(objectClass=group)グループ検索条件
REQUESTER任意Agentベーシック認証時の実施者名
PROTOCOLsyncreplLDAP 通信のプロトコル
GROUP_MEMBER_ATTRIBUTE任意memberグループメンバーの値が入る属性の属性名
USER_GROUP_LINK_ATTRIBUTE任意ユーザーとグループにおいて紐づけたい属性名を指定
POLLING_TIME1hsyncrepl では未使用
COOKIE_PATH任意同期状況の
保存先ディレクトリ
  • OpenLDAP サーバーに Anonymous bind で接続するときは BIND_DN を未設定または空文字にします
  • アカウント認証の設定をすると、そのアカウント名が REQUESTER として使われます
  • OpenLDAP サーバーから正常にエントリを取得して UCIDM API サーバーへの連携に失敗 (リトライしても失敗) したときは自動で復旧しません
  • グループにおいて、メンバーの値が入る属性の属性名を GROUP_MEMBER_ATTRIBUTE に設定することができます(例:memberUid)
    • この設定をした属性の情報はグループのメンバーの情報としてグループとは別に UCIDM API に連携されます
    • この環境変数にucidm-not-divide-member の値を設定すると、メンバーの情報がグループから分離されず、そのままグループエントリとして連携されます
      • この ucidm-not-divide-member の設定をした際は、USER_GROUP_LINK_ATTRIBUTE の環境変数設定は行わないようお願いいたします
  • ユーザーとグループにおいて、紐づけたい属性を USER_GROUP_LINK_ATTRIBUTE に設定することができます(例:gidNumber)
    • この設定をした場合、例えば gidNumber を設定した場合は、ユーザーの gidNumber と同じ gidNumber を持つグループのメンバーに該当ユーザーが割り当てられて UCIDM API に連携されます
    • 設定値がない場合は、この属性によるユーザーとグループの紐づけは行われません

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

次の属性は連携されません。

  • userPassword