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_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 以上を返す) したときのリトライの設定をします。
UCIDM API サーバーへのリクエストに失敗 (ステータスコードが 500 以上を返す) したときのリトライの設定をします。
環境変数 | 値 | 規定値 | 説明 |
---|---|---|---|
CLIENT_RETRY_WAIT_MIN | 任意 | 1s | 1回目のリトライの待ち時間 |
CLIENT_RETRY_WAIT_MAX | 任意 | 30s | リトライの最大の待ち時間 |
CLIENT_RETRY_MAX | 任意 | 4 | リトライの最大回数 |
接続する Active Directory サーバーの設定をします。
環境変数 | 値 | 規定値 | 説明 |
---|---|---|---|
LDAP_SCHEME | 任意 | ldap | LDAP サーバーのプロトコル |
LDAP_HOSTS | 任意 | – | 接続する AD サーバー名 カンマ(,)区切りで複数指定 |
LDAP_PORT | 任意 | 389 | 接続する AD サーバーの ポート番号 |
LDAP_SECURE_SKIP | 任意 | false | AD サーバーの任意の証明書を許可 |
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) | グループ検索条件 |
PROTOCOL | dirsync | – | LDAP 通信のプロトコル |
EXCLUDE_ ATTRIBUTES | 任意 | – | 連携除外属性 カンマ(,)区切りで複数指定 |
LDAP_GROUP_MEMBER_ ATTRIBUTE | 任意 | member | グループメンバーの値が入る属性の属性名 |
USER_GROUP_ LINK_ATTRIBUTE | 任意 | – | ユーザーとグループにおいて紐づけたい属性名を指定 |
POLLING_TIME | – | 1h | 更新を定期的に 問い合わせる間隔 |
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