仕様上の制約
ID 連携全般
primaryID は変更不可
primaryID は外部サービスへも主要なキー情報として連携されます。そのため、既存の primaryID を変更すると外部サービスにも影響があります。UCIDM ではユーザー/グループのエントリ情報が初めて連携されてきたときに primaryID を生成します。ユーザー/グループエントリを更新して primaryID を変更することはできません。例えば、デフォルトでは LDAP の DN 文字列の RDN0 の値を割り当てます。DN の値は後から変更できますが、初期の RDN0 の値を使って割り当てた primaryID の値は変更されません。そのため、DN 文字列を変更すると外部サービスで使っている primaryID の命名規則においてズレてしまう可能性があります。
Agent モジュール
ユーザーやグループの変更を検知して ID 連携するモジュールの制約になります。
共通
search base として設定した OU (Organizational Unit) エントリーを別の内容に変更すると変更を検知できなくなり、ID 連携できません。
例えば、次のようにユーザーやグループの search base を設定しているとします。
LDAP_USER_SEARCH_BASE="ou=users,dc=example,dc=com"
LDAP_GROUP_SEARCH_BASE="ou=groups,dc=example,dc=com"
このとき、例えば、内部ディレクトリサービスのユーザーの ou=users,dc=example,dc=com
から ou=new-users-group,dc=example,dc=com
のように変更した場合、Agent モジュールの設定変更を行い、プロセスを再起動しないと以降の LDAP エントリーの変更を検知できません。
Active Directory 向け Agent
- 古いエントリが複数ある場合は直接削除する必要があります。
- 次の属性は同期されません。
- nTSecurityDescriptor
- pwdLastSet
- objectSid
- parentGUID
- memberOf
PassSync Agent モジュール
パスワード変更を検知してパスワード連携するモジュールの制約になります。
OpenLDAP 向け
- 連携対象のパスワードに改行文字を含めることはできません
Active Directory 向け
- ユーザーを追加すると、同時にパスワード変更を検出します。しかし、ユーザーが連携される前にパスワードを連携すると失敗します。その際は再度パスワードを変更する必要があります
- ログオン名変更後はパスワードをユーザー自身が更新する必要があります
- 高負荷のときにイベントログにログが出力されない場合があります
- 一方で UCIDM の管理画面ではすべてのリクエストの履歴を確認できます
外部連携モジュール
外部サービスへ ID 連携するモジュールの制約になります。
SCIM
SCIM 外部連携モジュール は起動後の最初の ID 連携リクエストのタイミングで必要なスキーマ情報を取得します。そして、そのスキーマ情報はプロセスは起動している最中ずっとキャッシュされます。実運用において共通でよく使われるスキーマが変更されることは滅多にないと考えています。キャッシュしているため、スキーマ情報に変更があった場合は外部連携モジュールのプロセスを再起動する必要があります。
管理画面
ID 連携管理画面 および ユーザープロファイル画面の制約となります
共通
ID 連携管理画面 および ユーザープロファイル画面(管理者用)において、それぞれの画面にて同名のアカウントでログインを行って同時に各種操作をした場合、主にログアウト操作をした際に上手く動かない事象が確認できています。