Active-Directory

定義組的域中的域控制器是否包含所有成員資訊?

  • December 24, 2019

假設我有一個包含許多域的林設置。如果我要從任何域中選擇一個任意安全組,找到該組的所有使用者成員(包括來自嵌套組的使用者成員)的最佳方法是什麼?無論組類型如何(即通用、全域或本地域),我都希望能夠做到這一點。我的理解是,我們不能單獨使用全域目錄,因為組成員不會在所有組類型中複製。

我們最終將使用程式碼來完成此操作,但現在我只想了解該過程。為簡單起見,假設我已經知道組的objectGUID值。高級步驟是:

  1. 查詢組林中的任何全域目錄(通過objectGUID )並通過其objectCategory屬性可分辨名稱檢索定義組的域
  2. 使用組的objectGUIDmemberOf:1.2.840.113556.1.4.1941作為過濾器查詢定義組的域控制器(在步驟 1 中檢索)

還有別的事嗎?是否存在我必須查詢更多域控制器(例如,更多子域)的邊緣情況?在其他情況下,我不必比全域編錄更進一步,因為組類型(或其他一些屬性)保證其所有成員資訊都在全域編錄中複製?

編輯

  • 將 objectCategory 更改為專有名稱

搜尋依據memberOf不會為您提供所有結果,因為您只會在搜尋範圍內找到使用者(例如,如果您搜尋一個域,您將只能找到該域中的使用者,即使該組有來自其他域的成員)。

誰是組成員的權威列表member在組本身的屬性中。該member屬性包含該distinguishedName組的所有成員。該member屬性被複製到全域目錄(僅適用於通用組),但是,AD 一次只為您提供 1500 個成員。對於任何不止於此的團體,您需要要求更多。

如果您打算從 開始objectGuid,那麼您可以使用它直接綁定到對象。你根本不需要搜尋。您可以使用此表示法綁定到具有 GUID 的對象:

LDAP://<GUID={guid}>

{guid}字元串 GUID在哪裡。然後你讀取member屬性。

如果一個組在其他域上有成員,如果該域不在同一個林中,這會使事情變得有點複雜。在這些情況下,組的member屬性將包含該組的同一域上的一個對象,稱為“外國安全主體”,其中包含外部域上實際帳戶的 SID。如果您想獲取有關該帳戶的資訊(例如姓名或電子郵件地址),則需要使用該資訊連接到外部域以檢索該資訊。

AD 也有“主要群體”的概念,它們是不同的,但你可能不需要擔心。我寫了一篇關於這個的文章,叫做什麼讓會員成為會員?.

我還用 C# 中的範常式式碼寫了一篇關於查找組的所有成員的文章,包括關注外國安全負責人。即使您不打算使用 C#,無論如何它都是後台的 LDAP,因此可以用另一種語言複製相同的結果。

引用自:https://serverfault.com/questions/996631