2016-08-26 36 views
0

舉個例子,比方說:如何在Active Directory中存儲組織層次結構並將其用於應用程序?

  1. 我有一個組織叫「美國」。我的用戶是「居民」,根據他們的主要地址,每個用戶通常擁有一個城市,縣和州,這些都是具有等級性質的。但是一些用戶可能具有或多或少的級別,取決於他們的位置:例如他們可能沒有一個城市(只有一個縣和一個州),或者如果居住在一個大城市中有一個鄰居,除了城市,縣和州。我事先不知道這個等級會有多深(例如鄰里可能會有更多的細分)。對於層次結構中的每個級別(鄰居,城市,縣和州),我都有零個或多個用戶,他們是該市,縣或州的「經理」。

  2. 用戶訪問應用程序,用它們創建工件。應用程序將工件存儲在單獨的數據庫中,比如說SQL Server。用戶可以在創建它時訪問特定的工件,或者他們是創建工件的用戶的鄰居,城市,縣,州等的「管理者」之一。

(爲簡單起見,我只是假設用戶從來沒有給定用戶的整個系統的生命週期不會改變「移動」,即市,縣,和狀態。)

我的問題是:

  1. 如果用戶在Active Directory中定義,您是否還將組織結構存儲在Active Directory中?那麼用戶是否是什麼級別的管理者呢?如果你將它存儲在Active Directory中,你會怎麼做?

  2. 您會在工件上保存哪些信息,以便您可以快速獲取用戶有權訪問的所有工件的列表,而無需爲數據庫中的每個工件查詢Active Directory?

對於第2點,可能我想象會是SQL Server存儲,每個神器以來,用戶的級別(市,縣,州...)誰創造了它。通過這種方式,搜索可以通過對Active Directory進行查詢來確定用戶是($levels_user_is_manager_of)的管理者的級別,並且在SQL查詢中選擇用戶有權訪問哪些工件來執行諸如WHERE level in $levels_user_is_manager_of之類的操作。這些意義是否合理?

回答

1

在將應用程序特定數據存儲在AD中之前,有優點和缺點需要考慮。 Pro:控制企業級應用程序,大多數AD用戶使用該應用程序;由專職且通常有限的團隊進行所有權(對AD的更改通常由IT /服務檯完成),這是更安全和可追溯的。 Contra:AD應保留無法控制的數據(如果數據被使用或不使用,則不透明); AD的變化可能需要一段時間才能傳播。

保持鑑於上述情況,考慮

1)使用角色/會員(即創建角色 「GeoUser美國,IL,芝加哥」, 「GeoUser美國,IL」, 「美國的GeoManager,IL」,等等。 )。這將幫助您爲任何用戶分配任意數量的權限,而不考慮其主要地址。使用嵌套AD組(即「GeoUser US,IL」將是「GeoUser US,IL,Chicago」等的父項)。 2)保持登錄名和日期/時間只是爲了知道誰創建它以及完整的位置(即如果作者擔任「GeoUser US,IL,Chicago」角色,然後存儲「美國,IL,芝加哥」 )。這將有助於您保留位置以防作者更改地址或離開公司(並且其賬戶將被刪除)。根據授權用戶自己的「傑奧」 -roles使用通配符搜索(例如,如果用戶在「美國的GeoManager,IL」,那麼WHERE子句會在哪裏水平LIKE「美國,IL,%」,這應該找到IL所有文物,包括孩子的位置

相關問題