Udostępnij za pośrednictwem


Microsoft Information Protection SDK — uprawnienia zdefiniowane przez użytkownika

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

Następne kroki