安全描述符

安全描述符

包含和被保護對象相關聯的安全信息數據結構。安全描述符包括誰擁有對象,以何種方式訪問以及何種審查訪問類型等信息

基本介紹

  • 中文名:安全描述符
  • 專業:存儲或傳輸安全描述符
  • 性質信息的文本格式
  • 表示:一個空ACL
簡介,字元串格式,套用,數據結構,

簡介

安全描述符包含自主決定的訪問控制表(DACL),裡面包含有訪問控制項(ACE),因此可以允許或拒絕特定用戶或用戶組的訪問。它們還包含一個系統訪問控制列表(SACL)以控制對象訪問請求的日誌(logging)。ACE可以顯式套用於對象,或者從父對象繼承。ACE的順序在ACL中很重要,拒絕訪問的ACE應該比允許訪問的ACE更早出現。安全描述符還包含對象所有者。
強制完整性控制就是通過新類型的ACE在安全描述符上實現。

字元串格式

安全描述符字元串是一種用來存儲或傳輸安全描述符中的信息的文本格式,套用到SACL的安全描述符控制標記,sacl_flags使用和dacl_flags字元串相同的控制位字元串。描述安全描述符的DACL或SACL包含的一個ACE項的字元串。安全描述符字元串中可以省略不需要的部分,譬如,如果輸入安全描述符中未設定SE_DACL_PRESENT標記,ConvertSecurityDescriptorToStringSecurityDescriptor的輸出字元串中將不包含D:部分。安全描述符字元串不支持NULL ACLs。為表示一個空ACL,安全描述符字元串中包含S:或D:標記而不含其他字元串信息

套用

檔案和資料夾的許可權可以使用各種工具編輯,這包括Windows Explorer、WMI,以及命令行工具如Cacls、XCacls、ICacls、SubInACL,免費的Win32控制台FILEACL,自由實用工具SetACL,以及其他實用工具。要編輯一個安全描述符,用戶需要有該對象的WRITE_DAC訪問許可權,該許可權通常默認授予管理員和該對象的所有者。

數據結構

typedef struct _SECURITY_DESCRIPTOR {  UCHAR  Revision;  UCHAR  Sbz1;  SECURITY_DESCRIPTOR_CONTROL  Control; //其自身的一些控制位  PSID  Owner; //Owner安全標識符(Security identifiers) 相當於UUID,標識用戶、用戶群、計算機帳戶  PSID  Group; //Group安全標識符(Security identifiers) 相當於UUID  PACL  Sacl; //(System Access Control List),其指出了在該對象上的一組存取方式(如,讀、寫、運行等)的存取控制許可權細節的列表。  PACL  Dacl; //(Discretionary Access Control List),其指出了允許和拒絕某用戶或用戶組的存取控制列表。 如果一個對象沒有DACL,那么就是說這個對象是任何人都可以擁有完全的訪問許可權。 } SECURITY_DESCRIPTOR, *PISECURITY_DESCRIPTOR;typedef struct _ACL {    BYTE  AclRevision;    BYTE  Sbz1;    WORD   AclSize;    WORD   AceCount;    WORD   Sbz2;} ACL, *PACL;
獲取對象上的安全設定,或修改對象上的安全設定的Windows API。如:GetNamedSecurityInfo, SetNamedSecurityInfo,GetSecurityInfo, SetSecurityInfo。
底層安全描述符函式:
  • 對於檔案、目錄、郵槽命名管道,可以使用其專用函式GetFileSecurity和SetFileSecurity函式來獲取或設定檔案對象的SD,以設定其訪問許可權。
  • 對於進程、執行緒、訪問token、檔案映射對象、信號量事件互斥鎖可等待定時器,使用 GetKernelObjectSecurity與SetKernelObjectSecurity函式
  • 對於Window Station與桌面,使用GetUserObjectSecurity與SetUserObjectSecurity函式
  • 對於註冊表鍵,使用RegGetKeySecurity與RegSetKeySecurity函式
  • 對於Windows服務對象,使用QueryServiceObjectSecurity and SetServiceObjectSecurity函式
  • 對於印表機對象,使用GetPrinter and SetPrinter函式的PRINTER_INFO_2結構參數。
  • 對於網路共享,使用NetShareGetInfo and NetShareSetInfo 的網路502級別。
  • 對於進程創建的私有對象,使用CreatePrivateObjectSecurity, DestroyPrivateObjectSecurity, GetPrivateObjectSecurity and SetPrivateObjectSecurity函式

相關詞條

熱門詞條

聯絡我們