Active Directory 向け Agent
UCIDM は社内で管理している Active Directory サーバーから ID 情報を取得して UCIDM API に連携します。
Active Directory 向け Agent はコンテナとして稼働させます。次のように docker-compose.yml
に設定します。
agent-ad:
depends_on:
- api
container_name: agent-ad
image: docker.io/osstech/ucidm-agent:latest
logging: *default-logging
volumes:
- ./volumes/agent-data/ad:${COOKIE_PATH}
environment:
LDAP_SCHEME: "${AGENT_AD_SCHEME}"
LDAP_HOSTS: "${AGENT_AD_HOSTS}"
LDAP_PORT: "${AGENT_AD_PORT}"
LDAP_SECURE_SKIP: "${AGENT_AD_SECURE_SKIP}"
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}"
REQUESTER: "${AGENT_AD_REQUESTER}"
PROTOCOL: "${AGENT_AD_PROTOCOL}"
POLLING_TIME: "${AGENT_AD_POLLING_TIME}"
COOKIE_PATH: "${AGENT_COOKIE_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_SCHEME | https | http | UCIDM API サーバーの プロトコル |
API_HOST | 任意 | localhost | UCIDM API サーバー名 |
API_PORT | 任意 | 18080 | UCIDM 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 以上を返す) したときのリトライの設定をします。
UCIDM API サーバーへのリクエストに失敗 (ステータスコードが 500 以上を返す) したときのリトライの設定をします。
環境変数 | 値 | 規定値 | 説明 |
---|---|---|---|
CLIENT_RETRY_WAIT_MIN | 任意 | 1s | 1回目のリトライの待ち時間 |
CLIENT_RETRY_WAIT_MAX | 任意 | 30s | リトライの最大の待ち時間 |
CLIENT_RETRY_MAX | 任意 | 4 | リトライの最大回数 |
接続する Active Directory サーバーの設定をします。
環境変数 | 値 | 規定値 | 説明 |
---|---|---|---|
LDAP_HOSTS | 任意 | – | 接続する AD サーバー名 カンマ(,)区切りで複数指定 |
LDAP_PORT | 任意 | 389 | 接続する AD サーバーの ポート番号 |
LDAP_SECURE_SKIP | 任意 | false | TLS の自己証明書を許可 |
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 | ベーシック認証時の実施者名 |
PROTOCOL | dirsync | – | LDAP 通信のプロトコル |
GROUP_MEMBER_ATTRIBUTE | 任意 | member | グループメンバーの値が入る属性の属性名 |
USER_GROUP_LINK_ATTRIBUTE | 任意 | – | ユーザーとグループにおいて紐づけたい属性名を指定 |
POLLING_TIME | – | 1h | 更新を定期的に 問い合わせる間隔 |
COOKIE_PATH | 任意 | – | 同期状況の 保存先ディレクトリ |
- Windows Server 2003 以降のドメイン コントローラーで Active Directory への匿名 LDAP 操作が無効になっている ため、Active Directory 向け Agent は anonymous bind をサポートしません。適切な bind ユーザーのアカウントをご用意ください
- アカウント認証の設定をすると、そのアカウント名が
REQUESTER
として使われます - OpenLDAP サーバーから正常にエントリを取得して UCIDM API サーバーへの連携に失敗 (リトライしても失敗) したときは自動で復旧しません
- 別途ツールで運用対応する 必要があります
- グループにおいて、メンバーの値が入る属性の属性名を
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 に連携されます
- 設定値がない場合は、この属性によるユーザーとグループの紐づけは行われません
ユーザーステータスの属性
UCIDM には AD の userAccountControl を参照して有効/無効を表す ucidmUserEnabled 属性が用意されています。
各外部連携先でステータスを扱う場合、この属性をマッピングで設定する必要があります。
ID 連携の対象外となる属性
次の属性は Windows サーバーでのみ必要なシステム関連の属性なので連携されません。
- lmPwdHistory
- ntPwdHistory
- supplementalCredentials
- nTSecurityDescriptor
- pwdLastSet
- parentGUID
- objectSid
- memberOf
- unicodePwd
- dBCSPwd
- codePage
- countryCode
- instanceType
- sAMAccountType
- objectCategory
- badPwdCount
- badPasswordTime
- dSCorePropagationData