web-dev-qa-db-ja.com

SPNとKerberos委任

理解度を確認したいと思います。私は現在認定を勉強しているので、これは以下の完全に架空のシナリオです。

IIS SQLバックエンドからのデータにアクセスする基本的なWebサイトを備えたアプリプールがあります。Kerberos認証、したがって委任を設定したいと思います。

サイトを実行しているAppPoolのIDはIISApp01であり、SPNはHTTP/IISSRV01.serverfault.localに設定されています。

さて、これで問題はありませんが、Active Directoryのどこで委任オプションを設定しますか?IISアプリプールまたはユーザーアカウントIISApp01であるAppPoolのID。誰が実際に資格情報をSQLボックスに委任しますか?では、委任を許可している制約付きのサービスリストにサービスを追加するにはどうすればよいですか?

ありがとう!

3
PnP

短いバージョン: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と呼ばれるウェブサイト/プログラムが利用可能であり、これはあなたのためにこれらのものをマップするのに役立ちます。

*厳密には当てはまりません。多くの解決策があります。

3
TristanK