【windows 訪問控制】三、訪問控制列表 ACL=DACL+SACL


訪問控制列表(ACL:Access Control List)

 ACL列表的結構

 

 

 

ACL 中的每個 ACE 標識一個受信者,並指定該受信者訪問規則。安全對象的安全描述符 可以包含兩種類型的 ACL:DACL 和 SACL。


 

 

 

 

DACL:自主訪問控制列表(DACL)是安全描述符中最重要的,它里面包含零個或多個訪問控制項(ACE,Access Control Entry),每個訪問控制項的內容描述了允許或拒絕特定賬戶對這個對象執行特定操作。
SACL:系統訪問控制列表(SACL) 主要是用於系統審計的,它的內容指定了當特定賬戶對這個對象執行特定操作時,記錄到系統日志中。
訪問控制列表(ACL)是訪問控制條目(ACE)的列表。 ACL中的每個ACE都標識一個對象(通常稱這個對象為受托者,受托者可以是一個用戶、用戶組或者是一個登陸會話),並指定允許、拒絕或審核該受托者的訪問權限。可保護對象的安全描述符可以包含兩種類型的ACL:DACL和SACL。
DACL標識是否允許或拒絕訪問安全對象。當進程嘗試訪問安全對象時,系統將檢查該對象的DACL中的ACE,以確定是否授予對該對象的訪問權限。
  1. 系統依次檢查ACE,直到找到一個或多個允許所有請求的訪問權限的ACE,或者直到拒絕任何請求的訪問權限為止。
下圖顯示了對象的DACL如何允許訪問一個線程而拒絕訪問另一個線程。

 

 

對於線程A,系統將讀取第一條ACE並立即拒絕訪問,因為拒絕訪問的ACE適用於線程訪問令牌中的用戶。在這種情況下,系統將不檢查之后的ACE。對於線程B,第一條ACE不適用,因此系統進入允許寫入訪問的ACE 2和允許讀取和執行訪問的ACE 3。
SACL使管理員可以記錄任何人對安全對象的訪問。每個ACE指定受托者嘗試訪問的類型,這些訪問使系統在安全事件日志中生成記錄。當訪問嘗試失敗或成功時,SACL中的ACE可以生成審核記錄。
不要嘗試直接使用ACL的內容。為確保ACL在語義上正確,需使用適當的函數來創建和操作ACL。
ACL還提供對Microsoft Active Directory目錄服務對象的訪問控制。 Active Directory服務接口(ADSI)包括用於創建和修改這些ACL內容的例程。相關內容會另開文章詳細介紹。
  • 如果對象沒有DACL,則系統將授予所有人完全訪問權限。
  • 如果對象的DACL沒有ACE,則系統將拒絕所有嘗試訪問該對象的嘗試,因為DACL不允許任何訪問權限。

 

自由訪問控制列表(DACL:Discretionary Access Control List)

就像它的名字一樣,DACL就是一個表明其它所有人的自由的(相應的)訪問控制列表。這是什么意思呢?讓我們具體看看DACL里面是什么東西吧。看下圖你就比較明白了。

 

授權參數為空 DACL (空 DACL)

如果 屬於對象安全描述符 (DACL) 自由訪問控制列表設置為 NULL, 則創建 null DACL。 NULL DACL 向請求它的用戶授予完全訪問權限;不會對 對象執行正常的安全檢查。 null DACL 不應與空的 DACL 混淆。 空 DACL 是正確分配和初始化的 DACL,它不包含AES (訪問控制) 。 空 DACL 不授予對它所分配到的對象的訪問權限。

 

系統訪問控制列表(SACL:System Access Control List)

SACL其實就是一個審計中心,這個列表里面列舉着哪些類型的訪問請求需要被系統記錄。一旦有用戶訪問一個安全對象,其請求的訪問權限和SACL中的一個ACE符合,那么系統會記錄這個用戶的請求是被拒絕了還是被允許了。MSDN提及說,將來可能會實現安全對象會對未經授權的用戶訪問發出警告信息。個人理解:SACL的作用是記錄訪問成功與否,SACL也是由ACE構成,每條ACE的內容是某個用戶訪問成功/失敗某個權限,當訪問跟滿足這條ACE的時候就會被記錄下來。

DACL|SACL 列表顯示順序

1、拒絕(deny)有優先排在允許(allow)前面

2、繼承的ACE會排在程序或者手動的添加ACE順序之后;

C#給文件夾添加ACE的順序

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM