理解度を確認したいと思います。私は現在認定を勉強しているので、これは以下の完全に架空のシナリオです。
IIS SQLバックエンドからのデータにアクセスする基本的なWebサイトを備えたアプリプールがあります。Kerberos認証、したがって委任を設定したいと思います。
サイトを実行しているAppPoolのIDはIISApp01
であり、SPNはHTTP/IISSRV01.serverfault.local
に設定されています。
さて、これで問題はありませんが、Active Directoryのどこで委任オプションを設定しますか?IISアプリプールまたはユーザーアカウントIISApp01
であるAppPoolのID。誰が実際に資格情報をSQLボックスに委任しますか?では、委任を許可している制約付きのサービスリストにサービスを追加するにはどうすればよいですか?
ありがとう!
短いバージョン:ADユーザーとコンピューターのプリンシパルの[委任]タブで、SPNを構成したばかりのセキュリティプリンシパル(つまり、ユーザーまたはコンピューター)の委任オプションを設定します。
長いバージョン:いいえ、いいえ、いいえ!
Kerberos認証を設定したくないしたがって委任。これらは、互いに独立した別個の概念です。
何も委任しなくても、Kerberosを使用して認証できます。実際、Windows2008のIIS 7以降は、デフォルトの構成で出荷されます。つまり、実際のホスト名が使用されている単一のドメインメンバーボックスでCurbを実行できます。認証。「カーネルモード認証」およびスポイラーを参照してください。説明したとおりにシナリオを機能させるには、これをオフにする必要があります*。
Curb Delegationでは、1つのプリンシパルを使用して1つのKerberos認証ホップを終了し、元の要求元のセキュリティプリンシパル(ユーザー)に代わって別のホップを実行する必要があります。
ソリューションに戻る:
したがって、PC-> IIS-> SQLの場合、各プロセスが実行されているユーザーを次のようにマップする必要があります。
PC(ユーザー)-> IIS(アプリプールアカウント(IISApp01))-> SQL(サービスアカウント( "SQLService"))
このシナリオでは、すべてのアカウントがドメインユーザーアカウントである必要があります。簡単にするために、問題のWebサイトのWindows統合認証オプションでカーネルモード認証を無効にする必要があります。
次に、各ホップで使用されているSPNを特定し、各ホップに登録されていることを確認する必要があります。
PC(ユーザー)は関係ありません
IIS層:SETSPN -S IISApp01 http/name.used.by.client(これは自動ではありません)
SQL層:SETSPN -S SQLService mssql/name.used.by.iis.app:1433(これは自動であった可能性があります)
次に、IISApp01で[委任]タブを使用できるようにする必要があります。このタブで、IISApp01が制約付き委任に対して信頼されていることを指定できます(検索、SqlServiceの選択、およびSqlServiceに対して登録された適切なSPNの選択)。
DelegConfigと呼ばれるウェブサイト/プログラムが利用可能であり、これはあなたのためにこれらのものをマップするのに役立ちます。
*厳密には当てはまりません。多くの解決策があります。