繁体   English   中英

使用NamedPipe访问Windows服务之间的安全性

[英]Access security between Windows Services with NamedPipe

我有一个C / C ++ Windows服务实现,它使用NamedPipe部署在两个不同的服务器上,以便它们可以彼此通信。

我遵循最小特权原则,将服务帐户分配给“ NT AUTHORITY / NetworkService”,使用具有“读取权限”(A; OICI; GR ;;; NS)的安全描述符创建NamedPipe,阻止匿名访问,阻止所有内置访客,将所有权限授予登录的用户和管理员组。

服务给我一个“访问被拒绝(0x5)”错误。

这是我尝试过的事情:

  1. 我试图授予“ NetworkService”帐户的所有权限。 我知道这很糟糕:(但只是看看它是否有效!访问被拒绝

  2. 允许对匿名用户的读取权限(我读到“ NetworkService”帐户向网络上的其他计算机提供了匿名凭据)。 拒绝访问

该服务正在与我的控制台测试应用程序:(但不能与其他服务一起使用。安全性至关重要,我只希望两台服务器之间能够相互通信。

谁能告诉我,是否应该为两个服务器中的每个服务创建一个特定帐户?

这些服务器不在域中,因此我不确定如何创建网络范围的帐户,即使可能也无法确定。 我对Windows管理的东西不太满意!

这是使服务相互通信的正确方向吗?

听起来您有设计问题。

当您编写“使用具有'读取许可权'的安全描述符创建NamedPipe“时,问题应为” 对谁的读取许可权?“。 权限始终与受托人相关。

在Windows中,受托人并不存在于真空中。 它们总是在某个范围内定义。 如果没有中央用户数据库(Active Directory),那将是每台计算机的本地范围。 两台计算机具有不同的,不重叠的受托者集合。 Administrator一台机器上是无关的Administrator在另一个上。

因此,当您向NetworkService授予对一台计算机上NamedPipe的所有访问权限时,这可能意味着您从该sam计算机访问权授予了NetworkService受托人。 不是来自其他计算机的NetworkService

根本上,如果没有主域控制器来充当共享权限,那么两台Windows PC便不会相互信任 每个都是其自己的安全授权。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM