MIP 檔案 SDK 中的稽核

統一稽核日誌可讓您存取稽核事件。 這些事件會顯示使用者在與 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、AipProtectionActionAipFileDeleted 的形式出現在統一稽核中。

// 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);
}