7.6 障害発生後の同期の再試行

ドライバおよびパスワードフィルタは、障害発生後にパスワード同期を再試行する動作を改善するために機能強化されました。

7.6.1 「追加」イベントまたは「変更」イベント後の再試行

Active Directoryから送信されたパスワード変更がアイデンティティボールトで正常に完了されない場合は、ドライバによりパスワードがキャッシュに格納されます。パスワードの所有ユーザの「追加」イベントまたは「変更」イベントが発生するまで、パスワード変更の再試行は行われません。(以前は、このような保存されたパスワードがポーリング間隔で毎回再試行されていました)。

ドライバでActive Directoryでの変更をポーリングすると、そのドライバがユーザの「追加」イベントまたは「変更」イベントを受信します。ドライバでは、ユーザの「追加」イベントまたは「変更」イベントごとに、この新規ユーザ向けの保存されたパスワードがあるかどうかが確認されます。パスワードがある場合は、そのパスワードが変更ユーザイベントとしてアイデンティティボールトに送信されます。

パスワード同期が失敗したときにユーザに電子メールメッセージを送信するようパスワード同期を設定した場合は、この機能拡張により、ユーザが受信する電子メールの数は最小限に抑えられます。

7.6.2 パスワード期限の時刻

[パスワード期限の時刻]という名前のパラメータが追加されました。このパラメータでは、同期が最初の試行で正常に終了していない場合に特定のユーザのパスワードを保存する期間を決定できます。パスワードがアイデンティティボールトで正常に変更されるまで、または[パスワード期限の時刻]を経過するまで、ドライバによりパスワードが保存されます。

サンプルドライバ環境設定ファイルをインポートする場合は、有効期限の指定を要求するメッセージが表示されます。期限を指定しない場合、または期限(間隔フィールド)に無効な文字が含まれている場合、デフォルトの設定は60分です。指定した期限が、指定したポーリング間隔の3倍より短い場合は、ポーリング間隔の3倍になるようにドライバで期限が変更されます。

どんなパスワードの一時的なバックログでも処理できる十分に大きい値を設定します。一括変更する場合は、すべての変更を処理できるようにタイムアウトを大きく設定します。経験的には、パスワードあたりに1秒を考慮します。たとえば、18,000のパスワードを同期するには、300分(18,000パスワード/60秒)を考慮します。

-1を設定すると無期限になります。この設定で一括変更を処理できますが、問題が生じる場合があります。たとえば、アカウントが関連付けられていないため、パスワードが同期されないことがあります。したがって、そのようなパスワードは永久にシステムに残ります。同様の状況が数多い場合、同期されていない大量のパスワードはシステムで保持することになります。

[パスワード期限の時刻]に関するシナリオ

発行者チャネルでは、パスワード同期が「追加」イベントより先に発生する場合があります。その場合は、ドライバで「追加」イベントの直後に再試行されます。

シナリオ: 影響なし

新規ユーザとパスワードをActive Directoryで作成します。フィルタにより、直ちに新しいパスワードがドライバに送信されます。ただし、ポーリングの間にイベントが発生したため、ユーザの「追加」イベントはドライバで受信されていません。また、ドライバでアイデンティティボールトにユーザが作成されていないため、パスワード同期は、この最初に試行した時点で正常に終了していません。ドライバにより、このパスワードがキャッシュに格納されます。

次のポーリング間隔で、新規ユーザの「追加」ユーザイベントがドライバで受信されます。ドライバでは、この新規ユーザ向けのキャッシュされたパスワードがあるかどうかも確認されます。ドライバで「追加」ユーザイベントがアイデンティティボールトに送信され、パスワードを同期するために「変更」ユーザイベントも送信されます。

この場合、パスワード同期は1回のポーリング間隔だけ遅延されます。

この状況では、[パスワード期限の時刻]パラメータに影響はありません。

シナリオ: 有効期限の延長

新規ユーザとパスワードをActive Directoryで作成します。ただし、ユーザ情報がActive Directoryドライバの作成ポリシーの要件を満たしていません。

たとえば、作成ルールではフルネームを必要としますが、必要な情報がないとします。「影響なし」の例と同様に、フィルタにより、パスワード変更が直ちにドライバに送信されます。しかし、ユーザが存在しないため、最初に試行した時点でパスワード変更がアイデンティティボールトにおいて正常に終了していません。ドライバにより、このパスワードがキャッシュに格納されます。

ただし、この場合、ドライバでActive Directoryでの変更のポーリングおよび新規ユーザの検出が行われても、ユーザ情報が作成ポリシーの要件を満たしていないため、新しいユーザを作成できません。

新規ユーザの作成およびパスワードの同期は、作成ポリシーを満たすためにActive Directoryですべてのユーザ情報が追加されるまで遅延されます。次に、アイデンティティボールトで新規ユーザが追加され、この新規ユーザ向けのパスワードがキャッシュに格納されているかどうかが確認され、パスワードを同期するために「変更」ユーザイベントが送信されます。

[パスワード期限の時刻]パラメータは、Active Directoryでのユーザ情報が作成ポリシーの要件を満たすのに時間がかかる場合に限り、このシナリオに影響します。パスワードが期限切れになった後に「追加」イベントが発生し、該当ユーザのパスワードがキャッシュに格納されていない場合、同期は行われません。キャッシュに格納されたパスワードがないため、ドライバではパスワードポリシーのデフォルトのパスワードが使用されます。

ユーザがActive Directoryまたはアイデンティティボールトでパスワードを変更したら、パスワードは同期されます。

パスワードの双方向フローに備えてパスワード同期が設定されている場合は、アイデンティティボールトでパスワード変更が行われたときにアイデンティティボールトからActive Directoryに対してパスワードを同期することもできます。

作成ポリシーの制限が厳しく、一般にActive Directoryで新規ユーザの情報すべてを入力するのに2日以上かかる場合は、適宜[パスワード期限の時刻]パラメータ間隔を長くすることができます。次に、最終的にユーザがアイデンティティボールトで作成されるまでパスワードをキャッシュに格納できます。

シナリオ: 要件の不適合

ユーザとパスワードをActive Directoryで作成します。ただし、このユーザは、Active Directoryドライバの作成ポリシーの条件を満たしていません。

たとえば、Active Directoryの新規ユーザには、ユーザが契約社員であることを示す説明があり、ビジネスポリシーにより、契約社員にはアイデンティティボールトに対応するユーザアカウントを設定しないようにしているため、作成ポリシーで契約社員のユーザオブジェクトが作成されないようになっているとします。前の例と同様に、パスワード変更はフィルタで直ちに送信されますが、パスワード同期は最初の試行時に正常に終了していません。ドライバにより、このパスワードがキャッシュに格納されます。

この場合、対応するユーザアカウントはアイデンティティボールトで作成されません。したがって、キャッシュされたパスワードは同期されません。[パスワード期限の時刻]が経過したら、そのキャッシュからユーザパスワードが削除されます。

シナリオ: 電子メール通知

Markusには、Active Directoryアカウントおよび対応するアイデンティティボールトアカウントがあります。彼は、自分のActive Directoryパスワードを変更します。このパスワードは6文字です。しかし、このパスワードは、管理者がeDirectoryで作成したパスワードポリシーに規定されている最低8文字を満たしていません。パスワード同期は、ポリシーを満たさないパスワードを拒否してパスワード同期に失敗したことを示す通知電子メールをMarkusに送信するよう設定されています。このパスワードはキャッシュに格納され、Active Directoryでユーザオブジェクトを変更する場合に限りこのパスワードが再試行されます。

この場合、Markusは、パスワードを変更した直後にパスワード同期が正常に終了していないことを示す電子メールを受信します。Markusは、パスワードの再試行のたびに同じ電子メールメッセージを受信します。

Markusが、Active Directoryでのパスワードを、パスワードポリシーに従ったパスワードに変更すると、アイデンティティボールトに対する新しいパスワードがドライバで正常に同期されます。

Markusが、ポリシーに従ったパスワードに変更しなかった場合、パスワード同期は正常に終了しません。[パスワード期限の時刻]が経過すると、キャッシュされたパスワードが削除され、再試行されなくなります。