Active Directory 向け PassSync Agent

UCIDM は社内で管理している Active Directory サーバーからパスワード変更を検知して UCIDM API に連携します。

システム概要

Windows サーバーの LSASS (Local Security Authority Server Service) の仕組みを使ってパスワード変更をフックします。次に Active Directory 向け PassSync Agent の概要を示します。

flowchart TB

subgraph windows[Windows サーバー]
  subgraph lsass[Local Security Authority Server Service]
    passwd[ユーザー名\nパスワード]

    subgraph passhook[PassHook]
      pusher[ZeroMQ\nPush]
    end
  end
end

subgraph zmq [ZeroMQ]
  queue[Queue]
end

subgraph passsync [PassSync Agent]
  puller[ZeroMQ\nPull]
  ucidm-client[UCIDM\nクライアント]
  recovery-handler[リカバリ\nハンドラー]
  recovery-dir[リカバリ\nディレクトリ]
end

subgraph server [UCIDM API サーバー]
  upd-passwd[PUT password]
end

passwd --> pusher
pusher -- ipc://socket --> queue
queue -- ipc://socket --> puller
puller -- decode --> ucidm-client
ucidm-client -- http --> upd-passwd
ucidm-client -- 送信失敗 --> recovery-dir
recovery-handler -- 再送信 --> ucidm-client
recovery-dir -- 監視 --> recovery-handler

PassSync Agent で送信に失敗したときもリカバリディレクトリにメッセージが一時保存されて定期的に再処理されます。一時保存されるメッセージは難読化されて保存されます。システム管理者が容易にパスワードそのものを確認することはできません。

パスワード変更のリカバリの注意事項

UCIDM ではセキュリティ強化の観点から一般ユーザーのパスワードを原則として保存しません。しかし、システムの一時的な障害のために一般ユーザーにパスワード変更をやり直してもらうのも実運用においてコストがかかります。リカバリ機能は難読化した上で再処理する機能になりますが、リカバリデータを削除しない限り、無限にリカバリを繰り返します。一時的な検証ユーザーや誤った設定などにより、パスワード変更のデータが生成され、そのリカバリは絶対に成功しない場合、システム管理者が手動でリカバリデータを削除する必要があります。

リカバリデータでは後述する UCIDM_RECOVERY_PATH で指定されたディレクトリ配下に格納されます。不要なパスワード変更のデータがある場合はシステム管理者が直接、このディレクトリ配下にあるファイルを削除してください。

設定

システム環境変数をセットします。システム環境変数はコントロールパネル->システムとセキュリティ->システム->システムの詳細設定->環境変数->システム環境変数で編集します。変更後は OS を再起動します。パスワード変更時のイベントログに UCIDM_SOCKET_PATH と UCIDM_SEND_HWM の値が出力されますが、負荷が高い場合イベントログが出力されない可能性があります。

環境変数規定値説明
AD_BIND_DN任意bind-dnAD の BIND DN
AD_BIND_PASSWORD任意bind-passwordAD の BIND パスワード
AD_PORT任意389AD のポート番号
AD_SEARCH_BASE任意dc=ad,dc=example,dc=comAD の search base
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 認証パスワード

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

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

agent プロセスがメッセージキューを使うときの設定をします。

環境変数規定値説明
UCIDM_SOCKET_PATH/OSSTech/UCIDM-ADPassSync/socket/adpsyncmy-ipc-socketUnix ドメインソケット
のパス
UCIDM_SEND_HWM任意0メッセージキュー
のバッファサイズ
UCIDM_BYTE_ORDER任意LittleEndianメッセージエンコーディング
のバイトオーダー

sender/agent プロセスが送信処理に失敗したときにデータを一時保存するリカバリ設定をします。

環境変数規定値説明
UCIDM_RECOVERY_PATH/var/opt/
osstech/lib/
ucidm/.recovery
.recoveryリカバリのための
メッセージが一時保存
される場所へのパス
UCIDM_RECOVERY_INTERVAL任意10mリカバリの実行間隔
UCIDM_REQUESTER任意PassSync Agentベーシック認証時の実施者名