Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ten przewodnik szybkiego startu dotyczy obsługi operacji obniżenia etykiety, gdy zasady dotyczące etykiet wymagają uzasadnienia. W tym miejscu użyjemy mip::FileHandler klasy do zmiany etykiet pliku. Aby uzyskać więcej informacji, zapoznaj się z tematem Microsoft Information Protection (MIP) SDK for C++: Reference (Zestaw SDK usługi Microsoft Information Protection (MIP) dla języka C++: Dokumentacja.
Wymagania wstępne
Jeśli jeszcze tego nie zrobiono, przed kontynuowaniem upewnij się, że zostały spełnione następujące wymagania wstępne:
- Ukończ Quickstart: Ustaw/uzyskaj etykiety poufności (C++), które najpierw tworzy początkowe rozwiązanie programu Visual Studio, aby wyświetlić listę etykiet poufności organizacji, a także aby ustawiać i odczytywać etykiety poufności do/z pliku. Ten przewodnik "Jak - Obniżanie/Usuwanie etykiety wymagającej uzasadnienia (C++)" Quickstart bazuje na poprzednim przewodniku.
- Opcjonalnie: Zapoznaj się z pojęciami dotyczącymi procedur obsługi plików w pojęciach dotyczących zestawu MIP SDK.
Dodaj logikę, aby ustawić niższą etykietę na chroniony plik
Dodaj logikę do ustawienia etykiety poufności na pliku, używając obiektu mip::FileHandler.
Otwórz rozwiązanie programu Visual Studio utworzone w poprzednim przewodniku Szybki start: ustawianie/uzyskiwanie etykiet poufności (C++).
Za pomocą Eksploratora rozwiązań otwórz plik .cpp w swoim projekcie, który zawiera implementację metody
main(). Domyślnie ma taką samą nazwę jak projekt zawierający go, który został określony podczas tworzenia projektu.Dodaj następujące dyrektywy #include i using poniżej odpowiednich istniejących dyrektyw na początku pliku.
#include "mip/file/file_error.h" using mip::JustificationRequiredError; using std::cin;Zaktualizuj wartość
<label-id>z poprzedniego szybkiego startu na etykietę poufności, która wymaga uzasadnienia w przypadku obniżenia. Podczas tego przewodnika szybkiego startu najpierw ustawimy tę etykietę, a potem spróbujemy ją zmniejszyć za pomocą fragmentów kodu w kolejnych krokach.Pod koniec części
main(), poniżejsystem("pause");i powyżej bloku zamykania (gdzie skończyłeś w poprzednim przewodniku Szybki start), wstaw następujący kod:
// 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");
Zastąp wartości symboli zastępczych w kodzie źródłowym przy użyciu następujących wartości:
Symbol zastępczy Wartość <lower-label-id> Identyfikator etykiety skopiowany z danych wyjściowych konsoli w poprzednim przewodniku Szybki start, na przykład: bb7ed207-046a-4caf-9826-647cff56b990. Upewnij się, że ma niższą czułość niż wcześniej chroniona etykieta pliku.<ścieżka-do-pliku-wynikowego> Ścieżka pliku wyjściowego, do którego chcesz zapisać zmodyfikowany plik. <identyfikator niższej zawartości> Czytelny dla człowieka identyfikator zawartości.
Kompilowanie i testowanie aplikacji
Skompiluj i przetestuj aplikację kliencą.
Użyj CTRL-SHIFT-B (Kompiluj rozwiązanie), aby skompilować aplikację kliencką. Jeśli nie masz błędów kompilacji, użyj F5 (Rozpocznij debugowanie), aby uruchomić aplikację.
Jeśli projekt kompiluje się i uruchamia pomyślnie, aplikacja zapyta o token dostępu za każdym razem, gdy SDK wywołuje metodę
AcquireOAuth2Token().
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.windows.net/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 . . .
Należy pamiętać, że jeśli usunięcie etykiety z pliku wymaga uzasadnienia zgodnie z zasadami etykiet, należy zastosować podobne podejście do operacji DeleteLabel().
DeleteLabel() funkcja zgłasza mip::JustificationRequiredError wyjątek.
isDowngradeJustified flaga powinna być ustawiona na wartość true w obsłudze wyjątków przed pomyślnym usunięciem etykiety.