Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
mip::PolicyEngine implementa todas las operaciones que puede realizar el SDK de directiva, a excepción de cargar el perfil.
Implementación: Adición de un motor de directivas
Implementación: Creación de la configuración del motor de directivas
De forma similar a un perfil, el motor también requiere un objeto de configuración, mip::PolicyEngine::Settings. Este objeto almacena el identificador único del motor, un objeto de la mip::AuthDelegate implementación, los datos de cliente personalizables para la depuración o telemetría, y, opcionalmente, la configuración regional.
En el ejemplo siguiente se crea un PolicyEngine::Settings objeto denominado engineSettings mediante la identidad del usuario de la aplicación:
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.
Al crear engineSettings de esta manera, también establezca explícitamente un engineId único:
engineSettings.SetEngineId(engineId);
El uso del nombre de usuario o el correo electrónico ayuda a garantizar que el mismo motor se cargue cada vez que el usuario use el servicio o la aplicación.
También es válido proporcionar un identificador de motor personalizado:
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.
Como procedimiento recomendado, use un primer parámetro, id. que conecte el motor al usuario asociado, preferiblemente el nombre principal de usuario.
Implementación: adición del motor de directivas
Para añadir el motor, vuelve al patrón future/promise utilizado para cargar el perfil. En lugar de crear la promesa para mip::Profile, use 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();
El código agrega un motor para el usuario autenticado al perfil.
Implementación: Enumerar etiquetas de confidencialidad
Con el motor añadido, puede listar todas las etiquetas de confidencialidad disponibles para el usuario autenticado llamando a engine->ListSensitivityLabels().
ListSensitivityLabels() captura la lista de etiquetas y atributos de esas etiquetas para un usuario específico del servicio. El resultado se almacena en un vector de std::shared_ptr<mip::Label>.
Implementación: ListSensitivityLabels()
std::vector<shared_ptr<mip::Label>> labels = engine->ListSensitivityLabels();
Implementación: imprimir las etiquetas
//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;
}
}
La impresión de los nombres muestra que la aplicación extrajo correctamente la directiva del servicio y obtuvo las etiquetas. Para aplicar la etiqueta, necesita el identificador de etiqueta. Modifique el fragmento de código anterior para devolver el identificador de etiqueta:
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;
}
}
Puede usar la colección de mip::Label devuelta por ListSensitivityLabels() para mostrar todas las etiquetas disponibles para el usuario y, después, cuando se selecciona, use el identificador para aplicar etiquetas a un archivo.