Udostępnij za pośrednictwem


Ograniczenia dotyczące środowiska CLR model programowania integracja

When you are building a managed stored procedure or other managed database object, there are certain code checks performed by SQL Server that need to be considered.SQL Server performs checks on the managed code assembly when it is first registered in the database, using the CREATE ASSEMBLY statement, and also at runtime.Kodu zarządzanego jest również sprawdzana w czasie wykonywania, ponieważ w wirtualny plik dziennika może być ścieżki kodu, które faktycznie nigdy nie może zostać osiągnięta w czasie wykonywania.Zapewnia to elastyczność do rejestrowania zestawów innej firmy, szczególnie w tak, aby nie można zablokować wirtualny plik dziennika w przypadku, gdy istnieje "niebezpieczny" kod przeznaczony do pracy w środowisku klient, ale nigdy nie może być wykonywane w obsługiwanym środowiska CLR.Wymagania, które musi spełnić kod zarządzany zależą od tego, czy wirtualny plik dziennika został zarejestrowany jako SAFE, EXTERNAL_ACCESS, lub UNSAFE, SAFE Będąc najściślejszej i są wymienione poniżej.

Oprócz ograniczeń na zestawów zawierających kod zarządzany są również kod uprawnienia zabezpieczeń, które są przypisywane.Aparat plików wykonywalnych języka wspólnego (CLR) obsługuje model zabezpieczeń, o nazwie zabezpieczenia dostępu kodu (CAS) dla kod zarządzany.W tym modelu uprawnienia są przyznawane do zespołów na podstawie tożsamości kod.SAFE, EXTERNAL_ACCESS, a UNSAFE zestawy uprawnień różnych CAS. Aby uzyskać więcej informacji zobaczZabezpieczenia programu Access CLR integracja kodu.

CREATE testy MONTAŻOWYCH

Gdy CREATE ASSEMBLY Instrukcja jest uruchamiany, następujące testy są wykonywane dla każdego poziom zabezpieczeń. Jeśli dowolne sprawdzenie nie powiedzie się, CREATE ASSEMBLY nie będzie się komunikat o błędzie.

Szablon globalny (każdy poziom zabezpieczeń)

Wszystkie odwołania zestawów spełniają co najmniej jedną z następujących kryteriów:

  • wirtualny plik dziennika jest już zarejestrowana w bazie danych.

  • wirtualny plik dziennika jest jednym z obsługiwanych zestawów.Aby uzyskać więcej informacji zobaczObsługiwany system .NET Framework biblioteki.

  • You are using CREATE ASSEMBLY FROM<location>, and all the referenced assemblies and their dependencies are available in <location>.

  • You are using CREATE ASSEMBLY FROM<bytes …>, and all the references are specified via space separated bytes.

EXTERNAL_ACCESS

Wszystkie EXTERNAL_ACCESS zestawy muszą spełniać następujące kryteria:

  • Pola statyczne nie są używane do przechowywania informacji.Dozwolone są tylko do odczytu pola statycznego.

  • Test PEVerify jest przekazywany.Narzędzie PEVerify (peverify.exe), które kontroli, które spełniają MSIL kodu i metadane skojarzone wpisz wymagania w zakresie bezpieczeństwa, dołączony do systemu .NET Framework SDK.

  • Synchronizacja, na przykład z SynchronizationAttribute klasy, nie jest używany.

  • Nie używane są metody finalizatora.

Następujące atrybuty niestandardowe są niedozwolone w EXTERNAL_ACCESS zestawy:

  • System.ContextStaticAttribute

  • System.MTAThreadAttribute

  • System.Runtime.CompilerServices.MethodImplAttribute

  • System.Runtime.CompilerServices.CompilationRelaxationsAttribute

  • System.Runtime.Remoting.Contexts.ContextAttribute

  • System.Runtime.Remoting.Contexts.SynchronizationAttribute

  • Elementu System.Runtime.InteropServices.DllImportAttribute

  • System.Security.Permissions.CodeAccessSecurityAttribute

  • System.Security.SuppressUnmanagedCodeSecurityAttribute

  • System.Security.UnverifiableCodeAttribute

  • System.STAThreadAttribute

  • System.ThreadStaticAttribute

BEZPIECZNE

  • Wszystkie EXTERNAL_ACCESS sprawdzane są wirtualny plik dziennika warunków.

Testy Runtime

W czasie wykonywania kodu wirtualny plik dziennika jest sprawdzana pod kątem następujących warunków.Jeżeli warunki te zostaną znalezione, kod zarządzany nie może uruchomić i będzie się wyjątek.

NIEBEZPIECZNE

Ładowanie wirtualny plik dziennika — albo bezpośrednio przez wywołanie System.Reflection.Assembly.Load() Metoda z tablicy bajtów lub niejawnie poprzez użycie Reflection.Emit obszar nazw — nie jest dozwolona.

EXTERNAL_ACCESS

Wszystkie UNSAFE warunki są sprawdzane.

Wszystkie typy i metody odnotowany z następujących wartości atrybut (HPA) ochrony hosta na liście obsługiwanych zestawów są niedozwolone.

  • SelfAffectingProcessMgmt

  • SelfAffectingThreading

  • Synchronizacja

  • SharedState

  • ExternalProcessMgmt

  • ExternalThreading

  • SecurityInfrastructure

  • MayLeakOnAbort

  • INTERFEJSU UŻYTKOWNIKA

Aby uzyskać więcej informacji na temat HPAs i listę typów niedozwolone i elementy członkowskie w zestawach obsługiwane zobacz Atrybuty ochrony hosta i integracja CLR Programowanie.

BEZPIECZNE

Wszystkie EXTERNAL_ACCESS warunki są sprawdzane.