OpenLDAP 向け PassSync Agent
UCIDM は社内で管理している OpenLDAP サーバーからパスワード変更を検知して UCIDM API に連携します。
前提条件
OSSTech 社 OpenLDAP の次のパッケージがインストールされ、正しく設定されていることを前提として説明します。
- osstech-openldap
- osstech-openldap-servers
システム概要
OpenLDAP の Overlays という仕組みを使ってパスワード変更をフックします。ucidmpsync というカスタム Overlay モジュールを slapd に設定します。次に OpenLDAP 向け PassSync Agent の概要を示します。
Sender や PassSync Agent で送信に失敗したときもリカバリディレクトリにメッセージが一時保存されて定期的に再処理されます。一時保存されるメッセージは難読化されて保存されます。システム管理者が容易にパスワードの文字列を確認することはできません。
パスワード変更のリカバリの注意事項
UCIDM ではセキュリティ強化の観点から一般ユーザーのパスワードを原則として保存しません。しかし、システムの一時的な障害のために一般ユーザーにパスワード変更をやり直してもらうのも実運用においてコストがかかります。リカバリ機能は難読化した上で再処理する機能になりますが、リカバリデータを削除しない限り、無限にリカバリを繰り返します。一時的な検証ユーザーや誤った設定などにより、パスワード変更のデータが生成され、そのリカバリは絶対に成功しない場合、システム管理者が手動でリカバリデータを削除する必要があります。
リカバリデータでは後述する UCIDM_RECOVERY_PATH で指定されたディレクトリ配下に格納されます。不要なパスワード変更のデータがある場合はシステム管理者が直接、このディレクトリ配下にあるファイルを削除してください。
設定
systemd のサービスから PassSync Agent が使う環境変数を設定します。主には接続する UCIDM API サーバーの設定をすればデフォルト設定でも構いません。
agent.env の環境変数
接続する UCIDM API サーバーの設定をします。
UCIDM API サーバーへのリクエストに失敗 (ステータスコードが 500 以上を返す) したときのリトライの設定をします。
agent プロセスがメッセージキューを使うときの設定をします。
sender/agent プロセスが送信処理に失敗したときにデータを一時保存するリカバリ設定をします。
サービスの起動設定
systemd から PassSync サービスを起動します。起動後にサービスがアクティブになっていることを確認します。
PassSync サービスのログを監視するには次のように実行します。
osstech-openldap の slapd.conf を次のように設定します。
mdb セクションの一番最後に overlay ucidmpsync の設定を追加するようにしてください。
osstech-openldap の slapd.service に sender が PassSync の環境変数を参照できるように設定を追加します。systemctl edit を使って次の内容を設定してください。
設定を完了すると次のファイルが作成されます。
systemctl cat で次の内容を確認できれば正しい設定になります。
設定を完了したら次のように slapd.service を再起動します。
あるユーザーでパスワード変更を行い、slapd のログから sender が agent にメッセージを送ったログを確認します。
sender や agent で ucidm へリクエストして 500 以上のステータスコードが返されたときはリカバリ用ディレクトリにデータが一時保存されます。そして UCIDM_RECOVERY_INTERVAL の環境変数で指定した期間で再度リクエストします。成功しない限り、無限にリクエストされるので失敗することがわかっているデータの場合は手動で削除してください。
PassSync Agent の動作を確認できたら OS 再起動時のサービス起動設定を確認します。基本的には OS 起動時に自動起動するとよいです。
PassSync Agent サービスは slapd.service に依存するため、運用上の都合で slapd.service を自動起動していない場合はその設定にあわせて運用していただいても構いません。slapd.service を自動起動しているかどうかは次のコマンドで調べられます。