首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

檔案與目錄存取控制 (四):SACL 稽核規則配置與權限需求

     編輯:關於.NET

前三節著重 DACL (存取控制清單),本節轉向 SACL (系統存取控制清單) —— 控制「誰在何時對何物件嘗試何種存取」被記錄進安全性事件日誌。稽核屬高敏感操作,需 本地安全性原則 → 稽核原則 → 稽核物件存取** 啟用,且程式碼執行身分需具備 「安全性權限」 (SeSecurityPrivilege)**。

稽核規則程式碼範例

using (FileStream file = new FileStream(
    @"M:\temp\sample.txt", FileMode.Open, FileAccess.ReadWrite)) {
    
    FileSecurity security = file.GetAccessControl();
    
    var rule = new FileSystemAuditRule(
        new NTAccount(@"FABRIKAM\Full_Time_Employees"),
        FileSystemRights.Write,
        AuditFlags.Failure); // 僅稽核失敗
    
    security.AddAuditRule(rule);
    file.SetAccessControl(security);
}

FileSystemAuditRule 核心參數

參數說明
IdentityReference被稽核主體 (使用者/群組)
FileSystemRights關注的存取權限 (Read、Write、FullControl 等)
AuditFlagsSuccess、Failure、Success | Failure
InheritanceFlags / PropagationFlags同 DACL 繼承機制,控制子物件是否套用

啟用「稽核物件存取」群組原則步驟

  1. 開啟 secpol.msc (本地安全性原則)
  2. 展開「本地原則」→「稽核原則」
  3. 雙擊「稽核物件存取」
  4. 勾選「成功」與/或「失敗」
  5. 執行 gpupdate /force 套用

重要限制與注意事項

  • 稽核規則需對應的 DACL 允許規則存在,否則存取直接被拒絕,不會產生稽核項目
  • 繼承旗標、傳播旗標、保護旗標運作邏輯與 DACL 完全一致
  • 若遇 UnauthorizedAccessException,檢查執行身分是否具備 SeSecurityPrivilege (本地原則 → 使用者權利指派 → 管理稽核與安全性記錄)
  • 安全性事件日誌 (eventvwr.msc → Windows Logs → Security) 記錄 Event ID 4656 (存取嘗試)、4663 (物件存取)

最佳實務:生產環境建議「失敗稽核」為主,「成功稽核」僅針對高敏感資料,避免日誌暴增影響效能與分析。


本文部分內容改編自《.NET 安全揭秘》
作者:玄魂
出處:https://www.cnblogs.com/xuanhun/

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved