OpenLDAP 向け Agent
UCIDM は社内で管理している OpenLDAP サーバーから ID 情報を取得して UCIDM API に連携します。
OpenLDAP 向け Agent はコンテナとして稼働させます。次のように compose.yml
に設定します。
agent-ldap:
depends_on:
- api
container_name: agent-ldap
image: docker.io/osstech/ucidm-agent:latest
logging: *default-logging
volumes:
- type: bind
source: ./agent-data/openldap
target: ${AGENT_PAGE_KEY_PATH}
bind:
create_host_path: true
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}"
# SSL_CERT_FILE: "${SSL_CERT_FILE}"
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}"
LDAP_GROUP_MEMBER_ATTRIBUTE: "${AGENT_LDAP_GROUP_MEMBER_ATTRIBUTE}"
PROTOCOL: "${AGENT_LDAP_PROTOCOL}"
EXCLUDE_ATTRIBUTES: "${AGENT_LDAP_EXCLUDE_ATTRIBUTES}"
USER_GROUP_LINK_ATTRIBUTE: "${AGENT_LDAP_USER_GROUP_LINK_ATTRIBUTE}"
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/openldap 配下に配置されます。
$ ls volumes/agent-data/openldap
ここで参照する環境変数は .env
に設定します。
環境変数の設定
接続する UCIDM API サーバーの設定をします。
環境変数 | 値 | 規定値 | 説明 |
---|---|---|---|
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 | リトライの最大回数 |
接続する OpenLDAP サーバーの設定をします。
環境変数 | 値 | 規定値 | 説明 |
---|---|---|---|
LDAP_SCHEME | 任意 | ldap | LDAP サーバーのプロトコル |
LDAP_HOSTS | 任意 | – | 接続する LDAP サーバー名 カンマ(,)区切りで複数指定 |
LDAP_PORT | 任意 | 389 | 接続する LDAP サーバーの ポート番号 |
LDAP_SECURE_SKIP | 任意 | false | LDAP サーバーの任意の証明書を許可 |
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 | 任意 | 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) | グループ検索条件 |
LDAP_GROUP_ MEMBER_ATTRIBUTE | memberUid, member, uniqueMember | member | グループのメンバー属性 |
PROTOCOL | syncrepl | – | LDAP 通信のプロトコル |
EXCLUDE_ ATTRIBUTES | 任意 | – | 連携除外属性 カンマ(,)区切りで複数指定 |
USER_GROUP_ LINK_ATTRIBUTE | 任意 | – | ユーザーとグループにおいて紐づけたい属性名を指定 |
POLLING_TIME | – | 1h | syncrepl では未使用 |
PAGE_KEY_PATH | 任意 | – | 同期状況の 保存先ディレクトリ |
- OpenLDAP サーバーに Anonymous bind で接続するときは
BIND_DN
を未設定または空文字にします - OpenLDAP サーバーから正常にエントリを取得して UCIDM API サーバーへの連携に失敗 (リトライしても失敗) したときは自動で復旧しません
- 別途ツールで運用対応する 必要があります
- グループにおいて、メンバーの値が入る属性の属性名を
LDAP_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 に連携されます
- 設定値がない場合は、この属性によるユーザーとグループの紐づけは行われません
LDAP_HOSTS
で指定された複数のホストに対して、接続を試みます- 接続に失敗した場合はリトライせず、次のホストへ接続を試みます
ID 連携の対象外となる属性
次の属性は連携されません。
- userPassword