こんにちは。
本日は、複数のフォレストおよびドメインが存在する環境での委任の動作についてお知らせします。
Active Directory ドメイン環境上では、フォレストを跨いだ Kerberos の制限付き委任を利用することが可能です。この Kerberos の制限付き委任ですが、別フォレストのユーザーからの認証が行われると内部的にネガティブ キャッシュが生成され、それまで正常に動作していた認証処理が失敗することがあります。
例えば以下のような構成を想定します。
- 双方向のフォレストもしくは外部信頼を結んだ 2 つのフォレストが存在する (contoso.com と adatum.com)。
- contoso.com には、以下のようなマシンが存在している。
- Active Directory Domain Controller
- SQL Server (リンク サーバー)
- プロシージャーが配置されている SQL Server
- adatum.com には、以下のようなマシンが存在している。
- Active Directory Domain Controller
上記構成において、SQL Server で委任が設定されており、リンク サーバー経由のプロシージャーを実行できるとします。
この状態で、contoso.com ドメイン上のクライアントで SQL Server Management Studio を起動し、SQL Server (リンク サーバー) に接続するとします。
このとき以下のようになります。
- contoso.com のユーザーが SQL Server (リンク サーバー) に接続しリンク サーバー経由のプロシージャーを実行した場合、委任は正常に動作します。
- 次に、adatum.com のユーザーが SQL Server (リンク サーバー) に接続しリンク サーバー経由のプロシージャーを実行した場合、委任が正常に動作せずプロシージャーの実行に接続が失敗します。
- その後、contoso.com のユーザーが SQL Server (リンクサーバー) に接続しなおしてリンク サーバー経由のプロシージャーを実行しても、委任が動作せずプロシージャーの実行接続に失敗します。
これは、adatum.com のユーザーによる接続時に、SQL Server (リンク サーバー) 内で認証のネガティブ キャッシュが生成されるためです。このネガティブ キャッシュは、既定で 15 分保持されます。よって、15 分の間、contoso.com のユーザーがリンク サーバー経由のプロシージャーを実行できない状態となります。
恐れ入りますが、これは委任における現行製品上の想定された動作です。本事象に該当する場合は、以下のようにレジストリを変更することで対応可能です。以下により、ネガティブ キャッシュの保持期間を 15 分から 0 分に変更し、事象に変化がみられるかご確認ください。
値の名前: S4UCacheTimeout
キー: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters
タイプ: DWORD
値: 0
上記設定は以下でも確認いただけます。
Kerberos Authentication Tools and Settings
https://technet.microsoft.com/en-us/library/cc738673(v=ws.10).aspx
なお、本動作については、過去に開発部門でも対応が検討されましたが、すでに正常に動作している認証処理のシナリオに影響が生じることなどを考慮し、対応が見送られております。何卒ご理解いただけますと幸いでございます。