Microsoft Information Protection SDK — uprawnienia zdefiniowane przez użytkownika
Zestaw Microsoft Information Protection SDK obsługuje dwa podstawowe typy uprawnień opartych na etykietach: uprawnienia oparte na szablonie i zdefiniowane przez użytkownika.
Uprawnienia oparte na szablonach: Te prawa są definiowane przez administratora etykiet w Centrum zabezpieczeń i zgodności. Tymi etykietami zarządza się centralnie, a zmiany w konfiguracji mają wpływ na użytkowników, którzy już posiadają kopie plików. Jeśli na przykład administrator usunie użytkownika z listy autoryzowanych użytkowników, ten użytkownik nie będzie już miał dostępu do chronionych danych, gdy następnym razem podejmie próbę uzyskania zdalnego dostępu do licencji.
Uprawnienia zdefiniowane przez użytkownika: te prawa są definiowane w momencie oznaczania etykiet przez użytkownika końcowego lub aplikację. Uprawnienia są przekazywane do zestawu MIP SDK w postaci zbioru mapowań między użytkownikami lub między użytkownikami na prawa. Te prawa są zapisywane w licencji publikowania chronionego dokumentu i , w przeciwieństwie do uprawnień opartych na szablonach, nie można ich centralnie zarządzać ani modyfikować po udostępnieniu bez bezpośredniego dostępu i modyfikowania dokumentu.
Użytkownicy, uprawnienia i role
Ponieważ oczekuje się, że w momencie oznaczania uprawnień użytkownik będzie określał te prawa, aplikacja musi udostępnić interfejs, aby umożliwić użytkownikowi lub usłudze wprowadzanie danych na temat adresów e-mail i praw lub ról, które będzie miał ten użytkownik. Tę konfigurację uzyskuje się, przechodząc do kolekcji lub obiektów, które wyraźnie określają, kto powinien mieć jaki poziom dostępu UserRolesUserRights do dokumentów.
// Create a List<string> of the first set of permissions.
List<string> users = new List<string>()
{
"alice@contoso.com",
"bob@contoso.com"
};
// Create a List<string> of the Rights the above users should have.
List<string> rights = new List<string>()
{
Rights.View,
Rights.Edit
};
// Create a UserRights object containing the defined users and rights.
UserRights userRights = new UserRights(users, rights);
// Add them to a new List<UserRights>
List<UserRights> userRightsList = new List<UserRights>()
{
userRights
};
W efekcie otrzymasz kolekcję określającą, że zarówno Dominika, jak i Tomasz mają dostęp do widoku i edytowania List<UserRights> chronionego pliku. Aby dodać więcej użytkowników z innym zestawem uprawnień, należy powtórzyć proces tworzenia drugiego obiektu, przechodząc do nowych użytkowników i uprawnień, a następnie dodać do kolekcji, List<UserRights> wywołując userRightsList.Add(userRights2) .
Ten wzorzec dotyczy również i można go wdrożyć, po prostu zastępując prawa rolami UserRoles i tworząc UserRoles kolekcję.
Stosowanie ochrony
Ochronę ustawień można jednak uzyskać, tworząc obiekt lub, a ProtectionDescriptorList<UserRights> następnie przechodząc do List<UserRoles>FileHandler.SetProtection() . Na koniec zat zatwierdzeniu zmiany w pliku w celu napisania nowego pliku.
Kiedy zastosować ochronę do plików
W przypadku ustawienia etykiety za pomocą zestawu MIP SDK wystarczy podjąć działanie i FileHandler.SetLabel() zastosować dowolną ochronę. Gdy etykieta jest skonfigurowana na potrzeby uprawnień zdefiniowanych przez użytkownika (UDP), Twoja aplikacja nie może wcześniej wiedzieć, że etykieta jest etykietą UDP. Zestaw SDK miP podsłał te informacje, zgłaszając wyjątek typu Microsoft.InformationProtection.Exceptions.AdhocProtectionRequiredException . Kod FileHandler powinien wychwytować ten wyjątek, a następnie wyzwolić interfejs użytkownika lub usługi w celu zdefiniowania uprawnień niestandardowych. Po zakończeniu będzie można ustawić ochronę. W poniższym przykładzie pokazano wzorzec end-to-end, ale założono, że wdrożono już funkcję do tworzenia List<UserRights> obiektu.
try
{
// Attempt to set the label. If it's a UDP label, this will throw.
handler.SetLabel(engine.GetLabelById(options.LabelId), labelingOptions, new ProtectionSettings());
}
catch (Microsoft.InformationProtection.Exceptions.AdhocProtectionRequiredException)
{
// Assumes you've create a function that returns the List<UserRights> as previously detailed.
List<UserRights> userRightsList = GetUserRights();
// Create a ProtectionDescriptor using the set of UserRights.
ProtectionDescriptor protectionDescriptor = new ProtectionDescriptor(userRightsList);
// Apply protection to the file using the new ProtectionDescriptor.
handler.SetProtection(protectionDescriptor, new ProtectionSettings());
// Set the label. This will now succeed as protection has been defined.
handler.SetLabel(engine.GetLabelById(options.LabelId), labelingOptions, new ProtectionSettings());
// Commit the change.
var result = Task.Run(async () => await handler.CommitAsync("myFileOutput.xlsx")).Result;
}
Ochrona niestandardowa
Za pomocą tego procesu można również ustawić tylko ochronę, ustawiając ochronę i pomijając SetLabel() krok. Jeśli aplikacja nie musi stosować etykiety, program obsługi wyjątków nie jest wymagany, a ochronę można ustawić za pomocą wzorca ProtectionDescriptor>SetProtection() - >CommitAsync() .