2012年11月13日 星期二

Windows Server 2012 動態存取控制 (Windows Server 2012 Dynamic Access Control)

傳統以來,Windows 系統的檔案目錄存取控制機制大多依賴共用權限(Shared Permission)與NTFS使用權限來確保其安全性,這種控制方式是由檔案或資料夾的擁有者(Owner)來決定誰可以存取資源以及所允許存取的動作,理論而言,Windows系統透過存取控制清單(Access Control List;ACL)的方式實現了判別存取控制模式(Discretionary Access Control ;DAC), 另一方面,基於簡化權限管理的理由,實務建議均利用群組來控制主體的存取方式,但此種延用已久又為IT人員熟悉的存取控制模式卻存在著安全上與管理維護上的問題,例如一旦擁有者允許某人可以讀取資料時,某人即可以拷貝檔案並獲得完全控制,此外,倘若有網路上有多部檔案伺服器分享資料時經常需要分別設定每部伺服器的存取權限,若是在大規模的網路環境下,更是經常需要維護大量的群組而造成管理不易,所以為了因應Windows Server 2012成為雲端伺服器,微軟在Windows Server 2012推出了動態存取控制(Dynamic Acces Control)機制並整合了Active Directory Right Management Service (ADRMS)來達到集中、彈性的控制存取並確保私密性傳輸。

何謂動態存取控制(Dynamic Access Control)

Windows Server 2012新增的動態存取控制機制原名為宣告式存取控制,可以讓您更彈性的管控檔案伺服器的存取與稽核工作,更進一步而言,動態存取控制允許跨越多部檔案伺服器來定義授權/稽核原則,而原則的定義乃是透過使用者或電腦的屬性為條件來進行分類資料的存取控制,進而達到更彈性、更細分化的集中控管文件檔案,例如基於資訊安全的需知(need to know)原則,您可以限制各個部門的文件唯有該部門的人員才能夠存取,其次,動態存取控制也允許您設定人員必需要同時隸屬於二個(或以上)特定群組才能夠存取文件檔案,這在先前的版本是做不到的。
換言之,動態存取控制是一種基於宣告為基礎(claim-based)的存取控制機制,讓企業組織可以利用Active Directory所發行與維護的使用者的宣告(使用者帳戶屬性)和裝置宣告(電腦帳戶屬性)來做為存取檔案的依據,此種宣告式存取控制不僅可由使用者與電腦所隸屬群組來決定是否允許存取,還可更進一步的決定於其所定義的"宣告",譬如您可以宣告"使用者來自人事部門"與"分類等級為高"的分類條件"才可以存取,所以同一個主體若從不同的位置或電腦存取同一份文件時就可能會有不同的存取權限(動態效果),此外,若將動態存取控制整合了ADRMS服務,便能夠使用ADRMS來自動保護敏感性資訊的傳輸安全性,即使資料已經離開伺服器後仍然受到保護,這提供資料的另一層保護。不過,動態存取控制並不會取代傳統本機NTFS使用權限的控制方式,亦即傳統的本機存取控制機制仍然有效,DAC不過是更進一步加強其存取控制的彈性條件並擴充其整體組織多部檔案伺服器的存取控制能力。

總之,動態存取控制讓管理人員依據使用者或裝置所宣告的屬性為依據來控制是否可以存取某種分類資源,這無疑強化並彈性化Active Directory環境下的檔案伺服器安全性。

動態存取控制基礎概念

動態存取控制機制的基本概念源自了資料分類、宣告及表達式的存取控制、再加以採用集中存取規則與原則、存取拒絕協助並且允許整合ADRMS來自動加密,這些相關的概念說以及所牽涉到的一些特殊名詞涵義可同時參考下一節的說明:

  • 資料分類與辨別 (Data Classfication):Active Directory檔案伺服器的檔案可以標籤資料的方式來做文件檔案的分類,亦即使用儲存在Active Directory的資源內容(resource properties )來對文件資料加以自訂分類以做為日後存取目標依據,此外,還可以根據文件的內容來自動分類,而檔案的分類將可用來做為日後授權的決定與依據,讓不同分類的文件擁有不同的授權方式。
  • 宣告表達式的存取條件 (Claim Expression-based access conditions):表達式的存取條件打破了傳統存取控制機制以群組為基礎的僵硬性條件設定,大幅提升了了文件檔案的管控彈性,表達式存取控制除了可根據主體是否同時為多個群組成員,也可依據自行定義的宣告,在文件的存取控制欄位(Access Control Entries;ACE)內設定使用者或設備的屬性來控制存取,然後再利用集中存取原則來集中控管整體網路文件檔案的存取安全性。
  • 表達式的稽核 (Expression-based auditing):透過全域稽核原則(Global Audit Policies)來實現稽核原則的集中部署。
  • 自動RMS加密(Automatic RMS encryption):一旦整合了ADRMS,可根據文件的分類來執行自動加密。
  • 存取拒絕時的協助 (Access Denied Assistance):由於使用條件表達方式所設定的存取條件可能多且複雜,一旦用戶被拒絕存取時,存取拒絕時的協助一方面可以提供詳細的問題診斷訊息給管理員,另一方面可讓用戶自我修補或請存存取,這比起過往只會出現一個存取拒絕的對話方塊而言,對用戶和管理人員均提供了更積極的處理協助。

動態存取控制相關技術與名詞

使用動態存取控制之前,您需要先認識幾個相關的技術名詞並了解其關聯性:

  • 宣告 (claim)
    宣告實務上是Active Directory使用者或電腦物件的屬性,於建立集中存取規則時可用來定義存取權限的要求條件,它通常是由可信賴的單位(通常是Windows Server 2012網域控制站)來提供與維護,就實作面而言,您可以在【Active Directory 管理中心】工具內的『動態存取控制』節點底下看到一個空白的『Claim Types』容區,由此新增所欲使用之宣告類型,例如您可以新增電腦物件的位置(location)、使用者或電腦的部門(Department)等宣告類型以便做為日後授權的基礎。
  • 資源內容 (Resource Property)
    資源內容用以描述資源的特性,藉以將存取的目標資源加以分門別類以利設定不同的存取條件,常用的資源內容如敏感性等級、位置等,在建立集中存取控制規則中,資源內容可用來分類資源、定義目標資源與權限。
  • 資源內容清單(Resource Property List)
    資源內容清單是一個容區物件,可以包含許多資源內容成為其成員,它的主要用途是將使用的多個資源內容加以組成群組,以方便透過群組原則來將其發佈給不同的用戶和檔案伺服器。
  • 集中存取規則(Central Access Rules)與集中存取原則(Central Access Policies)
    集中存取規則是一個授權規則的表達式,可以包括一個或一個以上有關於使用者群組、使用者宣告和資源內容的條件,而集中存取原則為一網域基礎的授權原則,包含了一些有條件的表達式(Conditional expressions),您可以組合多個集中存取規則成為一個集中存取原則,而就Active Directory的角色來看,一個集中存取原則包括一個唯一的GUID(msAuthz-CentralAccessPolicyID) 並包含多個集中存取規則 (msAuthz-MemberRulesInCentralAccessPolicy)。

使用動態存取控制的需求

由於動態存取控制為新增的功能,所以欲使用這項新的安全性功能,您須要符合下列的條件:

  • Active Directory目錄服務:至少要一部Windows Server 2012的網域控制站 (您並不需要升級到Windows Server 2012功能層級,所以大部份的Windows Server 2008 (R2)網域控制站伋可以繼續使用)。
  • 檔案伺服器:需執行Windows Server 2012 作業系統
  • 用戶端使用Windows 8 電腦:如果您需要使用裝置宣告(Devices claims)來定義集中存取原則。

總之,動態存取控制所標榜的彈性化存取控制特性來自於對使用者的驗證符記(authentication token)新增與提供了宣告,檔案中支援了資源內容並且在權限欄位和稽核欄位內加上條件表達式,整合了這些新增的設計再加上群組原則的強制集中管理能力,所以您可以藉由Active Directory的屬性為基礎來對不同特性分類的資料管理存取,這整個動態存取控制機制架構、牽涉到的電腦和專用名稱如下圖所示:

dacimplementation

      動態存取控制實務

      底下範例將示範某公司為了因應個資法的實施,所以需要嚴格控管人事部門的文件資料,希望對於高敏感度的人事相關文件唯有人事部門主管(經理或副理)才能夠存取,而一般文件也必需限制只有人事部門人員才能夠存取,在此情境需求下,吾人規劃採用動態存取控制來達成最低權限授予(Least Privilege)的目的。所以共需要建立二個宣告(department、title)、二項資源內容(部門、文件分類等級)、二條存取規則(人部門一般文件存取規則、人事部門高階文件存取規則)以及最後的一條集中存取原則用以套用到檔案伺服器的組織單位。

      dacplaning

      依據以上的規劃結果,管理員實現使用動態存取控制機制,共需要執行下列的步驟:

      1. 新增宣告類型
      2. 啟用資源內容
      3. 利用宣告類型和資源內容建立集中存取規則
      4. 建立集中存取原則,新增規則並設定權限
      5. 使用群組原則部署集中存取原則並套用於檔案伺服器
      6. 設定檔案伺服器資料內容
      7. 啟用網域控制站『KDC支援宣告、複合驗證以及Kerberos保護』功能
      8. 啟用Windows 8電腦『Kerberos用戶端支援宣告、複合驗證以及Kerberos保護』功能
      9. 測試存取連線

      上述的步驟中,您須要使用【Active Directory管理中心】工具來新增宣告、資源內容並建立集中存取規則與原則,至於檔案伺服器、網域控制站與Windows 8用戶電腦的群組原則設定與編輯則需要【群組原則管理】工具,最後透過【檔案總管】和【資源管理中心】來設定分享的目錄、檔案條件宣告與文件分類。

      新增宣告類型

      首先,依據上述的規劃,先行新增 "department"、"title" 這二項宣告類型,做法與步驟如下:

      1. 請開啟【Active Directory管理中心】工具,並於左側目錄結構中按一下『動態存取控制』項目,然於再按二下中間窗格的『Claim Types』以進入『Claim Types』設定頁。
        adac1
      2. 請在中間窗格的空白處以滑鼠右鍵按一下,並於出現的功能表上選取『新增→宣告類型』。
        adac2
      3. 接下來,請於『建立 宣告類型』的『來源屬性』設定頁,選取『department』屬性,並勾選右邊的『使用者』和『電腦』核選方塊,再到下方的『建議值』下一一輸入公司所有部門名稱做為其建議值。
        adac4
      4. 接下來,請於『來源屬性』設定頁內,選取『title』屬性,在此並不設定建議值,按『確定』。
        adac5
      5. 至此,我們已經順利的新增了department和title這二個宣告屬性,日後將可以同時利用部門和職稱屬性為條件來控制資源存取。
        adac6

      新增並啟用資源內容

      接下來,為了能夠控制安全性敏感程度不同的文件存取,所以我們決定新增資源內容,雖然預設上有一些可以直接使用的資源內容(例如confidentiality、deaprtment、impact…),但由於是英文關係或其建議值並不符合需求,所以我們在此仍然自訂的新增了文件分類等級和文件部門這二項資源內容,步驟與說明如下:

      1. 請在【Active Directory管理中心】工具內,選取『動態存取控制↘Resource Properties』項目,並且選擇執行『新增→資源內容』。
        resourceP1
      2. 於『建立 資源內容』設定頁,輸入"部門" 顯示名稱,選擇"Single-valued Choice"值類型,並在底下的『建議值』新增並一一輸入了公司所有的部門值,按『確定』。
        resourceP2 
      3. 接下來依據前面的規劃,繼續再新增第二個資源內容--文件分類等級,並輸入"低"、"中"、"高" 三個建議值,按『確定』。
        resourceP3
      4. 接下來需要立即啟用這二個資源內容,請同時選取上一個步驟所新增的二個資源內容,再由右鍵功能表選擇『全部啟用』即可。
        resourceP4
      5. 接下來,請將這二個已啟用的屬性新增至預設的資源內容清單 "Global Resource Property list"以方便日後應用於群組原則,所以請選取『動態存取控制↘Resource Property Lists』,按下一預設的資源內容清單 "Global Resource Property list"容區,然後再將所新增的"文件分類等級"和"部門"這二個資源內容加入清單內。
        resourcePl3

      建立集中存取規則

      下一個步驟將開始建立集中存取規則,由於人事部門的文件有較敏感資料的高階文件和中低階的一般文件二種,所以我們在此將新增二條存取規則,一方面對於高階文件只允許經由人事部門的主管(經理或副理)使用人事部門的電腦才能夠加以存取,至於一般文件只要是人事部門的員工就能夠存取,建立集中存取規則的步驟和說明如下:

      1. 請在【Active Directory管理中心】工具內,選取『動態存取控制↘Central Access Rules』項目,並且利用右鍵功能表執行『新增→集中存取規則』。
        car1
      2. 『建立 集中存取規則: 』設定頁中,先輸入規則名稱,然後定義目標資源,請按『目標資源』區域『編輯』按鈕。
        centaccrule1 
      3. 在『集中存取規則』對話方塊內,按『新增修件』,然後依據規劃,我們需要加上二項資源條件,一項為文件分類等級為高者,另一項為文件屬於人事部門(此二項資源內容已透過前面的步驟新增啟用),如下圖所示,二項資源條件亦為且(AND)的關係,代表同時符合才行,按『確定』。
        centaccrule14
      4. 接下來需要設定規則的權限,請先核選『使用下列權限做為目前的權限』,然後按『編輯』按鈕以重新定義權限,待畫面出現『權限 的進安全性設定』對話方塊後,按『新增』按鈕。
        centaccrule15
      5. 在『權限 的權限項目』對話方塊,按一下『選取一個主體』,接下來設定適當的基本權限等級(讀取、執行、寫入、修改),然後再新增額外的條件以限制存取,在此,根據先前的規劃,我們對於高階文件只限於人事部門的經理或副理可以利用人事部門的電腦來加以存取,所以需要新增四個額外的限制條件,設定如下圖所示:
        centaccrule7
        centaccrule16
      6. 按二次『確定』按鈕回到最後業已設定完畢的 『建立 集中存取規則…….』設定頁,請檢查規則名稱、資源條件和目前權限條件是否如規劃的正確無誤,最後按下『確定』完成了第一條存取規則的建立工作。
      7. 依據規劃還需要替人事部門敏感度較低的中低階文件建立第二條存取規則,額外的限制條件只要是人事部門的員工即允許存取,所以設定完後的規則內容如下圖畫面。
        centaccrule20
      8. 最後,我們已經如預先規劃的存取條件,建立了二條集中存取規則,將可以做為下一步驟建立集中存取原則的依據。
        centaccrule13

      建立集中存取原則

      一旦成功的建立存取規則後,接下來即可利用這些規則來建立群組原則所需要使用的存取原則,步驟與說明如下:

      1. 於【Active Directory管理中心】工具內,選取『動態存取控制↘Central Access Policies』項目,並利用右鍵功能表執行『新增→集中存取原則』選項功能。
        cap1
      2. 於『建立 集中存取原則: 』設定頁中,先輸入原則名稱,然後按『新增』按鈕以新增上一個步驟所建立的二條存取規則。
        cap6
      3. 一旦完成新增存取規則後,請按『確定』按鈕以順利建立最終的集中存取原則,而這個存取原則將搭配Active Directory群組原則以強制應用在檔案伺服器上。
        cap7

      使用群組原則將集中存取原則套用於檔案伺服器組織單位

      接下來,為了順利讓組織的多部檔案伺服器均會強制上面所建立的存取原則以符合人事部門文件存取的安全性條件,您需要先替檔案伺服器建立一個組織單位,並將檔案伺服器的電腦帳戶搬到這個組織單位之下,如下圖所示,可直接利用【Active Direcory管理中心】管理工具建立名稱為"檔案伺服器"組織單位,並將網域內的所有檔案伺服器搬移到容區下,如下圖所示,在檔案伺服器組織單位下可看到有二部伺服器帳戶fs1和fs2:

      computers
      底下將建立並編輯群組原則物件,藉以指定適當的集中存取原則以及稽核原則,步驟與說明如下:

      1. 啟動【群組原則管理】工具,並替『檔案伺服器』組織單位建立並連結一個群組原則物件(在此命名為"動態存取控制群組原則物件")。
        gpmc103
      2. 接下來請啟動『群組原則管理編輯器』來編輯此物件,請在編輯器上瀏覽至『電腦設定↘原則↘Windows設定↘安全性設定↘檔案系統↘集中存取原則』節點,並在右側窗格右鍵功能表選取『管理集中存取原則』選項。
        gpedit1
      3. 待出現『集中存取原則設定』畫面時,您可以在左側看到先前創造的集中存取原則名稱,將其新增至右側的『適用的集中存取原則』後,按『確定』。
        gpedit02
      4. 接下來將啟用集中存取原則的稽核功能,以利日後的測試檢視與問題診斷。請在相同的群組原則編輯器上,瀏覽至另一個位置『電腦設定↘原則↘Windows設定↘安全性設定↘進階稽核原則設定↘稽核原則↘物件存取』,並按二下右側的『稽核集中存取原則執行』項目,然後在出現的對話方塊上,勾選所有的核選方塊以啟用集中存取原則的稽核功能,然後再按二下『稽核檔案系統』項目並啟動其成功與失敗的稽核功能,完成後請按下『確定』並關閉群組則管理編輯器。
        auditpl5
      5. 最後,回到『群組原則管理』工具,以滑鼠右鍵按一下『檔案伺服器』組織單位,並於出現的右鍵功能表選取『更新群組則』以便立即更新群組則使其生效。若強制更新失敗,即可能是您的電腦尚未啟動遠端管理程序功能,請於所有伺服器上執行 gpupdate來手動更新。
        gpmcupdate

      啟用網域控制站『KDC支援宣告、複合驗證以及Kerberos保護』功能

      為了讓網域可以支援動態存取控制所需要的宣告及複合驗證,您必需於網域控制站的群組原則物件啟用這項功能,做法如下:

      1. 從【群組原則管理】工具中,編輯『Default Domain Controllers Policy』,找到『電腦設定↘原則↘系統管理範本↘系統↘KDC』節點並按二下右側窗格內的【KDC 支援宣告、複合驗證以及Kerberos 保護】,然後在出現的對話方塊中選取【已啟用】並在選項的下拉式選單中選擇【支援】選項,按【確定】並關閉群則原則管理編輯器。
      2. 最後,於『Domain Controllers』這個組織單位的右鍵功能表,按下『更新群組原原則』來立即更新群組則。若強制更新失敗,即可能您的機器尚未啟動遠端管理程序功能,則只好直接在網域控制站上執行 gpupdate /force來手動更新。
        kdc3

      檔案伺服器的更新、重新整理並設定

      為了讓檔案伺服器更新了所有動態存取控制的功能與原則,請至檔案伺服器並在Windows Powershell視窗下執行 "gpupdate/force"以更新群組原則和"Update-FSRMClassificationpropertyDefinition”以重新整理"Global Resource Properties"。

      powershell1

      上述的重新整理"Global Resource Properties"的cmdlet著實冗長易錯且不易記憶,另一個較友善的介面是使用【檔案伺服器資源管理員】工具(需安裝),並在『分類管理↘分類屬性』資料夾的右鍵功能表執行『重新整理』。

      fsrm1

      接下來您還要針對文件資料夾及其下的檔案執行二項作業:

      • 設定資料夾所使用的集中存取原則
        首先,執行檔案管理員,開啟特定目錄的『內容』對話盒,然後選擇『安全性』索引標籤內的『進階』按鈕,『進階安全性設定』對話方塊內按一下『集中原則』索引標籤變選擇所要使用的集中存取原則。如下圖乃是對於人事部門的資料夾設定使用"人事部門文件存取原則"。
        dataclass9
      • 設定個別檔案的分類屬性
        接下來再針對目錄下每個需要保護的人事部門文件檔案,選擇檔案『內容』對話方塊的『分類』索引標籤,正確的定義其屬性值(本範例為二個先前定義的資源屬性--文件分類等級和部門),如下圖所示:
        dataclass5

      啟用Windows 8成員電腦支援『Kerberos用戶端支援宣告、複合驗證以及Kerberos保護』功能

      由於本範例的存取規則有使用到設備宣告(device claim),所以您需要使用Windows 8的電腦才能夠存取,並且啟用其宣告驗證的功能,最好的做法是透過群組原則,集中強制啟用網域內的Windows 8這項宣告驗證功能:

      1. 開啟Default Domain Policy的群組原則管理編輯器。
      2. 瀏覽至『電腦設定↘原則↘系統管理範本↘系統↘Kerberos』位置,選按右側的『Kerberos 用戶端支援宣告、複合驗證以及Kerberos保護』並設定為『已開啟』。
        enablekerberos
      3. 您可能需要重新開機讓Windows 8電腦可以請求宣告驗證。

      連線存取測試

      一旦設定完成,請檢查群組原則是否已經套用到檔案伺服器(使用 gpresult /v)、網域控制站也已經"支援宣告、複合驗證與Kerberos保護"功能,最後您須要連線測試是否如預期的條件存取權限生效了,若有使用到裝置宣告請務必使用Windows 8作業系統並啟用了支援宣告、複合驗證之功能,一旦存取的結果與規劃的預期不同,則您可以利用檔案內容對話內的『有效權限』來測試結果,或利用 "whoami/claims" 命令顯示目前登入使用者的宣告內容,或者稽核下的安全性記錄檔來診斷可能產生問題的原因。

      dactest4

      結語

      動態存取控制提供一種高彈性的方式來讓您控制用戶如何存取網域內的檔案伺服器,讓Windows Server 2012的檔案伺服器可以更符合隨需存取、存取安全的雲端環境,它擴充了長久以來的NTFS本機使用權限存取控制方式,而擁有更具彈性跨越多部檔案伺服器的條件表達式存取控制,但它並非用來取代傳統的本機檔案系統的存取控制機制,而是整合了Active Directory與ADRMS來擴充資料的存取保護機制,不過對於管理人員而言,導入動態存取控制機制後,其存取控制設定上顯然也比單純的本機存取控制來的複雜的多,需要更多的額外規劃和設定工作,需要依賴Active Directory架構,需要有Windows Server 2012的網域控制站,架設Windows Server 2012的檔案伺服器,使用Windows 8的用戶端平台(如果有裝置宣告),這對目前的IT人員或企業網路環境可能形成了使用上的障礙,所以是否導入動態存取控制,將取決於彈性的安全性需求、管理維護上的考量以及架設條件符合等因素。