對不同林的網域使用者進行大規模的權限分配

顯然我的業力是這樣的:以各種不平凡的方式實施標準任務。 如果有人對問題有不同的看法,請進行討論,以便問題解決。

在一個晴朗的早晨,出現了一項有趣的任務,即向使用者群組分配不同共享的權限,其中包含帶有文件資料夾的項目子資料夾。 一切都很好,並且編寫了一個腳本來為資料夾分配權限。 然後事實證明,這些群組應該包含來自不同網域、不同林的使用者(對於那些忘記它是什麼的人)。 假設共享本身位於 Synology 媒體上,並在 PSI 林的 FB 網域中註冊。 任務:允許另一個林中的網域的使用者能夠存取此共享的內容,並且非常有選擇性。

一段時間後,技術規格採用以下形式:

  • 2個森林:PSI森林、TG森林。

    對不同林的網域使用者進行大規模的權限分配

  • 每個森林有3個域:PSI(ZG、PSI、FB); TG(TG、HU、KC)。
  • 林之間存在信任關係;Synology 可以看到所有林中的所有安全群組。
  • 共用和資料夾/子資料夾必須擁有具有 FullControl 權限的 FB 網域管理員帳戶
  • 資料夾的名稱應該系統化。 管理層協調了專案 ID;我決定將安全群組的名稱連結到專案 ID。
  • 系統共用中的專案資料夾必須包含預先在 .xlsx 檔案中準備好的結構,並具有適當的存取權限(R/RW/NA,其中 NA – 無存取權限)

    對不同林的網域使用者進行大規模的權限分配

  • 應該可以將一個專案的使用者/群組成員的權限限制為該專案的某些目錄。 使用者可能無權存取其他目錄/項目,具體取決於群組成員資格。
  • 建立專案資料夾時,應盡可能在適當的網域中自動建立群組,其名稱與專案 ID 相對應。

技術規格註釋

  • 建立信任關係不屬於技術規範的範圍
  • 項目 ID 包含數字和拉丁字符
  • 所有網域的專案使用者角色都有標準名稱
  • 在整個專案開始之前準備一個包含資料夾和存取權限(存取矩陣)的 .xlsx 文件
  • 實施專案時,可以在對應的網域中建立使用者群組
  • 透過使用標準 MS Windows 管理工具實現自動化

技術規範的實施

在正式確定這些要求後,我們暫時暫停了測試建立目錄和為其指派權限的方法。 它的目的是僅使用 PowerShell,以免使專案複雜化。 正如我之前所寫,腳本演算法看起來非常簡單:

  • 我們使用從專案 ID 派生的名稱(例如 KC40587)以及存取矩陣中指定的相應角色來註冊群組:KC40587-EN- 用於工程師; KC40587-PM – 產品經理等
  • 我們取得所建立群組的 SID
  • 註冊項目資料夾和相應的目錄集(子資料夾清單取決於在存取矩陣中建立和定義它的共用)
  • 根據存取矩陣為專案的新子目錄分配權限。

第一階段遇到的困難:

  • 對腳本中指定存取矩陣的方法的誤解(現在實現了多維數組,但正在根據.xlsx檔案/存取矩陣的內容尋找填充它的路徑)

    對不同林的網域使用者進行大規模的權限分配

  • 無法使用PoSH 在Synology 硬碟上的SMB 共用中設定存取權限(https://social.technet.microsoft.com/Forums/en-US/3f1a949f-0919-46f1-9e10-89256cf07e65/error-using-seta-on - nas -share?forum=winserverpowershell),因此浪費了大量時間,並且所有內容都必須使用 icacls 存取權限編輯實用程式來適應腳本,這需要建立文字和 cmd 檔案的中間儲存庫。

在當前模式下,cmd檔案的執行是手動控制的,取決於需要為專案註冊資料夾。

對不同林的網域使用者進行大規模的權限分配

事實證明,還應該執行該腳本來註冊其他林中的組(使用了術語“跨域”),並且比例不僅可以是 1 比 1,還可以是 XNUMX 比多。

對不同林的網域使用者進行大規模的權限分配

這意味著來自其他跨域(包括相鄰林)的群組現在可以聲明對任何網域資源的存取權限。 為了實現一致性,決定在所有林的所有服務域的 OU 中建立對稱結構(黑色垂直橢圓形)。 正如他們所說,在軍隊裡,一切都應該是醜陋的,但統一的:

對不同林的網域使用者進行大規模的權限分配

因此,當在TG域中註冊項目80XXX時,腳本執行:

1. 在本網域和跨網域(即其員工必須有權存取該資源的網域)中建立對應的 OU(紅色水平橢圓)。

2. 用名稱如下的群組填滿 OU -, 在哪裡:

  • SRC_域 – 跨域,其員工將有權存取DST域資源
  • DST_domain – 實際上應該提供對其資源的存取的網域,也就是說,一切都是為了該網域而啟動的
  • - 項目編號
  • 角色 – 存取矩陣中列出的角色名稱。

3. 讀取所有涉及網域的所有群組的 SID 數組,並將其儲存以供後續資料傳輸到定義特定項目子資料夾權限的檔案中

4. 產生具有一組權限的來源檔案(參數 /restore),供 icacKC 公用程式在可執行檔模式下使用“icacKC "as-nasNNKCProjects" /restore C:TempKCKC40XXKC40XX.txt”

5. 建立一個 CMD 文件,將所有專案資料夾的所有啟動的 icacls 組合起來

對不同林的網域使用者進行大規模的權限分配

如前所述,啟動可執行檔是手動完成的,執行結果的評估也是手動完成的。

我們最終不得不面對的困難:

  • 如果專案資料夾已充滿大量文件,則在現有磁碟區上執行 icacls 命令可能需要相當長的時間,並且在某些情況下會導致失敗(例如,當檔案路徑很長時);
  • 除了 /restore 參數之外,我們還必須添加帶有 /reset 參數的行,以防資料夾未創建,而是從先前存在的資料夾轉移,並且禁用根目錄的繼承權;
  • 用於建立群組的部分腳本必須在每個林的任意 DC 上執行,問題涉及每棵樹的管理帳戶。

一般結論:很奇怪的是,市場上還沒有具有類似功能的實用程式。 似乎可以基於 Sharepoint 門戶實現類似的功能。
同樣令人無法理解的是,無法使用 PoSH 實用程式在漢學設備上設定資料夾權限。

如果需要的話,如果有人有興趣的話,我準備好透過在 github 上建立一些專案來共享腳本。

來源: www.habr.com

添加評論