ACL 技術摘要
本主題摘要概述有關 Discretionary 存取控制清單 (DACL)、系統存取控制清單,以及存取控制項目 (ACE) 之 Managed API 的資訊。 您可以使用 System.Security.AccessControl 命名空間中的類別,在 .NET Framework 2.0 (含) 以後版本中,以程式設計方式存取幾種受保護資源的 DACL、SACL 和 ACE。
Managed ACL API 提供幾個類別,為您處理眾多瑣碎的細節,讓您利用 ACL 操作比 Unmanaged 實作更加容易。 例如,您不可能在 Managed 實作中建立 null DACL,但您毋需再擔心因為 ACE 的順序排列不正確而意外建立不安全的 DACL。
關鍵字
存取控制清單 (ACL)、Discretionary 存取控制清單 (DACL)、系統存取控制清單 (SACL)、存取控制項目 (ACE)、稽核 ACE
命名空間
相關技術
背景
Discretionary 存取控制清單 (DACL) 有時簡稱為 ACL,是 Microsoft Windows NT (含) 以後版本用來保護資源 (例如,檔案和資料夾) 的機制。 DACL 包含多個將主體與控制資源使用情形之規則相關聯的存取控制項目 (ACE) (通常是使用者帳戶或帳戶群組)。 DACL 和 ACE 讓您根據可與使用者帳戶相關聯的使用權限,允許或拒絕至資源的使用權限。 例如,您可以建立 ACE,並套用至檔案的 DACL,阻止系統管理員以外的任何人讀取檔案。
系統控制清單 (SACL),有時也稱為稽核 ACE,是控制與資源相關聯之稽核訊息的機制。 SACL 與 DACL 類似,都包含為特定資源定義稽核規則的 ACE。 稽核 ACE 可以讓您記錄存取資源成功或失敗的嘗試,但是與存取 ACE 不同,不會控制哪個帳戶能夠使用資源。 例如,您可以建立 ACE,並套用至檔案的 SACL,以記錄所有開啟檔案成功的嘗試。
ACL 類別簡介
下表列出您可以使用的主要類別,輕易就能建立及修改幾個技術領域的 ACL。 這不是 System.Security.AccessControl 命名空間的完整清單,而是您應該要與 ACL 配合使用的主要類別清單。
技術範圍 |
類別 |
---|---|
加密金鑰 |
|
目錄 |
|
事件等候處理常式 |
|
檔案 |
|
Mutex |
|
登錄機碼 |
|
號誌 |
若要查詢資源的現有 ACL 資訊,或是套用已修改的 ACL 資訊至資源,必須使用其中一個能提供現有資源之 ACL 存取的方法。 上表中的類別會提供建構及編輯 ACL 的方法 (Method),但不提供查詢或套用 ACL 的方法 (Way)。
每一種資源都有相關聯的方法,可在資源建立時套用 ACL (通常是建構函式多載)、可擷取現有資源的 ACL,而且可以套用 ACL 至現有資源。
下表列出用來為各技術領域取得及設定 ACL 的方法。 這些方法位於 System.Security.AccessControl 命名空間之外的幾個命名空間中,是表示特定資源之高階類別的一部分。 例如,若要查詢所指定目錄的 ACL,您要使用 Directory.GetAccessControl 方法,取得 DirectorySecurity 物件,封裝目錄的 DACL 和 SACL。 請注意,有些資源 (例如,檔案和目錄) 在提供 ACL 存取的不同類別中,有幾個對等的方法。
技術範圍 |
取得及設定 ACL 的方法 |
---|---|
加密金鑰 |
CspParameters.CryptoKeySecurity CspParameters.CspParameters CspParameters.CspParameters |
目錄 |
DirectoryInfo.GetAccessControl |
事件等候處理常式 |
EventWaitHandle.GetAccessControl EventWaitHandle.SetAccessControl EventWaitHandle.EventWaitHandle |
檔案 |
FileStream.FileStream |
Mutex |
Mutex.Mutex |
登錄機碼 |
|
號誌 |
Semaphore.Semaphore |