使用 Windows Communication Foundation (WCF) 建立的應用程式可以使用稽核功能來記錄安全性事件(成功、失敗或兩者皆有)。 事件會寫入 Windows 系統事件記錄檔,而且可以使用事件查看器進行檢查。
稽核提供一個方式,讓系統管理員偵測已發生或在進行中的攻擊。 此外,稽核可協助開發人員偵錯安全性相關的問題。 例如,如果授權設定中的錯誤或檢查原則意外拒絕獲授權使用者的存取,則開發人員可以透過檢查事件記錄檔來快速探索並找出此錯誤的原因。
如需 WCF 安全性的詳細資訊,請參閱 安全性概觀。 如需 WCF 程式設計的詳細資訊,請參閱 基本 WCF 程式設計。
稽核層級和行為
有兩個層級的安全性稽核存在:
服務授權等級,其中呼叫者已獲授權。
訊息層級,其中 WCF 會檢查訊息有效性,並驗證呼叫端。
您可以檢查稽核層級是否有成功或失敗,這稱為 稽核行為。
稽核記錄檔位置
一旦您判斷稽核層級和行為之後,您(或系統管理員)就可以指定稽核記錄的位置。 這三個選項包括:預設、應用程式和安全性。 當您指定 Default 時,實際記錄檔取決於您所使用的系統,以及系統是否支援寫入安全性記錄檔。 如需詳細資訊,請參閱本主題稍後的“作業系統”一節。
若要寫入安全性記錄檔,需要 SeAuditPrivilege。 根據預設,只有本機系統和網路服務帳戶具有此許可權。 若要管理安全性記錄函式 read 和 delete ,需要 SeSecurityPrivilege。 根據預設,只有系統管理員具有此許可權。
相反地,已驗證的使用者可以讀取和寫入應用程式記錄檔。 Windows XP 預設會將稽核事件寫入應用程式記錄。 記錄檔也可以包含所有已驗證用戶可看見的個人資訊。
隱藏稽核失敗
稽核期間的另一個選項是是否要隱藏任何稽核失敗。 根據預設,稽核失敗不會影響應用程式。 不過,如有需要,您可以將 選項設定為 false,這會導致擲回例外狀況。
程序設計稽核
您可以透過程式設計方式或透過組態來指定稽核行為。
稽核課程
下表描述用來程式稽核行為的類別和屬性。
| 班級 | 說明 |
|---|---|
| ServiceSecurityAuditBehavior | 啟用稽核即服務行為的設定選項。 |
| AuditLogLocation | 指定要寫入至哪一個記錄檔的列舉。 可能的值為 Default、Application 和安全性。 當您選取 [預設] 時,作系統會決定實際的記錄位置。 請參閱本主題後面的「應用程式或安全性事件日誌選擇」一節。 |
| MessageAuthenticationAuditLevel | 指定在訊息層級稽核的訊息驗證事件類型。 選項為 None、 Failure、 Success和 SuccessOrFailure。 |
| ServiceAuthorizationAuditLevel | 指定在服務層級稽核的服務授權事件類型。 選項為 None、 Failure、 Success和 SuccessOrFailure。 |
| SuppressAuditFailure | 指定稽核失敗時的用戶端要求處理方式。 例如,當服務嘗試寫入安全性記錄時,但沒有 SeAuditPrivilege。 的預設值 true 表示會忽略失敗,且用戶端要求會正常處理。 |
如需設定應用程式以記錄稽核事件的範例,請參閱 如何:稽核安全性事件。
設定
您也可以使用配置來指定稽核行為,具體方法是在行為<下>新增<serviceSecurityAudit>。 您必須在<behavior>下新增元素,如下列程式代碼所示。
<configuration>
<system.serviceModel>
<behaviors>
<behavior>
<!-- auditLogLocation="Application" or "Security" -->
<serviceSecurityAudit
auditLogLocation="Application"
suppressAuditFailure="true"
serviceAuthorizationAuditLevel="Failure"
messageAuthenticationAuditLevel="SuccessOrFailure" />
</behavior>
</behaviors>
</system.serviceModel>
</configuration>
如果啟用稽核且 auditLogLocation 未指定 ,則支援寫入安全性記錄之平臺的默認記錄檔名稱為 「安全性」記錄檔,否則為 「應用程式」記錄檔。 只有 Windows Server 2003 和 Windows Vista 作業系統支援寫入安全性記錄。 如需詳細資訊,請參閱本主題稍後的“作業系統”一節。
安全性考慮
如果惡意使用者知道已啟用稽核,攻擊者可能會傳送無效的訊息,導致稽核條目被寫入。 如果以這種方式填入稽核記錄,稽核系統就會失敗。 若要減輕這種情況,請將 SuppressAuditFailure 屬性設定為 true ,並使用事件查看器的屬性來控制稽核行為。
任何已驗證的使用者都可以看到寫入 Windows XP 上的應用程式記錄檔的稽核事件。
選擇應用程式和安全性事件記錄檔
下表提供的資訊可協助您選擇登入應用程式或安全性事件記錄檔。
作業系統
| 系統 | 應用程式記錄 | 安全性記錄檔 |
|---|---|---|
| Windows XP SP2 或更新版本 | 支持 | 不支援 |
| Windows Server 2003 SP1 和 Windows Vista | 支持 | 線程內容必須擁有 SeAuditPrivilege |
其他因素
除了作業系統之外,下表還描述其他控制記錄功能啟用的設定。
| 因數 | 應用程式記錄 | 安全性記錄檔 |
|---|---|---|
| 審核策略管理 | 不適用。 | 除了設定之外,安全性記錄也由本地安全授權 (LSA) 原則控制。 也必須啟用「稽核物件存取」類別。 |
| 默認用戶體驗 | 所有已驗證的使用者都可以寫入應用程式記錄檔,因此應用程式進程不需要額外的許可權步驟。 | 應用程式行程(內容)必須有 SeAuditPrivilege。 |