Pojęcie — delegowanie w zestawie SDK miP

Zestaw Microsoft Information Protection SDK udostępnia dwie ścieżki do działania aplikacji opartych na usłudze w imieniu innego użytkownika. Delegowanie może być konieczne, gdy pliki muszą być oznaczone etykietą, chronione lub używane w kontekście tożsamości użytkownika innej niż tożsamość usługi. Tę tożsamość delegowaną można ustawić na poziomie aparatu lub programu obsługi i to, gdzie zostanie ustawiona, zależy od przypadku użycia.

Delegowanie Ustawienia oparte na a aparatach

Zestaw SDK programu MIP obsługuje podanie adresu e-mail delegowanego użytkownika w obiekcie ustawień dla wszystkich zestawów SDK. Pliki, ochrona i zasady. Można to osiągnąć, DelegatedUserEmail ustawiając właściwość obiektu ustawień. W efekcie aparat zainicjowany za pomocą tego obiektu ustawień będzie wykonywać wszystkie operacje MIP tak, jakby to użytkownik podał tę właściwość. Zasady zostaną pobrane dla tego konkretnego użytkownika i wszystkie operacje ochrony będą wykonywane jako ten użytkownik, w tym być właścicielem chronionych plików.

Wzorzec ten jest przydatny, gdy aplikacja oparta na usłudze musi działać w pełni jako użytkownik; zasady muszą być pobierane tylko dla określonego użytkownika, a wszystkie operacje odszyfrowywania muszą być wykonywane w kontekście tożsamości użytkownika. Podczas tworzenia tego aparatu ważne jest, aby podczas tworzenia tego aparatu aplikacja określała identyfikator aparatu unikatowy dla tego użytkownika, często adres e-mail. Dzięki temu korzyści z buforowania zostaną zrealizowane. Jeśli nie podano unikatowego identyfikatora aparatu, wydajność aplikacji może być niska.

Zestaw SDK pliku

W poniższym przykładzie pokazano, jak ustawić tożsamość delegowaną dla aplikacji File SDK w językach C++ i C#. Tego samego wzorca można użyć dla zestawu SDK zasad.

W tym przykładzie pokazano, jak utworzyć aparat pełnomocnika w zestawie Sdk pliku w programie .NET.

// C# Example for creating a delegated file engine
string delegatedUserEmail = "alice@contoso.com";
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;

W tym przykładzie pokazano, jak utworzyć aparat delegowania w zestawie Sdk pliku w języku C++.

// C++ Example for creating a delegated file engine
std::string delegatedUserEmail = "alice@contoso.com";
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();

W efekcie wszystkie aparaty plików zostaną utworzone w imieniu określonego użytkownika.

Delegowanie oparte na programie obsługi

W scenariuszach, w których potrzebujemy tylko chronić pliki w kontekście określonej tożsamości użytkownika, zapewnia ona metodę przekazywania tożsamości użytkownika za pomocą ProtectionSettings obiektu. Zasady i wszelkie operacje odszyfrowywania będą wykonywane jako uwierzytelniona tożsamość usługi. Akcja ochrony będzie wykonywana w imieniu określonego użytkownika; ten użytkownik będzie właścicielem ochrony przed mip w dokumencie.

Zestaw SDK pliku

Tylko operacja stosowania ochrony bezpośrednio lub za pośrednictwem etykiety zostanie wykonana jako użytkownik dostarczony dla ProtectionSettings obiektu. Ten obiekt jest przekazywany do funkcji SetLabel()SetProtection() (lub) w zestawie File SDK.

W tym przykładzie pokazano, jak wykonać operację ochrony pełnomocnika w zestawie Sdk pliku w programie .NET.

string delegatedUserEmail = "bob@contoso.com";
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);

W tym przykładzie pokazano, jak wykonać operację ochrony pełnomocnika w zestawie File SDK w języku C++.

mip::ProtectionSettings protectionSettings;
// Set the delegated mail address 
protectionSettings.SetDelegatedUserEmail(delegatedUserEmail);
handler->SetLabel(mEngine->GetLabelById(labelId), labelingOptions, protectionSettings);

W efekcie jako użytkownik delegowany zostaną wykonane wszystkie operacje zapisu obsługi, w których zastosowano ochronę.

Zestaw SDK ochrony

Zestaw SDK ochrony działa inaczej niż zestaw SDK pliku. Można tworzyć dwa typy programów obsługi: jeden do publikowania i jeden do użycia. Podobnie jak w zestawie File SDK, delegowany adres e-mail jest ustawiany za pośrednictwem obiektu ustawień dla każdego typu programu obsługi.

.NET

W tym przykładzie pokazano sposób publikowania delegowanego.

string delegatedUserEmail = "bob@contoso.com";
PublishingSettings publishingSettings = new PublishingSettings(protectionDescriptor)
{
    // Set the delegated mail address 
    DelegatedUserEmail = delegatedUserEmail
};          
var protectionHandler = engine.CreateProtectionHandlerForPublishing(publishingSettings);

W tym przykładzie pokazano sposób użycia delegowanego.

string delegatedUserEmail = "bob@contoso.com";
ConsumptionSettings consumptionSettings = new ConsumptionSettings(plInfo)
{                
    ContentName = "A few bytes.",
    // Set the delegated mail address 
    DelegatedUserEmail = delegatedUserEmail
};
var protectionHandler = engine.CreateProtectionHandlerForConsumption(consumptionSettings);

C++

W tym przykładzie pokazano sposób użycia delegowanego.

string delegatedUserEmail = "bob@contoso.com";
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();	

W tym przykładzie pokazano sposób publikowania delegowanego.

string delegatedUserEmail = "bob@contoso.com";
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();	

Wymagane uprawnienia

Każdy z powyższych scenariuszy wymaga innego zestawu uprawnień.

Scenariusz Uprawnienie Wymagane
Aparat delegowany zestawu SDK pliku UnifiedPolicy.Tenant.Read
Content.DelegatedReader
Content.DelegatedWriter
Aparat delegowany zestawu SDK zasad UnifiedPolicy.Tenant.Read
Delegowany program obsługi zestawu SDK plików Content.DelegatedWriter
Delegowana publikowanie za pomocą zestawu SDK ochrony Content.DelegatedWriter
Delegowanie użycia zestawu SDK ochrony Content.DelegatedReader

Aby zapoznać się z pełnym przeglądem uprawnień i miejsca ich ustawienia, przejrzyj uprawnienia interfejsu API zestawu SDK pakietu Microsoft Information Protection SDK

Następne kroki