Ograniczenia Model programowania integracji CLR
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.Kod zarządzany jest sprawdzana w czasie wykonywania ponieważ w wirtualny plik dziennika może być ścieżki kodu, które nigdy faktycznie może zostać osiągnięta w czasie wykonywania.Zapewnia elastyczność do rejestrowania zestawów stron trzecich, szczególnie w tak, aby wirtualny plik dziennika byłoby gdy blokowane jest "niebezpieczny" kod przeznaczony do pracy w środowisku klient, ale nigdy nie wykonywane w obsługiwanych CLR.Wymagania, które muszą spełniać kod zarządzany zależą od tego, czy wirtualny plik dziennika jest zarejestrowany jako SAFE, EXTERNAL_ACCESS, lub UNSAFE, SAFE jest najsurowsze 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ą przyznawane.Common language runtime (CLR) obsługuje model zabezpieczeń o nazwie zabezpieczenia dostępu kodu (CAS) kod zarządzany.W tym modelu uprawnienia są przyznawane na podstawie tożsamości kod zespołów.SAFE, EXTERNAL_ACCESS, i UNSAFE zestawy mają różne uprawnienia urzędów certyfikacji.Aby uzyskać więcej informacji, zobacz Zabezpieczenia dostępu do kodu integracji CLR.
Tworzenie zestawu kontroli
Gdy CREATE ASSEMBLY instrukcja, następujące kontrole są przeprowadzane dla każdego poziom zabezpieczeń.Żadnego wyboru nie powiedzie się, jeżeli CREATE ASSEMBLY nie powiedzie się komunikat o błędzie.
Szablon globalny (dowolny poziom zabezpieczeń)
Wszystkie zespoły odwołanie musi spełniać jeden lub więcej z następujących kryteriów:
wirtualny plik dziennika jest już zarejestrowany w bazie danych.
wirtualny plik dziennika jest jednym z obsługiwanych zestawów.Aby uzyskać więcej informacji, zobacz Obsługiwane.NET Framework bibliotek.
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 zespoły muszą spełniać następujące kryteria:
Statyczne pola nie są używane do przechowywania informacji.Dozwolone są tylko do odczytu pola statycznego.
PEVerify test jest przekazywana.Wyposażone w kontroli spełniające instrukcje MSIL kodu i metadane skojarzone wpisz wymogi bezpieczeństwa, narzędzie PEVerify (peverify.exe).NET Framework SDK.
Synchronizacja, na przykład z SynchronizationAttribute klasy, nie jest używany.
Metody finalizatorów nie są używane.
Następujące atrybuty niestandardowe są niedozwolone w EXTERNAL_ACCESS zespołów:
System.ContextStaticAttribute
System.MTAThreadAttribute
System.Runtime.CompilerServices.MethodImplAttribute
System.Runtime.CompilerServices.CompilationRelaxationsAttribute
System.Runtime.Remoting.contexts.ContextAttribute
System.Runtime.Remoting.contexts.SynchronizationAttribute
System.Runtime.InteropServices.DllImportAttribute
System.Security.permissions.CodeAccessSecurityAttribute
System.Security.SuppressUnmanagedCodeSecurityAttribute
System.Security.UnverifiableCodeAttribute
Można zastosować elementów system.STAThreadAttribute
System.ThreadStaticAttribute
BEZPIECZNE
- Wszystkie EXTERNAL_ACCESS wirtualny plik dziennika warunków są sprawdzane.
Kontrole 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 być uruchomiony i będzie wyjątek.
NIEBEZPIECZNE
Ładowanie wirtualny plik dziennika — albo jawnie przez wywołanie System.Reflection.Assembly.Load() metoda z tablicy bajtowej lub niejawnie korzystając z Reflection.Emit nazw — nie jest dozwolona.
EXTERNAL_ACCESS
Wszystkie UNSAFE warunki są sprawdzane.
Wszystkie typy i metod o następujące wartości atrybut (HPA) ochrona hosta na liście obsługiwanych zestawów są niedozwolone.
SelfAffectingProcessMgmt
SelfAffectingThreading
Synchronizacja
SharedState
ExternalProcessMgmt
ExternalThreading
SecurityInfrastructure
MayLeakOnAbort
INTERFEJS UŻYTKOWNIKA
Aby uzyskać więcej informacji o HPAs i Lista niedozwolonych typów i członkowie zespołów obsługiwane, zobacz Atrybuty ochrony hosta i integracji CLR programowania.
BEZPIECZNE
Wszystkie EXTERNAL_ACCESS warunki są sprawdzane.