Åtkomstkontroller i Microsoft Purview Information Protection SDK
Det är programutvecklarens ansvar att tillämpa de rättigheter för hantering av informationsrättigheter som definierats i efterlevnadsportalen . SDK:n tillhandahåller ett API och en uppsättning uppräknare för att förenkla dessa åtkomstkontroller.
Exemplen och tabellerna nedan visar vilka scenarier som kräver en åtkomstkontroll, listan över rättigheter att kontrollera mot och hur du utför kontrollen.
Rättighetslista och resultat
En fullständig lista över användningsrättigheter och beskrivningar finns i Konfigurera användningsrättigheter för Azure Information Protection. Den här artikeln definierar ansvaret för en programutvecklare i rättighetsframtvingande och aktiverade funktioner när specifika rättigheter finns eller inte finns.
Viktigt!
Det är programutvecklares ansvar att både kontrollera och framtvinga rättigheter. Om du inte utför kontroller kan det leda till dataförlust.
Scenarier
Var och hur ditt program utför åtkomstkontroller beror på vilken typ av program du skapar. Program som hanterar fullfilsutdata och som inte har något användargränssnitt använder EXTRACT
de eller OWNER
-rättigheter som oftast. Program med ett användargränssnitt kräver de flesta detaljerade kontroller, vilket blockerar åtkomsten till användarkontroller och exportsökvägar i programmet. Se avsnittet utföra åtkomstkontroller för kodexempel.
Program utan användargränssnitt
Program utan användargränssnitt är ofta tjänstbaserade gränssnitt eller kommandoradsgränssnitt (CLI). När programmet hanterar filer som skyddas av Purview Information Protection måste det säkerställa att en användare utan rätt rättigheter inte kan använda tjänsten eller CLI för att exportera filen i ett oskyddat format.
Dessa program bör kontrollera att ÄGAR- eller EXTRACT-rättigheterna finns. Användare med ÄGARE kan utföra alla åtgärder. Användare med EXTRACT kan ta bort skyddet direkt eller spara det i ett nytt format, även om formatet inte stöder skydd.
Program med ett användargränssnitt
Fil-SDK-program med ett användargränssnitt måste implementera kontroller som begränsar åtkomsten till åtgärder som användaren inte har behörighet att utföra. Ett exempel på ett sådant program är Azure Information Protection Viewer. Visningsprogrammet dekrypterar tillfälligt filen och återger innehållet i programfönstret. Den utför detaljerade åtkomstkontroller innan dokumentet visas och inaktiverar användargränssnittselement baserat på resultatet av åtkomstkontrollerna.
Ett partiellt arbetsflöde för att utföra åtkomstkontroller kan se ut så här:
- Har användaren rätt ägare ? Om ja aktiverar du alla kontroller och slutar bearbeta andra rättigheter.
- Har användaren rätt utskrift ? Om ja aktiverar du utskriftskontrollen. Om inte inaktiverar du utskriftskontrollen.
- Har användaren exporträtt ? Om ja aktiverar du exportkontroller och gränssnittselement. Om inte inaktiverar du dessa element.
- Har användaren behörigheten EXTRAHERA ? Om ja aktiverar du kopiering och skärmbilder. Om inte inaktiverar du dessa funktioner.
- Har användaren behörigheten REDIGERA ? Om ja aktiverar du redigering och sparar det aktuella objektet. Om inte gör du objektet skrivskyddat.
Dessa kontroller bör utföras för alla behörigheter i listan över rättigheter och resultattabellen , med undantag för VIEW-rätten . Filen kommer inte att vara tillgänglig utan den här rättigheten.
Utföra åtkomstkontroller
Mönster för att utföra åtkomstkontrollen liknar dem i SDK:t för fil- och skydd för C++, .NET och Java.
Dessa kodexempel förutsätter att du har gått igenom stegen för att initiera SDK och har instansierat en motor och hanterare.
- Snabbstart: Initiering av klientprogram (C++)
- Snabbstart: Initiering av klientprogram (C#)
- Snabbstart: Klientprograminitiering för Skydds-SDK:er (C++)
- Snabbstart: Initiering av klientprogram för Skydds-SDK:er (C#)
Utföra åtkomstkontroller i fil-SDK med .NET
Det här kodfragmentet förutsätter att en FileHandler har skapats och pekar på en giltig fil.
// 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.");
}
}
Utföra åtkomstkontroller i Protection SDK med .NET
Det här kodfragmentet förutsätter att en ProtectionHandler har skapats för förbrukning.
// 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);
}
}
Utföra åtkomstkontroller i fil-SDK med C++
Det här kodfragmentet förutsätter att en FileHandler har skapats och pekar på en giltig fil.
// 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.");
}
}
Utföra åtkomstkontroller i skydds-SDK:t med C++
Det här kodfragmentet förutsätter att en ProtectionHandler har skapats för förbrukning.
// 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);
}
}
Nästa steg
Nu när du har en uppfattning om hur du utför åtkomstkontroller korrekt och framtvingar de rättigheter som är associerade med dessa kontroller kan du fortsätta med filhanterarkoncept för att lära dig mer om hur du tar bort skydd från filer.