Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
mip::FileEngine в пакете SDK для файлов MIP предоставляет интерфейс для всех операций, выполняемых от имени указанного идентификатора. Добавьте один модуль для каждого пользователя, который входит в приложение. Компонент выполняет все операции в контексте этой учётной записи.
У FileEngine него есть две основные обязанности: перечисление меток для пользователя, прошедшего проверку подлинности, и создание обработчиков файлов для выполнения операций с файлами от имени пользователя.
mip::FileEngine-
ListSensitivityLabels(): получает список меток для загруженного движка. -
CreateFileHandler(): создаетmip::FileHandlerдля конкретного файла или потока.
Добавить модуль работы с файлами
Как описано в объектах profile и engine, подсистема может иметь два состояния - CREATED или LOADED. Если это не одно из этих двух состояний, он не существует. Чтобы создать и загрузить состояние, достаточно одного вызова FileProfile::LoadAsync. Если движок уже существует в кэше, он LOADED. Если он не существует, это CREATED и LOADED.
CREATED означает, что у приложения есть все данные из службы, необходимые для загрузки модуля.
LOADED подразумевает, что все структуры данных, необходимые для использования подсистемы, существуют в памяти.
Создать параметры файлового модуля
Аналогично профилю, обработчику также требуется объект параметров. mip::FileEngine::Settings Этот объект хранит уникальный идентификатор механизма, реализацию mip::AuthDelegate, настраиваемые клиентские данные для отладки или телеметрии, а также, при необходимости, локаль.
Здесь мы создадим FileEngine::Settings объект с именем engineSettings с помощью удостоверения пользователя приложения.
FileEngine::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.
При создании engineSettings таким образом также явно задайте уникальный идентификатор engineId:
engineSettings.SetEngineId(engineId);
Использование имени пользователя или электронной почты помогает гарантировать, что один и тот же механизм загружается каждый раз, когда пользователь использует службу или приложение.
Также допустимо предоставление пользовательского идентификатора движка.
FileEngine::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.
Рекомендуется использовать первый параметр, id, который подключает движок к соответствующему пользователю. Адрес электронной почты, UPN или GUID объекта Microsoft Entra помогает гарантировать, что идентификатор уникален и его можно загрузить из локального состояния без вызова службы.
Добавление обработчика файлов
Чтобы добавить движок, вернитесь к шаблону Promise/Future, который используется для загрузки профиля. Вместо создания обещания mip::FileProfile, создайте его с помощью mip::FileEngine.
//auto profile will be std::shared_ptr<mip::FileProfile>
auto profile = profileFuture.get();
// Instantiate the AuthDelegate implementation.
auto authDelegateImpl = std::make_shared<sample::auth::AuthDelegateImpl>(appInfo, userName, password);
//Create the FileEngine::Settings object
FileEngine::Settings engineSettings("UniqueID", authDelegateImpl, "");
//Create a promise for std::shared_ptr<mip::FileEngine>
auto enginePromise = std::make_shared<std::promise<std::shared_ptr<mip::FileEngine>>>();
//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::FileEngine>
auto engine = engineFuture.get();
Код добавляет модуль для прошедшего проверку подлинности пользователя в профиль.
Вывести список меток конфиденциальности
Используя добавленный модуль, вы можете получить список всех меток конфиденциальности, доступных проверенному пользователю, с помощью вызова engine->ListSensitivityLabels().
ListSensitivityLabels() Извлекает список меток и атрибутов этих меток для конкретного пользователя из службы. Результат хранится в векторе std::shared_ptr<mip::Label>.
Дополнительные сведения см. в справочнике по классуmip::Label.
Список меток чувствительности()
std::vector<shared_ptr<mip::Label>> labels = engine->ListSensitivityLabels();
Или упрощено:
auto labels = engine->ListSensitivityLabels();
Печать меток и идентификаторов
Печать имен показывает, что приложение успешно извлекло политику из службы и получило метки. Чтобы применить метку, вам потребуется идентификатор метки. Следующий код перебирает все метки и отображает name и id для каждой родительской и дочерней метки.
//Iterate through all labels in the vector
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;
}
}
Вы можете использовать коллекцию mip::Label, возвращаемую компонентом GetSensitivityLabels(), чтобы отобразить все метки, доступные пользователю, а затем, после выбора, использовать идентификатор для применения меток к файлу.
Дальнейшие действия
Теперь, когда профиль загружен, ядро добавлено и метки доступны, можно добавить обработчик, чтобы начать читать, записывать или удалять метки из файлов. Дополнительные сведения см. в разделе обработчиков файлов в пакете SDK для MIP.