Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento rychlý průvodce řeší zpracování operace snížení hodnocení štítku, když zásady štítkování vyžadují odůvodnění. V této části použijeme mip::FileHandler třídu pro změnu popisků souboru. Další podrobnosti najdete v sadě Microsoft Information Protection SDK (MIP) pro jazyk C++: Referenční informace.
Požadavky
Pokud jste to ještě neudělali, nezapomeňte před pokračováním dokončit následující požadavky:
- Dokončete Rychlý start: Nejprve nastavte/získejte popisky citlivosti (C++), což vytvoří počáteční řešení Visual Studio, které zobrazuje seznam popisků citlivosti organizace a umožňuje nastavení a čtení popisků citlivosti ze souboru. Tento "How to - Downgrade/Remove a label that needs a justification (C++)" rychlý start vychází z předchozího.
- Volitelně: Přečtěte si koncepty zpracování souborů v konceptech MIP SDK.
Přidejte logiku pro přiřazení nižšího štítku chráněnému souboru
Přidejte logiku pro nastavení popisku citlivosti v souboru pomocí objektu mip::FileHandler .
Otevřete řešení sady Visual Studio, které jste vytvořili v předchozím rychlém startu: Nastavení nebo získání popisků citlivosti (C++).
Pomocí Průzkumníka řešení otevřete soubor .cpp ve vašem projektu, který obsahuje implementaci
main()funkce. Ve výchozím nastavení se použije stejný název jako projekt, který obsahuje, který jste zadali při vytváření projektu.Do horní části souboru přidejte následující #include a direktivy using pod odpovídající existující direktivy:
#include "mip/file/file_error.h" using mip::JustificationRequiredError; using std::cin;Aktualizujte hodnotu z předchozího rychlého startu
<label-id>na popisek citlivosti, který vyžaduje odůvodnění snížení. Během tohoto rychlého startu nejprve nastavíme tento popisek a pak ho v dalších krocích zkusíme snížit pomocí fragmentů kódu.Na konec
main()těla nížesystem("pause");a nad blok vypnutí (kde jste skončili v předchozím rychlém startu) vložte následující kód:
// Downgrade label
// Set paths and lower label ID
// Set a new label on input file.
string lowerlabelId = "<lower-label-id>";
cout << "\nApplying new Label ID " << lowerlabelId << " to " << filePathOut << endl;
mip::LabelingOptions labelingOptions(mip::AssignmentMethod::PRIVILEGED);
// Try to apply a label with lower sensitivity.
try
{
handler->SetLabel(engine->GetLabelById(lowerlabelId), labelingOptions, mip::ProtectionSettings());
}
catch (const mip::JustificationRequiredError& e)
{
// Request justification from user.
cout<<"Please provide justification for downgrading a label: "<<endl;
string justification;
cin >> justification;
// Set Justification provided flag
bool isDowngradeJustified = true;
mip::LabelingOptions labelingOptions(mip::AssignmentMethod::PRIVILEGED);
labelingOptions.SetDowngradeJustification(isDowngradeJustified,justification);
//Set new label.
handler->SetLabel(engine->GetLabelById(lowerlabelId), labelingOptions, mip::ProtectionSettings());
}
catch (const std::exception& e)
{
cout << "An exception occurred... did you specify a valid label ID?\n\n" << e.what() << "'\n";
system("pause");
return 1;
}
// Commit changes, save as a different output file
string lowerFilePathOut = "<lower-output-file-path>";
try
{
cout << "Committing changes" << endl;
auto commitPromise = std::make_shared<std::promise<bool>>();
auto commitFuture = commitPromise->get_future();
handler->CommitAsync(lowerFilePathOut, commitPromise);
if (commitFuture.get()) {
cout << "\nLabel committed to file: " << lowerFilePathOut << endl;
}
else {
cout << "Failed to label: " + lowerFilePathOut << endl;
return 1;
}
}
catch (const std::exception& e)
{
cout << "An exception occurred... did you specify a valid commit file path?\n\n" << e.what() << "'\n";
system("pause");
return 1;
}
system("pause");
// Set up async FileHandler for output file operations
string lowerActualFilePath = "<lower-content-identifier>";
try
{
auto handlerPromise = std::make_shared<std::promise<std::shared_ptr<FileHandler>>>();
auto handlerFuture = handlerPromise->get_future();
engine->CreateFileHandlerAsync(
lowerFilePathOut,
lowerActualFilePath,
true,
std::make_shared<FileHandlerObserver>(),
handlerPromise);
handler = handlerFuture.get();
}
catch (const std::exception& e)
{
cout << "An exception occurred... did you specify a valid output file path?\n\n" << e.what() << "'\n";
system("pause");
return 1;
}
// Get the lowered label from output file
try
{
cout << "\nGetting the label committed to file: " << lowerFilePathOut << endl;
auto lowerLabel = handler->GetLabel();
cout << "Name: " + lowerLabel->GetLabel()->GetName() << endl;
cout << "Id: " + lowerLabel->GetLabel()->GetId() << endl;
}
catch (const std::exception& e)
{
cout << "An exception occurred... did you specify a valid label ID?\n\n" << e.what() << "'\n";
system("pause");
return 1;
}
system("pause");
Zástupné hodnoty ve zdrojovém kódu nahraďte následujícími hodnotami:
Zástupný symbol Hodnota <lower-label-id> ID popisku zkopírované z výstupu konzoly v předchozím rychlém startu, například: bb7ed207-046a-4caf-9826-647cff56b990. Ujistěte se, že má nižší citlivost než označení původně chráněného souboru.<cesta-k-souboru-se-sníženým-výstupem> Cesta k výstupnímu souboru, do kterého chcete uložit upravený soubor. <identifikátor dolního obsahu> Identifikátor pro obsah čitelný člověkem.
Sestavení a otestování aplikace
Sestavte a otestujte klientskou aplikaci.
K sestavení klientské aplikace použijte kombinaci kláves CTRL-SHIFT-B (Build Solution). Pokud nemáte žádné chyby sestavení, spusťte aplikaci pomocí klávesy F5 (spustit ladění).
Pokud se projekt sestaví a úspěšně spustí, aplikace vyzve k zadání přístupového tokenu pokaždé, když sada SDK volá vaši
AcquireOAuth2Token()metodu.
Non-Business : 87ba5c36-17cf-14793-bbc2-bd5b3a9f95cz
Public : 83867195-f2b8-2ac2-b0b6-6bb73cb33afz
General : f42a3342-8706-4288-bd31-ebb85995028z
Confidential : 074e457c-5848-4542-9a6f-34a182080e7z
Highly Confidential : f55c2dea-db0f-47cd-8520-a52e1590fb6z
Press any key to continue . . .
Applying Label ID f55c2dea-db0f-47cd-8520-a52e1590fb6z to c:\Test\Test.docx
Committing changes
Label committed to file: c:\Test\Test.docx
Press any key to continue . . .
Run the PowerShell script to generate an access token using the following values, then copy/paste it below:
Set $authority to: https://login.microsoftonline.com/37f4583d-9985-4e7f-a1ab-71afd8b55ba0
Set $resourceUrl to: https://aadrm.com
Sign in with user account: user1@tenant.onmicrosoft.com
Enter access token: <paste-access-token-here>
Press any key to continue . . .
Getting the label committed to file: c:\Test\Test_labeled.docx
Name: Highly Confidential
Id: f55c2dea-db0f-47cd-8520-a52e1590fb6z
Press any key to continue . . .
Applying new Label ID f42a3342-8706-4288-bd31-ebb85995028z to c:\Test\Test_labeled.docx
Please provide justification for downgrading a label:
Need for sharing with wider audience.
Committing changes
Label committed to file: c:\Test\Test_downgraded.docx
Press any key to continue . . .
Getting the label committed to file: c:\Test\Test_downgraded.docx
Name: General
Id: f42a3342-8706-4288-bd31-ebb85995028z
Press any key to continue . . .
Upozorňujeme, že pokud popisek odstraněný ze souboru vyžaduje odůvodnění podle zásad popisku, měl by být podobný DeleteLabel() přístup pro operaci dodržen.
DeleteLabel() funkce vyvolá mip::JustificationRequiredError výjimku.
isDowngradeJustified Před úspěšným odstraněním popisku by měl být příznak nastaven na true při zpracování výjimek.