Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
mip::PolicyEngine implementa todas as operações que o SDK de Política pode executar, com exceção do carregamento do perfil.
Implementação: adicionar um mecanismo de política
Implementação: criar configurações do mecanismo de política
Semelhante a um perfil, o mecanismo também requer um objeto de configurações, mip::PolicyEngine::Settings. Esse objeto armazena o identificador exclusivo do mecanismo, um objeto de sua mip::AuthDelegate implementação, dados de cliente personalizáveis para depuração ou telemetria e, opcionalmente, a localidade.
O exemplo a seguir cria um PolicyEngine::Settings objeto chamado engineSettings usando a identidade do usuário do aplicativo:
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.
Ao criar engineSettings dessa maneira, também defina explicitamente uma engineId exclusiva:
engineSettings.SetEngineId(engineId);
O uso do nome de usuário ou email ajuda a garantir que o mesmo mecanismo seja carregado sempre que o usuário usar o serviço ou o aplicativo.
Também é válido fornecer uma ID de mecanismo personalizador:
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 prática recomendada, use como primeiro parâmetro id, que vincula o mecanismo ao usuário associado, de preferência o nome principal do usuário.
Implementação: adicionar o mecanismo de política
Para adicionar o mecanismo, volte ao padrão futuro/promessa usado para carregar o perfil. Em vez de criar a promessa 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();
O código adiciona um mecanismo para o usuário autenticado ao perfil.
Implementação: Listar rótulos de confidencialidade
Usando o mecanismo adicionado, você pode listar todos os rótulos de confidencialidade disponíveis para o usuário autenticado chamando engine->ListSensitivityLabels().
ListSensitivityLabels() busca a lista de rótulos e atributos desses rótulos para um usuário específico do serviço. O resultado é armazenado em um vetor de std::shared_ptr<mip::Label>.
Implementação: ListSensitivityLabels()
std::vector<shared_ptr<mip::Label>> labels = engine->ListSensitivityLabels();
Implementação: imprimir os rótulos
//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;
}
}
Imprimir os nomes mostra que o aplicativo retirou a política com êxito do serviço e obteve os rótulos. Para aplicar o rótulo, você precisa do identificador de rótulo. Modifique o snippet anterior para retornar a ID do rótulo:
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;
}
}
Você pode usar a coleção de mip::Label retornados por ListSensitivityLabels() para exibir todos os rótulos disponíveis para o usuário e, depois de selecionados, usar o ID para aplicar os rótulos a um arquivo.