Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Zestaw MICROSOFT Information Protection SDK obsługuje dwa podstawowe typy uprawnień opartych na etykietach: oparte na szablonach i zdefiniowane przez użytkownika.
Uprawnienia oparte na szablonach: te prawa są definiowane przez administratora etykiet w Centrum zabezpieczeń i zgodności. Te etykiety są zarządzane centralnie, a zmiany w konfiguracji będą miały wpływ na użytkowników, którzy mają już 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 przy następnej próbie pobrania licencji.
Uprawnienia zdefiniowane przez użytkownika: te prawa są definiowane w momencie etykietowania przez użytkownika końcowego lub aplikację. Uprawnienia są przekazywane do zestawu MIP SDK w postaci kolekcji mapowań użytkowników na role lub użytkowników na prawa. Te prawa są zapisywane w licencji publikowania chronionego dokumentu i, w przeciwieństwie do uprawnień opartych na szablonach, nie mogą być centralnie zarządzane ani modyfikowane po udostępnieniu bez bezpośredniego dostępu i modyfikacji dokumentu.
Użytkownicy, prawa i role
Ponieważ oczekuje się, że prawa zostaną zdefiniowane przez użytkownika w momencie etykietowania, aplikacja musi podać interfejs, aby umożliwić użytkownikowi lub usłudze podanie danych wejściowych na adresach e-mail i prawach lub rolach, które użytkownik będzie miał. Ta konfiguracja jest realizowana przez przekazanie kolekcji UserRoles
obiektów lub UserRights
, które określają, kto powinien mieć jaki poziom dostępu 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
};
Wynikiem jest to, że będziesz mieć kolekcję określającą List<UserRights>
, że zarówno Alice, jak i Bob mają widok i edycję w chronionym pliku. Aby dodać więcej użytkowników z innym zestawem uprawnień, powtórz ten proces, aby utworzyć drugi UserRights
obiekt, przekazując nowych użytkowników i uprawnienia, a następnie dodaj do List<UserRights>
kolekcji, wywołując polecenie userRightsList.Add(userRights2)
.
Ten wzorzec jest również spełniony UserRoles
i można go zaimplementować, zastępując prawa rolami i tworząc List<UserRoles>
kolekcję.
Ochrona domeny
Zastosowanie uprawnień zdefiniowanych przez użytkownika dla domeny wymaga użycia dobrze znanego prefiksu poczty i domeny docelowej jako adresu e-mail. Ten adres wygląda następująco: AllStaff-7184AB3F-CCD1-46F3-8233-3E09E9CF0E66@contoso.com
.
W aplikacji użytkownicy powinni mieć możliwość określenia domeny, takiej jak contoso.com lub fabrikam.com. Po utworzeniu deskryptora ochrony aplikacja będzie musiała poprzedzać sufiks domeny AllStaff-7184AB3F-CCD1-46F3-8233-3E09E9CF0E66@ .
W poniższym przykładzie przyjęto założenie, że użytkownik określił alice@contoso.com i wszystkie Fabrikam.com jako prawidłowych adresatów.
// Create a List<string> of the first set of permissions.
List<string> users = new List<string>()
{
"alice@contoso.com",
"AllStaff-7184AB3F-CCD1-46F3-8233-3E09E9CF0E66@fabrikam.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
};
Stosowanie ochrony
Ustawienie ochrony można osiągnąć przez utworzenie obiektu ProtectionDescriptor
z obiektu List<UserRights>
lub List<UserRoles>
, a następnie przekazanie go do FileHandler.SetProtection()
elementu . Na koniec zatwierdź zmianę w pliku, aby zapisać nowy plik.
Kiedy należy zastosować ochronę do plików
Po ustawieniu etykiety za pomocą FileHandler.SetLabel()
zestawu MIP SDK wszystko, co musi podjąć działania i zastosować wszelkie zabezpieczenia. Gdy etykieta jest skonfigurowana dla uprawnień zdefiniowanych przez użytkownika (UDP), aplikacja nie ma możliwości z wyprzedzeniem wiedzieć, że etykieta jest etykietą UDP. Zestaw MIP SDK przedstawia te informacje, zgłaszając wyjątek typu Microsoft.InformationProtection.Exceptions.AdhocProtectionRequiredException
. Kod FileHandler
powinien przechwycić ten wyjątek, a następnie wyzwolić interfejs użytkownika lub usługi, aby zdefiniować uprawnienia niestandardowe. Po zakończeniu będzie można ustawić ochronę. W poniższym przykładzie przedstawiono wzorzec kompleksowego, ale przyjęto założenie, że funkcja została już zaimplementowana w celu skompilowania 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
Ten proces może również służyć do ustawiania tylko ochrony, ustawiając ochronę i pomijając SetLabel()
krok. Jeśli aplikacja nie musi stosować etykiety, procedura obsługi wyjątków nie jest wymagana, a ochronę można ustawić, postępując zgodnie ze ProtectionDescriptor
wzorcem - .>CommitAsync()
>SetProtection()