Microsoft Information Protection SDK – Policy SDK motorkoncepciók
mip::PolicyEngine
Implementálja a Policy SDK által elvégezhető összes műveletet, a profil betöltése kivételével.
Implementáció: Szabályzatmotor hozzáadása
Megvalósítás: Szabályzatmotor létrehozása Gépház
A profilhoz hasonlóan a motorhoz egy beállításobjektum is szükséges. mip::PolicyEngine::Settings
Ez az objektum tárolja az egyedi motorazonosítót, a mip::AuthDelegate
megvalósítás objektumát, a hibakereséshez vagy telemetriához használható testreszabható ügyféladatokat, és opcionálisan a területi beállításokat.
Itt létrehozunk egy FileEngine::Settings
motor nevű objektumot Gépház az alkalmazás felhasználójának identitásával:
PolicyEngine::Settings engineSettings(
mip::Identity(mUsername), // mip::Identity.
authDelegateImpl, // Auth delegate object
"", // Client data. Customizable by developer, stored with engine.
"en-US", // Locale.
false); // Load sensitive information types for driving classification.
A motor létrehozásakor Gépház így fontos, hogy egy egyedi motorazonosítót is explicit módon állítson be a következő módon:
engineSettings.SetEngineId(engineId);
A felhasználónév vagy e-mail használatával biztosítható, hogy a felhasználó minden alkalommal betöltse ugyanazt a motort, amikor a felhasználó használja a szolgáltatást vagy az alkalmazást.
Az is érvényes, ha egyéni motorazonosítót ad meg:
PolicyEngine::Settings engineSettings(
"myEngineId", // String
authDelegateImpl, // Auth delegate object
"", // Client data in string format. Customizable by developer, stored with engine.
"en-US", // Locale. Default is en-US
false); // Load sensitive information types for driving classification. Default is false.
Ajánlott eljárásként az első paraméternek, az azonosítónak olyannak kell lennie, amely lehetővé teszi, hogy a motor könnyen kapcsolódjon a társított felhasználóhoz, lehetőleg a felhasználónévhez.
Megvalósítás: A szabályzatmotor hozzáadása
A motor hozzáadásához visszatérünk a profil betöltéséhez használt jövőbeli/ígéretes mintához. Ahelyett, hogy létrehoznánk az ígéretet mip::Profile
, használjuk mip::PolicyEngine
.
// Auto profile will be std::shared_ptr<mip::Profile>.
auto profile = profileFuture.get();
// Create the delegate
auto authDelegateImpl = std::make_shared<sample::auth::AuthDelegateImpl>(appInfo, userName, password);
// Create the PolicyEngine::Settings object.
PolicyEngine::Settings engineSettings("UniqueID", authDelegateImpl, "");
// Create a promise for std::shared_ptr<mip::PolicyEngine>.
auto enginePromise = std::make_shared<std::promise<std::shared_ptr<mip::PolicyEngine>>>();
// Instantiate the future from the promise.
auto engineFuture = enginePromise->get_future();
// Add the engine using AddEngineAsync, passing in the engine settings and the promise.
profile->AddEngineAsync(engineSettings, enginePromise);
// Get the future value and store in std::shared_ptr<mip::PolicyEngine>.
auto engine = engineFuture.get();
A fenti kód végeredménye, hogy sikeresen hozzáadtunk egy motort a hitelesített felhasználóhoz a profilhoz.
Implementáció: Bizalmassági címkék listázása
A hozzáadott motor használatával mostantól a hitelesített felhasználó számára elérhető összes bizalmassági címke listázható a hívással engine->ListSensitivityLabels()
.
ListSensitivityLabels()
lekéri az adott felhasználó címkéinek és attribútumainak listáját a szolgáltatásból. Az eredményt a rendszer a következő vektorban std::shared_ptr<mip::Label>
tárolja: .
Megvalósítás: ListSensitivityLabels()
std::vector<shared_ptr<mip::Label>> labels = engine->ListSensitivityLabels();
Megvalósítás: A címkék nyomtatása
//Iterate through all labels in the vector
for (const auto& label : labels) {
//print the label name
cout << label->GetName() << endl;
//Iterate through all child labels
for (const auto& child : label->GetChildren()) {
//Print the label with some formatting
cout << "-> " << child->GetName() << endl;
}
}
A nevek nyomtatásával egyszerűen megmutathatjuk, hogy sikeresen lekértük a szabályzatot a szolgáltatásból, és sikerült lekérni a címkéket. A címke alkalmazásához a címkeazonosítóra van szükség. A fenti sznip módosítása a címkeazonosító eredményének visszaadásához:
for (const auto& label : labels) {
//Print label name and GUID
cout << label->GetName() << " : " << label->GetId() << endl;
//Print child label name and GUID
for (const auto& child : label->GetChildren()) {
cout << "-> " << child->GetName() << " : " << child->GetId() << endl;
}
}
A visszaadott ListSensitivityLabels()
címkék gyűjteményével mip::Label
megjelenítheti a felhasználó számára elérhető összes címkét, majd ha ki van választva, az azonosítóval címkéket alkalmazhat egy fájlra.
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: