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-dn | AD の BIND DN |
AD_BIND_PASSWORD | 任意 | bind-password | AD の BIND パスワード |
AD_PORT | 任意 | 389 | AD のポート番号 |
AD_SEARCH_BASE | 任意 | dc=ad,dc=example,dc=com | AD の search base |
API_SCHEME | https | http | UCIDM API サーバーのプロトコル |
API_HOST | 任意 | localhost | UCIDM API サーバー名 |
API_PORT | 任意 | 18080 | UCIDM API サーバーの ポート番号 |
API_SECURE_SKIP | 任意 | false | 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 以上を返す) したときのリトライの設定をします。
環境変数 | 値 | 規定値 | 説明 |
---|---|---|---|
CLIENT_RETRY_WAIT_MIN | 任意 | 1s | 1 回目のリトライの待ち時間 |
CLIENT_RETRY_WAIT_MAX | 任意 | 30s | リトライの最大の待ち時間 |
CLIENT_RETRY_MAX | 任意 | 4 | リトライの最大回数 |
agent プロセスがメッセージキューを使うときの設定をします。
環境変数 | 値 | 規定値 | 説明 |
---|---|---|---|
UCIDM_SOCKET_PATH | C:\OSSTech\UCIDM-ADPassSync\socket\adpsync | my-ipc-socket | Unix ドメインソケット のパス |
UCIDM_SEND_HWM | 任意 | 0 | メッセージキュー のバッファサイズ |
UCIDM_BYTE_ORDER | 任意 | LittleEndian | メッセージエンコーディング のバイトオーダー |
sender/agent プロセスが送信処理に失敗したときにデータを一時保存するリカバリ設定をします。
環境変数 | 値 | 規定値 | 説明 |
---|---|---|---|
UCIDM_RECOVERY_PATH | C:\OSSTech\UCIDM-ADPassSync\.recovery | .recovery | リカバリのための メッセージが一時保存 される場所へのパス |
UCIDM_RECOVERY_INTERVAL | 任意 | 10m | リカバリの実行間隔 |