統一稽核日誌可讓您存取稽核事件。 這些事件會顯示使用者在與 Microsoft 資訊保護 (MIP) SDK 整合的任何應用程式或服務中手動或自動套用哪些標籤。 使用SDK的開發合作夥伴可讓此功能在客戶報告中顯示其應用程式的資訊。
啟用稽核
根據預設,MIP SDK 不會 傳送稽核事件。 稽核必須在一或多個標籤政策中啟用,才能從啟用 MIP SDK 的應用程式觸發稽核事件。
若要傳送稽核資料,請啟用下列進階設定。
使用安全性 & 合規性中心 PowerShell 新增下列原則 進階設定:
- 機碼:EnableAudit
- 值:True
例如,如果您的標籤政策名為「Global」:
Set-LabelPolicy -Identity Global -AdvancedSettings @{EnableAudit="True"}備註
根據預設,原則中不會存在此進階設定,而且不會傳送稽核記錄。
事件類型
有三種類型的事件可以透過 SDK 提交至 Microsoft Purview。 心跳事件、發現事件和變更事件
心跳事件
任何整合了 File SDK 的應用程式都會自動產生心跳事件。 心跳事件會顯示在統一稽核日誌中,作為 AipHeartBeat 事件。 心跳事件包括:
- 租戶識別碼 (TenantId)
- 產生的時間
- 使用者主體名稱
- 產生稽核的計算機名稱
- 程序名稱
- 平台
- 應用程式識別碼 - 對應至 Microsoft Entra 應用程式識別碼。
這些事件適用於偵測使用 Microsoft 資訊保護 SDK 的企業應用程式。
探索事件
探索事件提供與檔案 SDK 一起讀取或取用的標籤資訊的相關資訊。 這些事件在呈現跨組織存取資訊的裝置、位置和使用者時很有用。 探索事件會顯示在統一稽核記錄檔中,作為 AipDiscover 事件。
這些事件會在建立新的 AuditDiscoveryEnabled 時,藉由將 mip::FileHandler 參數設定為 true 來傳送至稽核。 此外,也會提供內容識別碼,以某些人類可讀取的格式識別檔案。 檔案路徑通常應該用於此識別碼。
下列範例會建立新的 mip::FileHandler,並啟用稽核探索。 在 CreateFileHandler() 上呼叫mip::FileEngine 方法,並將 AuditDiscoveryEnabled 設定為 true。 讀取 FileHandler 標籤之後,就會產生探索稽核。
// Create FileHandler with discovery enabled
auto handlerPromise = std::make_shared<std::promise<std::shared_ptr<FileHandler>>>();
auto handlerFuture = handlerPromise->get_future();
fileEngine->CreateFileHandlerAsync(inputFilePath, actualFilePath, true /*AuditDiscoveryEnabled*/, make_shared<FileHandlerObserver>(), createFileHandlerPromise);
auto handler = handlerFuture.get();
// Read label. This generates the discovery audit.
auto label = handler->GetLabel();
變更事件
變更事件會提供檔案的相關信息、已套用或變更的標籤,以及使用者提供的任何理由。 變更事件會在變更成功提交至檔案後,透過在 mip::FileHandler 上呼叫 NotifyCommitSuccessful() 來產生。 變更事件可以以 AipSensitivityLabelAction、AipProtectionAction 或 AipFileDeleted 的形式出現在統一稽核中。
// Create labeling options, set label
string contentId = "C:\\users\\myuser\\Documents\\MyPlan.docx";
mip::LabelingOptions labelingOptions(mip::AssignmentMethod::PRIVILEGED);
handler->SetLabel(labelId, labelingOptions, mip::ProtectionSettings());
auto commitPromise = std::make_shared<std::promise<bool>>();
auto commitFuture = commitPromise->get_future();
// CommitAsync() returns a bool. If the change was successful, call NotifyCommitSuccessful().
fileHandler->CommitAsync(outputFile, commitPromise);
if(commitFuture.get()) {
// Submit audit event.
handler->NotifyCommitSuccessful(contentId);
}