Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Пакет SDK Microsoft Information Protection предоставляет два пути для служебных приложений, чтобы действовать от имени другого пользователя. Делегирование может потребоваться, если файлы должны быть помечены, защищены или использованы в контексте удостоверения пользователя, отличного от удостоверения службы. Это делегированное удостоверение можно задать на уровне движка или обработчика, и то, где оно будет задано, будет зависеть от варианта использования.
Делегирование, основанное на настройках движка
SDK MIP поддерживает указание делегированного адреса электронной почты пользователя в объекте настроек для всех SDK: файлового, защитного и политик. Это достигается путем задания DelegatedUserEmail
свойства в объекте settings. Результатом является то, что подсистема, инициализированная с этим объектом параметров, будет выполнять все операции MIP , как будто это был пользователь, предоставленный свойству DelegatedUserEmail
. Политика будет получена для конкретного пользователя, и все операции защиты будут выполняться от имени этого пользователя, включая признание его владельцем защищенных файлов.
Этот шаблон полезен, когда служебному приложению необходимо полностью работать от имени пользователя; политика должна быть получена только для указанного пользователя, а все операции по расшифровке должны выполняться в контексте идентификации пользователя. Важно, чтобы при создании этого модуля приложение указало идентификатор обработчика, уникальный для этого пользователя, часто адрес электронной почты. Это гарантирует, что преимущества кэширования будут реализованы. Если уникальный идентификатор обработчика не указан, приложение может столкнуться с низкой производительностью.
Пакет SDK для файлов
В следующем примере показано, как задать делегированное удостоверение для приложения пакета SDK для файлов в C++ и C#. Тот же шаблон можно использовать для пакета SDK политики.
В этом примере показано, как создать подсистему делегатов в пакете SDK для файлов в .NET.
// C# Example for creating a delegated file engine
string delegatedUserEmail = "[email protected]";
var engineSettings = new PolicyEngineSettings(delegatedUserEmail, authDelegate, "", "en-US")
{
// Provide the identity for service discovery.
Identity = identity,
// Set the identity for which all MIP operations will be performed.
DelegatedUserEmail = delegatedUserEmail
};
var engine = Task.Run(async () => await profile.AddEngineAsync(engineSettings)).Result;
В этом примере показано, как создать подсистему делегатов в пакете SDK для файлов в C++.
// C++ Example for creating a delegated file engine
std::string delegatedUserEmail = "[email protected]";
FileEngine::Settings engineSettings(delegatedUserEmail, mAuthDelegate, "", "en-US", false);
// Set the identity for which all MIP operations will be performed.
engineSettings.SetDelegatedUserEmail(delegatedUserEmail);
auto enginePromise = std::make_shared<std::promise<std::shared_ptr<FileEngine>>>();
auto engineFuture = enginePromise->get_future();
mProfile->AddEngineAsync(engineSettings, enginePromise);
mEngine = engineFuture.get();
Результатом является то, что все модули файлов будут созданы от имени указанного пользователя.
Делегирование на основе обработчика
В сценариях, когда необходимо защитить файлы только в контексте определенного удостоверения пользователя, FileHandler
предоставляет метод передачи удостоверения пользователя через ProtectionSettings
объект. Политика и любые операции расшифровки будут выполняться как аутентифицированный идентификатор службы. Действие защиты будет выполняться от имени указанного пользователя; этот пользователь будет владельцем защиты MIP в документе.
Пакет SDK для файлов
Только операция применения защиты непосредственно или через метку будет выполняться, как указано пользователем в объекте ProtectionSettings
. Этот объект передается в функции SetLabel()
или SetProtection()
в SDK для работы с файлами.
В этом примере показано, как выполнить операцию защиты делегатов в пакете SDK для файлов в .NET.
string delegatedUserEmail = "[email protected]";
ProtectionSettings protectionSettings = new ProtectionSettings()
{
// Set the delegated mail address
DelegatedUserEmail = delegatedUserEmail
};
handler.SetLabel(engine.GetLabelById(options.LabelId), labelingOptions, protectionSettings);
// Similar pattern for SetProtection()
// handler.SetProtection(protectionDescriptor, protectionSettings);
В этом примере показано, как выполнить операцию защиты делегатов в пакете SDK для файлов в C++.
mip::ProtectionSettings protectionSettings;
// Set the delegated mail address
protectionSettings.SetDelegatedUserEmail(delegatedUserEmail);
handler->SetLabel(mEngine->GetLabelById(labelId), labelingOptions, protectionSettings);
Результатом является то, что все операции записи обработчика, в которых применяется защита, будут выполняться как делегированный пользователь.
Пакет SDK для защиты
Пакет SDK для защиты отличается от пакета SDK для файлов. Существует два типа обработчиков , которые можно создать, один для публикации и один для потребления. Как и в пакете SDK для файлов, делегированный почтовый адрес устанавливается через объект settings для каждого типа обработчика.
.NET
В этом примере показано, как выполнять делегированную публикацию.
string delegatedUserEmail = "[email protected]";
PublishingSettings publishingSettings = new PublishingSettings(protectionDescriptor)
{
// Set the delegated mail address
DelegatedUserEmail = delegatedUserEmail
};
var protectionHandler = engine.CreateProtectionHandlerForPublishing(publishingSettings);
В этом примере показано, как выполнять делегированное потребление.
string delegatedUserEmail = "[email protected]";
ConsumptionSettings consumptionSettings = new ConsumptionSettings(plInfo)
{
ContentName = "A few bytes.",
// Set the delegated mail address
DelegatedUserEmail = delegatedUserEmail
};
var protectionHandler = engine.CreateProtectionHandlerForConsumption(consumptionSettings);
C++
В этом примере показано, как выполнять делегированное потребление.
string delegatedUserEmail = "[email protected]";
mip::ProtectionHandler::PublishingSettings publishingSettings = mip::ProtectionHandler::PublishingSettings(descriptor);
// Set the delegated mail address
publishingSettings.SetDelegatedUserEmail(delegatedUserEmail);
mEngine->CreateProtectionHandlerForPublishingAsync(publishingSettings, handlerObserver, handlerPromise);
auto handler = handlerFuture.get();
В этом примере показано, как выполнять делегированную публикацию.
string delegatedUserEmail = "[email protected]";
mip::ProtectionHandler::ConsumptionSettings consumptionSettings = mip::ProtectionHandler::ConsumptionSettings(serializedPublishingLicense);
// Set the delegated mail address
consumptionSettings.SetDelegatedUserEmail(delegatedUserEmail);
mEngine->CreateProtectionHandlerForConsumptionAsync(consumptionSettings, handlerObserver, handlerPromise);
auto handler = handlerFuture.get();
Необходимые разрешения
Для каждого из описанных выше сценариев требуется другой набор разрешений.
Сценарий | Требуется разрешение |
---|---|
Файловый движок делегированного SDK | UnifiedPolicy.Tenant.Read Content.DelegatedReader Content.DelegatedWriter |
Движок делегирования SDK для политики | UnifiedPolicy.Tenant.Read |
Делегированный обработчик пакета SDK для файлов | Content.DelegatedWriter |
Делегированная публикация пакета SDK для защиты | Content.DelegatedWriter |
Делегированное использование Protection SDK | Content.DelegatedReader |
Полный обзор разрешений и их указание см. в разделе "Разрешения API" для пакета SDK Microsoft Information Protection.