Berechnen einer Aktion

Wie zuvor ausführlich beschrieben, sind die wichtigsten Funktionen des Richtlinien-SDKs:

  • verfügbare Bezeichnungen auflisten
  • Zurückgeben einer Reihe von Aktionen, die die Anwendung basierend auf dem aktuellen und gewünschten Zustand ausführen soll

Der letzte Schritt im Prozess besteht darin, einen Bezeichnungsbezeichner und optional Metadaten über die vorhandene Bezeichnung für die ComputeActions() Funktion bereitzustellen.

Beispielcode für diesen Artikel ist für GitHub verfügbar.

Eine Aktion für eine neue Beschriftung berechnen

Berechnen Sie die mip::Actions für eine neue Bezeichnung mithilfe der in ExecutionState definierten ExecutionStateImpl.

// Replace with valid label ID.
string newLabelId = "d7b93a40-4df3-47e4-b2fd-7862fc6b095c";
sample::upe::ExecutionStateOptions options;

// Resolve desired label id to mip::Label and set in ExecutionStateOptions.
options.newLabel = mEngine->GetLabelById(newLabelId);

// Initialize ExecutionStateImpl with options, create handler, call ComputeActions.
std::unique_ptr<ExecutionStateImpl> state(new ExecutionStateImpl(options));
auto handler = mEngine->CreatePolicyHandler(false); // Don't generate audit event.
auto actions = handler->ComputeActions(*state);

Wenn nur das mip::MetadataActions geschrieben wird, das als Teil von actions zurückgegeben wird, wird Folgendes angezeigt:

Add: MSIP_Label_d7b93a40-4df3-47e4-b2fd-7862fc6b095c_Enabled : true
Add: MSIP_Label_d7b93a40-4df3-47e4-b2fd-7862fc6b095c_SetDate : 2018-10-23T20:39:06-0800
Add: MSIP_Label_d7b93a40-4df3-47e4-b2fd-7862fc6b095c_Method : Standard
Add: MSIP_Label_d7b93a40-4df3-47e4-b2fd-7862fc6b095c_Name : Contoso FTEs (C)
Add: MSIP_Label_d7b93a40-4df3-47e4-b2fd-7862fc6b095c_SiteId : 94f6984e-8d31-4794-bdeb-3ac89ad2b660
Add: MSIP_Label_d7b93a40-4df3-47e4-b2fd-7862fc6b095c_ActionId : 2266fbe8-a0d9-44e8-bad8-00008f2a0915
Add: MSIP_Label_d7b93a40-4df3-47e4-b2fd-7862fc6b095c_ContentBits : 3

Der PolicyHandler berechnet die Aktionen und gibt einen std::vector von mip::Action zurück. Es liegt an dem Anwendungsentwickler, diese Metadaten auf die Datei oder die Daten anzuwenden.

Hinweis

Im vorherigen Beispiel wird nur die mip::MetadataAction Ausgabe angezeigt. Ein Beispiel, das andere Aktionstypen anzeigt, finden Sie in den Beispielpaketen mit dem Richtlinien-SDK-Download.

Aktionen mit einem vorhandenen Label berechnen

Wenn Sie das Richtlinien-SDK verwenden, liest die Anwendung Metadaten aus Inhalten. Die Anwendung stellt diese Metadaten als Teil der mip::ExecutionStateAPI bereit. ComputeActions() kann komplexere Vorgänge verarbeiten als das Anwenden einer neuen Bezeichnung auf ein nicht bezeichnetes Dokument. Im folgenden Beispiel wird das Herabstufen einer Bezeichnung von einer vertraulicheren Bezeichnung auf eine weniger vertrauliche Bezeichnung veranschaulicht. Im Beispiel wird dieser Prozess simuliert, indem eine kommagetrennte Zeichenfolge von Metadaten gelesen und über mip::ExecutionState an die API übergeben wird.

Hinweis

Im Beispiel wird eine Hilfsfunktion namens SplitString() verwendet. Ein Beispiel finden Sie im SplitString()Quellcode der Hilfsfunktion.

// Replace with valid label ID.
string newLabelId = "d7b93a40-4df3-47e4-b2fd-7862fc6b095c";

// Comma and Pipe Delimited Metadata.
string metadata = "MSIP_Label_d7b93a40-4df3-47e4-b2fd-7862fc6b095c_Enabled|true,MSIP_Label_d7b93a40-4df3-47e4-b2fd-7862fc6b095c_SetDate|2018-10-23T21:53:31-0800,MSIP_Label_d7b93a40-4df3-47e4-b2fd-7862fc6b095c_Method|Standard,MSIP_Label_d7b93a40-4df3-47e4-b2fd-7862fc6b095c_Name|Contoso FTEs (C),MSIP_Label_d7b93a40-4df3-47e4-b2fd-7862fc6b095c_SiteId|94f6984e-8d31-4794-bdeb-3ac89ad2b660,MSIP_Label_d7b93a40-4df3-47e4-b2fd-7862fc6b095c_ActionId|b56491d9-155f-40ff-866f-0000acd85c31,MSIP_Label_d7b93a40-4df3-47e4-b2fd-7862fc6b095c_ContentBits|7";

// Create ExecutionStateOptions and resolve newLabelId to mip::Label
sample::upe::ExecutionStateOptions options;
options.newLabel = mEngine->GetLabelById(newLabelId);

// Split metadata string by commas, store in vector.
vector<string> metadataPairs = sample::utils::SplitString(metadata, ',');

// Iterate through each string, splitting by the pipe.
// Add each key/value pair to ExecutionStateOptions metadata.
for (const string& metadataPair : metadataPairs) {
    vector<string> keyValue = sample::utils::SplitString(metadataPair, '|');
    options.metadata[keyValue[0]] = keyValue[1];
}

// Initialize ExecutionStateImpl with options, create handler, call ComputeActions
std::unique_ptr<ExecutionStateImpl> state(new ExecutionStateImpl(options));
auto handler = mEngine->CreatePolicyHandler(false); // Don't generate audit event.
auto actions = handler->ComputeActions(*state);

Das vorangehende Beispiel kann zu mehreren Aktionen führen. Diese Aktionen hängen von den Bezeichnungen ab, die als Eingabe und Bezeichnungskonfiguration bereitgestellt werden. Mindestens ist das Ergebnis ein einzelnes mip::MetadataAction, das die über GetMetadataToRemove() zu entfernenden Daten und die über GetMetadataToAdd() hinzuzufügenden Daten enthält.

Add: MSIP_Label_d48d0e60-c766-40d6-96d3-53b2857fe775_Enabled : true
Add: MSIP_Label_d48d0e60-c766-40d6-96d3-53b2857fe775_SetDate : 2018-10-23T23:59:41-0800
Add: MSIP_Label_d48d0e60-c766-40d6-96d3-53b2857fe775_Method : Standard
Add: MSIP_Label_d48d0e60-c766-40d6-96d3-53b2857fe775_Name : General
Add: MSIP_Label_d48d0e60-c766-40d6-96d3-53b2857fe775_SiteId : 94f6984e-8d31-4794-bdeb-3ac89ad2b660
Add: MSIP_Label_d48d0e60-c766-40d6-96d3-53b2857fe775_ActionId : 447a996b-28ea-482c-b0b5-000075bd4bb3
Add: MSIP_Label_d48d0e60-c766-40d6-96d3-53b2857fe775_ContentBits : 7
Remove: MSIP_Label_d7b93a40-4df3-47e4-b2fd-7862fc6b095c_Name
Remove: MSIP_Label_d7b93a40-4df3-47e4-b2fd-7862fc6b095c_Enabled
Remove: MSIP_Label_d7b93a40-4df3-47e4-b2fd-7862fc6b095c_SiteId
Remove: MSIP_Label_d7b93a40-4df3-47e4-b2fd-7862fc6b095c_SetDate
Remove: MSIP_Label_d7b93a40-4df3-47e4-b2fd-7862fc6b095c_Method
Remove: MSIP_Label_d7b93a40-4df3-47e4-b2fd-7862fc6b095c_ContentBits
Remove: MSIP_Label_d7b93a40-4df3-47e4-b2fd-7862fc6b095c_ActionId

Nächste Schritte