[英]Access security between Windows Services with NamedPipe
我有一個C / C ++ Windows服務實現,它使用NamedPipe部署在兩個不同的服務器上,以便它們可以彼此通信。
我遵循最小特權原則,將服務帳戶分配給“ NT AUTHORITY / NetworkService”,使用具有“讀取權限”(A; OICI; GR ;;; NS)的安全描述符創建NamedPipe,阻止匿名訪問,阻止所有內置訪客,將所有權限授予登錄的用戶和管理員組。
服務給我一個“訪問被拒絕(0x5)”錯誤。
這是我嘗試過的事情:
我試圖授予“ NetworkService”帳戶的所有權限。 我知道這很糟糕:(但只是看看它是否有效!訪問被拒絕
允許對匿名用戶的讀取權限(我讀到“ NetworkService”帳戶向網絡上的其他計算機提供了匿名憑據)。 拒絕訪問
該服務正在與我的控制台測試應用程序:(但不能與其他服務一起使用。安全性至關重要,我只希望兩台服務器之間能夠相互通信。
誰能告訴我,是否應該為兩個服務器中的每個服務創建一個特定帳戶?
這些服務器不在域中,因此我不確定如何創建網絡范圍的帳戶,即使可能也無法確定。 我對Windows管理的東西不太滿意!
這是使服務相互通信的正確方向嗎?
聽起來您有設計問題。
當您編寫“使用具有'讀取許可權'的安全描述符創建NamedPipe“時,問題應為” 對誰的讀取許可權?“。 權限始終與受托人相關。
在Windows中,受托人並不存在於真空中。 它們總是在某個范圍內定義。 如果沒有中央用戶數據庫(Active Directory),那將是每台計算機的本地范圍。 兩台計算機具有不同的,不重疊的受托者集合。 Administrator
一台機器上是無關的Administrator
在另一個上。
因此,當您向NetworkService
授予對一台計算機上NamedPipe的所有訪問權限時,這可能意味着您從該sam計算機訪問權授予了NetworkService
受托人。 不是來自其他計算機的NetworkService
!
根本上,如果沒有主域控制器來充當共享權限,那么兩台Windows PC便不會相互信任 。 每個都是其自己的安全授權。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.