Kontroly přístupu v sadě Microsoft Purview Information Protection SDK
Vynucování práv správy přístupových práv k informacím definovaným na portálu dodržování předpisů je zodpovědností vývojáře aplikací. Sada SDK poskytuje rozhraní API a sadu enumerátorů pro zjednodušení těchto kontrol přístupu.
Následující příklady a tabulky ukazují, které scénáře vyžadují kontrolu přístupu, seznam práv ke kontrole a postup kontroly.
Seznam práv a výsledky
Úplný seznam práv a popisů použití najdete v tématu Konfigurace práv k používání pro Azure Information Protection. Tento článek definuje povinnosti vývojáře aplikací při vynucování práv a povolených funkcích, pokud existují konkrétní práva nebo nejsou k dispozici.
Důležité
Je to responsbility vývojářů aplikací kontrolovat a vynucovat práva. Při selhání kontrol může dojít ke ztrátě dat.
Scénáře
Kde a jak vaše aplikace provádí kontroly přístupu, bude záviset na typu aplikace, kterou vytváříte. Aplikace, které zpracovávají výstup full-file a nemají žádné uživatelské rozhraní, budou používat EXTRACT
práva nebo OWNER
práva nejčastěji. Aplikace s uživatelským rozhraním budou vyžadovat nejpodrobnější ovládací prvky, které blokují přístup k uživatelským ovládacím prvkům a cestám exportu v aplikaci. Příklady kódu najdete v části kontroly přístupu .
Aplikace bez uživatelského rozhraní
Aplikace bez uživatelského rozhraní jsou často rozhraní příkazového řádku nebo rozhraní příkazového řádku (CLI). Když vaše aplikace zpracovává soubory chráněné službou Purview Information Protection, musí zajistit, aby uživatel bez správných práv nemohl službu ani rozhraní příkazového řádku použít k exportu souboru v nechráněném formátu.
Tyto aplikace by měly ověřit, jestli jsou k dispozici práva VLASTNÍK nebo EXTRACT . Uživatelé s vlastníkem můžou provádět jakoukoli operaci. Uživatelé s funkcí EXTRACT můžou přímo odebrat ochranu nebo uložit do nového formátu, i když tento formát nepodporuje ochranu.
Aplikace s uživatelským rozhraním
Aplikace file SDK s uživatelským rozhraním musí implementovat ovládací prvky omezující přístup k operacím, které uživatel nesmí provádět. Jedním z příkladů takové aplikace je Prohlížeč služby Azure Information Protection. Prohlížeč dočasně dešifruje soubor a vykreslí obsah v okně aplikace. Před zobrazením dokumentu provádí podrobné kontroly přístupu a zakazuje prvky uživatelského rozhraní na základě výsledků kontrol přístupu.
Částečný pracovní postup provádění kontrol přístupu může vypadat takto:
- Má uživatel právo VLASTNÍK ? Pokud ano, povolte všechny ovládací prvky a zastavte zpracování dalších práv.
- Má uživatel právo PRINT ? Pokud ano, povolte ovládací prvek tisk. Pokud ne, zakažte ovládací prvek tisku.
- Má uživatel právo EXPORTOVAT ? Pokud ano, povolte export ovládací prvky a prvky uživatelského rozhraní. Pokud ne, zakažte tyto prvky.
- Má uživatel právo EXTRACT ? Pokud ano, povolte kopírování a snímky obrazovky. Pokud ne, zakažte tyto funkce.
- Má uživatel právo UPRAVIT ? Pokud ano, povolte úpravy a uložte aktuální položku. Pokud ne, nastavte položku jen pro čtení.
Tyto kontroly by se měly provádět pro všechna oprávnění v tabulce seznamu práv a výsledků s výjimkou práva VIEW . Soubor nebude přístupný bez tohoto práva.
Provádění kontrol přístupu
Vzory pro provádění kontroly přístupu jsou podobné v sadě File and Protection SDK pro C++, .NET a Java.
Tyto ukázky kódu předpokládají, že jste prošli kroky k inicializaci sady SDK a vytvořili instanci modulu a obslužné rutiny.
- Rychlý start: Inicializace klientské aplikace (C++)
- Rychlý start: Inicializace klientské aplikace (C#)
- Rychlý start: Inicializace klientské aplikace pro sady SDK ochrany (C++)
- Rychlý start: Inicializace klientské aplikace pro sady SDK ochrany (C#)
Provádění kontrol přístupu v sadě File SDK pomocí .NET
Tento výnip kódu předpokládá, že byla vytvořena obslužná rutina souboru a odkazuje na platný soubor.
// Validate that the file referred to by the FileHandler is protected.
if(handler.Protection != null)
{
// Validate that user has rights to remove protection from the file.
if(handler.Protection.AccessCheck(Rights.Extract))
{
// If user has Extract right, remove protection and commit the change. Otherwise, throw exception.
handler.RemoveProtection();
bool result = handler.CommitAsync(outputPath).GetAwaiter().GetResult();
return result;
}
else
{
throw new Microsoft.InformationProtection.Exceptions.AccessDeniedException("User lacks EXPORT right.");
}
}
Provádění kontrol přístupu v sadě Sdk ochrany pomocí .NET
Tento výnip kódu předpokládá, že byla vytvořena obslužná rutina ochrany pro použití.
// Validate that the file referred to by the FileHandler is protected.
if(protectionHandler != null)
{
// Validate that user has rights to remove protection from the file.
if(protectionHandler.AccessCheck(Rights.Print))
{
// If the user has the print right, enable the control.
// SetPrintControlEnabled() is an example and not a MIP SDK function.
SetPrintControlEnabled(true);
}
else
{
// If the user does not have the print right, disable the control.
// SetPrintControlEnabled() is an example and not a MIP SDK function.
SetPrintControlEnabled(false);
}
}
Provádění kontrol přístupu v sadě File SDK pomocí jazyka C++
Tento výnip kódu předpokládá, že byla vytvořena obslužná rutina souboru a odkazuje na platný soubor.
// Validate that the file referred to by the FileHandler is protected.
if (fileHandler->GetProtection() != nullptr)
{
if (fileHandler->GetProtection()->AccessCheck(mip::rights::Extract()))
{
auto commitPromise = std::make_shared<std::promise<bool>>();
auto commitFuture = commitPromise->get_future();
fileHandler->RemoveProtection();
fileHandler->CommitAsync(outputFile, commitPromise);
result = commitFuture.get();
}
else
{
throw std::runtime_error("User doesn't have EXTRACT right.");
}
}
Provádění kontrol přístupu v sadě Protection SDK pomocí C++
Tento výnip kódu předpokládá, že byla vytvořena obslužná rutina ochrany pro použití.
// Validate that the file referred to by the FileHandler is protected.
if (protectionHandler != nullptr)
{
if (protectionHandler->AccessCheck(mip::rights::Print()))
{
// If the user has the print right, enable the control.
// SetPrintControlEnabled() is an example and not a MIP SDK function.
SetPrintControlEnabled(true);
}
else
{
// If the user does not have the print right, disable the control.
// SetPrintControlEnabled() is an example and not a MIP SDK function.
SetPrintControlEnabled(false);
}
}
Další kroky
Teď, když máte představu o tom, jak správně provádět kontroly přístupu a vynucovat práva spojená s těmito kontrolami, pokračujte koncepty obslužné rutiny souborů a získejte další informace o odebrání ochrany ze souborů.