Zezwalanie na częściowo zaufane obiekty wywołujące
Udostępnianie biblioteki kodu jest typowym scenariuszem dzięki integracja runtime (CLR) języka wspólnego, gdy wirtualny plik dziennika zawierający typ zdefiniowany przez użytkownika, procedura składowana, funkcja zdefiniowanej przez użytkownika, użytkownika wartość zagregowana, wyzwalacza lub klasa utility często uzyskują innego wirtualny plik dziennika lub aplikacji.Biblioteki kodu, które mają być współużytkowane przez wiele aplikacji musi być podpisany przy użyciu silnej nazwy.
Tylko aplikacje, które są w pełni zaufane w czasie wykonywania zabezpieczenia dostępu kodu systemu mogą uzyskać dostęp do wirtualny plik dziennika udostępnionego kod zarządzany, który nie jest wyraźnie oznaczone System.Security.AllowPartiallyTrustedCallers atrybut.Częściowo zaufanych wirtualny plik dziennikaów (taki, który jest zarejestrowany w SQL Server z SAFE lub EXTERNAL_ACCESS uprawnień wirtualny plik dziennika) podpisany wirtualny plik dziennika próba dostępu silnej nazwy bez powoduje, że ten atrybut System.Security.SecurityException Aby zostać wygenerowany.Zostanie wyświetlony komunikat o błędzie jest podobny do następującego:
Msg 6522, Level 16, State 1, Procedure usp_RSTest, Line 0
A .NET Framework error occurred during execution of user defined
routine or aggregate 'usp_RSTest': System.Security.SecurityException: That assembly does not allow partially trusted callers.
System.Security.SecurityException: at
System.Security.CodeAccessSecurityEngine.ThrowSecurityException(
Assembly asm, PermissionSet granted,PermissionSet refused,
RuntimeMethodHandle rmh, SecurityAction action, Object demand,
IPermission permThatFailed) at
Microsoft.Samples.SqlServer.TestResultSet.Test()
Zaleca się, że wszystkie zespoły zarejestrowane w SQL Server, z wyjątkiem tych zestawów dodane do Global Assembly Cache, oznaczone AllowPartiallyTrustedCallers atrybut tak zestawów ładowanych przez SQL Server sobie dostęp.Zestawy, które mają być dodawane do Global Assembly Cache dokładnie należałoby dla bezpieczeństwa przed dodaniem AllowPartiallyTrustedCallers atrybutu jako zgromadzenie będzie wówczas dostępna częściowo zaufanych wywołań z nieoczekiwany kontekstach.Zespół powinien nie być w pełni zaufane (zarejestrowana w UNSAFE uprawnień zestaw w SQL Server).
Aby uzyskać więcej informacji zobacz "Korzystanie z bibliotek z częściowo zaufany kod" sekcja w.NET Framework SDK.
Przykład
Załóżmy, że istnieje klasa utility, które mogłyby być użyteczne dla wielu aplikacji integracja CLR po stronie serwera.Na przykład może to być klasy, która reprezentuje wyniki kwerendy wywoływania.Aby włączyć udostępnianie tego składnika, to klasa utility znajduje się oddzielnie w wirtualny plik dziennika.Następnie, wirtualny plik dziennika odwołuje się z różnych zespołów, zawierających obiekty integracja CLR.Ponieważ klasy to narzędzie jest używane w wielu aplikacjach innego serwera, jest dokładnie sprawdzana i rozwiązane problemy z zabezpieczeniami.AllowPartiallyTrustedCallers Następnie zastosować atrybut do wirtualny plik dziennika zawiera klasa utility tak CLR integracja obiekty zawarte w zestawy oznaczone SAFE lub EXTERNAL_ACCESS zestawy uprawnień można użyć narzędzia klasy i metody, nawet jeśli są one w oddzielnych zestawów.Na przykład AllowPartiallyTrustedCallers jest używany atrybut, zobacz wynik zestaw przykładowy dostępne w witrynie CodePlex; zobacz SQL ServerPrzykładowe aparat bazy danych Aby uzyskać więcej informacji...