簡體   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