Koncept – Delegace v MIP SDK

Sada Microsoft Information Protection SDK poskytuje dvě cesty, jak aplikace založené na službách jednat jménem jiného uživatele. Delegování může být nezbytné, pokud je potřeba soubory označit, chránit nebo využívat v kontextu identity uživatele, která se liší od identity služby. Tuto delegovanou identitu je možné nastavit na úrovni modulu nebo obslužné rutiny a na tom, kde je nastavená, závisí na případu použití.

Delegování založené na nastavení motoru

Sada MIP SDK podporuje poskytnutí delegované uživatelské e-mailové adresy v objektu nastavení pro všechny sady SDK; Soubor, ochrana a zásady. Toho dosáhnete nastavením DelegatedUserEmail vlastnosti objektu nastavení. Výsledkem je, že modul inicializovaný s tímto objektem nastavení provede všechny operace MIP , jako by byl uživatel poskytnut do DelegatedUserEmail vlastnosti. Zásady se načtou pro konkrétního uživatele a všechny operace ochrany se budou provádět jako tento uživatel, přičemž tento uživatel bude i vlastníkem chráněných souborů.

Tento model je užitečný v případě, že aplikace založená na službě musí fungovat plně jako uživatel; zásady je potřeba načíst pouze pro zadaného uživatele a všechny operace dešifrování je potřeba provádět v kontextu identity uživatele. Při vytváření tohoto modulu je důležité, aby aplikace určovala ID modulu jedinečné pro daného uživatele, často e-mailovou adresu. Tím se zajistí, že budou realizovány výhody ukládání do mezipaměti. Pokud není zadané jedinečné ID modulu, může dojít k nízkému výkonu vaší aplikace.

Sada SDK pro soubory

Následující ukázka ukazuje, jak nastavit delegovanou identitu pro aplikaci File SDK v jazyce C++ a C#. Stejný vzor lze použít pro Policy SDK.

Tato ukázka ukazuje, jak vytvořit delegovací modul v sadě File SDK v .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;

Tato ukázka ukazuje, jak vytvořit delegovací modul v sadě File SDK v jazyce 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();

Výsledkem je, že všechny souborové moduly budou vytvořeny jménem zadaného uživatele.

Delegování na základě obslužné rutiny

Ve scénářích, kdy potřebujeme chránit soubory pouze v kontextu konkrétní identity uživatele, FileHandler poskytuje metodu předávání identity uživatele prostřednictvím objektu ProtectionSettings . Zásady a všechny dešifrovací operace se budou provádět jako ověřená identita služby. Akce ochrany bude provedena jménem zadaného uživatele; tento uživatel bude vlastníkem ochrany MIP v dokumentu.

Sada SDK pro soubory

Operace aplikace ochrany buď přímo, nebo prostřednictvím štítku, bude provedena tak, jak určil uživatel pro objekt ProtectionSettings. Tento objekt se předá do funkcí SetLabel() nebo SetProtection() v sadě File SDK.

Tato ukázka ukazuje, jak provést ochrannou operaci delegáta v File SDK pro .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);

Tato ukázka ukazuje, jak provést operaci ochrany delegáta v sadě File SDK v jazyce C++.

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

Výsledkem je, že všechny operace obslužné rutiny zápisu, ve kterých se použije ochrana, budou prováděny jako delegovaný uživatel.

SDK ochrany

Sada SDK ochrany funguje jinak než sada File SDK. Existují dva typy obslužných rutin , které lze vytvořit, jeden pro publikování a jeden pro spotřebu. Podobně jako v sadě File SDK je delegovaná poštovní adresa nastavena prostřednictvím objektu nastavení pro každý typ obslužné rutiny.

platforma .NET

Tato ukázka ukazuje, jak provést delegované publikování.

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

Tato ukázka ukazuje, jak provést delegovanou spotřebu.

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++

Tato ukázka ukazuje, jak provést delegované publikování.

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();	

Tato ukázka ukazuje, jak provést delegovanou spotřebu.

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();	

Požadovaná oprávnění

Každý z výše uvedených scénářů vyžaduje jinou sadu oprávnění.

Scénář Požadováno oprávnění
Delegovaný stroj sady File SDK UnifiedPolicy.Tenant.Read
Obsah.PověřenýČtenář
Obsah.DegovanýAutor
Delegovaný modul sady Policy SDK UnifiedPolicy.Tenant.Read
Delegovaná obslužná rutina sady File SDK Obsah.DegovanýAutor
SDK ochrany - delegované publikování Obsah.DegovanýAutor
Delegovaná spotřeba ochranného SDK Obsah.PověřenýČtenář

Úplnou kontrolu oprávnění a jejich nastavení najdete v tématu Oprávnění rozhraní API pro sadu Microsoft Information Protection SDK.

Další kroky