web-dev-qa-db-ja.com

ユーザーに対するKerberosの制約のない委任

サービスユーザーに対して設定できる「任意のサービスへの委任に対してこのユーザーを信頼する」を設定するオプションがあることに気付きました。私はコンピューターに関して制約のない委任について多くを読みましたが、ユーザーがどこにも言及されたのを見たことはありません。

これをコンピュータに設定することと比較して、これが何をするのか誰でも明確にすることができますか?コンピューター(Webアプリなど)では、サーバーはそれに接続する任意のユーザーのチケットを使用して、DBサーバーまたは他のサーバーに委任できることを理解しています(制約のない委任について話す場合)。

しかし、これと同じ権利を持つユーザーのコンテキストではどうなりますか?ユーザーはユーザーのチケットを要求して委任するだけですか?そもそもユーザーはどのようにしてチケットにアクセスできるのでしょうか。また、他のユーザーに成り代わるには何が必要ですか。エクスポートされたTGTチケットだけですか?

どうもありがとう!

2
ptr0x01

WindowsでKerberosの制約付き委任(または何か リソースベースの委任 )を行う場合、プロセスのアイデンティティに委任権を割り当てますインバウンドホップからのkerberosチケットを受け入れます。

つまり、プロセスがドメインuserとして実行されている場合、そのuser委任を有効にする必要があります。システムタイプのIDとして実行されている場合、コンピューターは実行されます。ただし、常に委任を制約するか、新しいリソースベースの委任モデルを使用する必要があります(バックエンドSPNを識別する代わりに、ターゲットサービスIDからターゲットサービスIDに委任できるフロントエンドIDを識別します)。

Unconstrained委任はお勧めできません-Windows Server 2003ですぐに制約を得たWindows 2000での一時的な解決策と考えるのが最も良いでしょう。制限なしの、別のサービスへの適格なサービスプリンシパル(読み取り:ユーザーまたはコンピューター)。誰かのチケットを取得し、彼らができることは何でもしてください-制約のない委任でサービスセットを制御することは、接続しているユーザーを制御することを意味しました。

IIS Webアプリケーションの場合、これは通常、アプリプールアカウント-そのアプリプールに関連付けられているw3wp.exeプロセスの基本(非クライアント偽装)IDを意味します。アプリプールが実行されている場合asLocalSystem(それをしないでください)、Local ServiceNetwork ServiceまたはApplicationPoolIdentity、次に、縁石チケットおよび委任のデコードに使用されるIDはコンピューターアカウントです(UseAppPoolCredential = trueやUseKernelMode = falseなどの他の警告がいくつかあるため、チケットのデコードに非カスタムユーザーIDが使用される可能性がありますが、これは範囲外です)。

すべてのセキュリティプリンシパルに委任権を割り当てることができます。ユーザーオブジェクトにサービスプリンシパル名(SPN-SetSPN.exeを使用)を付与すると、コンピューターはデフォルトで(ホスト/コンピューター名)、DSA.mscの[委任]タブを有効にします。

上記の1つの例外は Group Managed Service Accounts (gMSA)です。これは、ドメインIDを使用してサービスを実行する新しいサービスの最初の選択肢である必要があります。複雑なパスワードを管理し、アカウント自体に対する簡単な長期パスワード攻撃を防ぎます。

1
TristanK

具体的には、コンピューターアカウントを使用する代わりに、サービスアカウントとして使用されるユーザーアカウントを対象としています。

0
Steve