【发布时间】:2022-01-22 22:19:47
【问题描述】:
想象这样一个场景:您希望 WPF 应用程序代表服务台操作员帐户在用户计算机上运行一些 Powershell 脚本。 一种方法是通过 HTTPS 使用您要运行的脚本发送纯文本服务台操作员凭据,并从中创建 NetworkCredentials。不是那么安全但足够简单。
安全审核后新请求的方法是尝试使用 Kerberos 票证而不是纯文本凭据,但我很困惑这将如何工作,因为据我了解 Kerberos 它是客户端、服务器和密钥分发中心之间的多步骤操作所以我不明白服务器如何为服务台操作员创建 Kerberos 票证,然后通过 HTTPS(也许还有其他一些更多的 Kerberosy 方式)将其发送给客户端,客户端会以某种方式使用它而无需任何类型的密钥验证和等等..如果没有密钥验证,哪种方式会更安全?
也许客户端可以发出某种类型的 Kerberos 请求来获取操作员的凭据,但我还是不明白这怎么可能同时又是安全的。
有没有人有这方面的经验或者可以给我举个例子?
顺便说一句。服务器正在运行 ASP.NET Core,如果这有任何帮助或打开了一些可能性,并且所有环境都完全在 Active Directory 控制之下
编辑 1:在发表评论后,我必须澄清 WPF 应用程序是在几乎没有特权的普通最终用户凭据下启动的,它与服务器联系并下载为要运行的脚本和操作员凭据,因此脚本不会在脚本失败正在做一些需要更高权限的事情。
【问题讨论】:
-
您可以在该用户下运行应用程序,无需模拟用户。无论哪种方式,服务器和客户端都需要信任 KDC,因此要么在同一个域中,要么在它们的域之间具有信任关系
-
问题是应用程序是由没有任何管理员权限的普通最终用户启动的,应用程序启动后它会下载脚本和凭据以运行。出于技术和流程的原因,它必须是这样的
-
这听起来不太安全。什么是阻止用户手动下载那些更高的“服务台操作员帐户”凭据并恶意使用它们?相反,您应该首先授予用户所需的权限,或者设置一个系统,例如,他们可以启动可以以更高权限运行的作业。授予用户访问高级凭据的权限是不安全的本质
-
第一,他们不能自己下载,脚本必须在服务器上等待他们,第二,即使他们可以下载凭据,它们总是与脚本配对,第三,你在同一段告诉我给他们更高的用户权限,我们谈论的是数十万员工,并告诉我在短时间内给他们那些操作员凭据是不安全的,他们不能用于任何其他事情,只能运行脚本
-
那么最好的办法就是赋予他们启动该工作的权利,该工作将以更高的权限执行。也许机器帐户可以被赋予这些权限,然后任务可以在
NETWORK SERVICE帐户下执行。或者您可能只需要一个组策略登录脚本或类似的东西。您的用例非常清楚:这些脚本实际上做了什么?
标签: c# authentication kerberos