clr tümleştirme programlama modeli kısıtlamaları
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.Yönetilen kod derleme içinde olabileceğinden zamanında gerçekte hiçbir zaman sınırına kod yolları, çalışma zamanında kontrol edilir.Derleme olmaz mıydı, üçüncü taraf derlemeler, özellikle, kaydetme yeri engellenen bu esneklik sağlar 'güvensiz' yok kod istemci ortamında çalışacak biçimde tasarlanmış, ancak hiçbir zaman içinde barındırılan clr yürütüldü.Yönetilen kod yerine getirmesi gereken gereksinimleri olup derleme olarak kaydedilen üzerinde bağımlı SAFE, EXTERNAL_ACCESS, veya UNSAFE, SAFE getirmesine olan ve aşağıda listelenmiştir.
Yönetilen kod derleme yerleştirilen kısıtlamalarına ek olarak, ayrıca verilen kodu güvenlik izinleri vardır.Ortak dil çalışma zamanı (clr) yönetilen kod için kod erişimi güvenliği (cas) adı verilen bir güvenlik modelini destekler.Bu modelde, kodunun kimliğine göre derlemeler için izinler verilir.SAFE, EXTERNAL_ACCESS, ve UNSAFE derleme sahip farklı CA izinleri.Daha fazla bilgi için bkz: clr tümleştirme kod erişimi güvenliği.
assembly denetimleri oluşturma
Zaman CREATE ASSEMBLY deyim çalıştırıldığında, aşağıdaki denetler gerçekleştirilir her güvenlik düzey.Başarısız onay herhangi CREATE ASSEMBLY başarısız olur ile bir hata iletisi.
Global (herhangi bir güvenlik düzey)
Tüm Başvurulan derlemeler bir veya daha aşağıdaki ölçütleri karşılamalıdır:
Derleme veritabanında zaten kayıtlı.
Derleme desteklenen derlemeler biridir.Daha fazla bilgi için bkz: Desteklenen.net Framework kitaplıkları.
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.
PERMİSSİON_SET
Tüm EXTERNAL_ACCESS derlemeler aşağıdaki ölçütlere uyması gerekir:
Statik alanlar bilgileri depolamak için kullanılır.Statik salt okunur alanları izin verilir.
PEVerify sınamasını geçti.PEVerify araç (peverify.exe), emniyet gereksinimleri MSIL kodu ve ilişkili meta veriler uyan hangi denetimleri yazın sunulan.net Framework sdk.
Örneğin ile eşitleme SynchronizationAttribute class, kullanılmayan.
Sınıfları sonlandırıcıyı yöntemleri kullanılır.
İçinde aşağıdaki özel öznitelikler izin verilmeyen EXTERNAL_ACCESS derlemeler:
System.ContextStaticAttribute
System.STAThreadAttribute
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
System.MTAThreadAttribute
System.ThreadStaticAttribute
GÜVENLİ
- Tüm EXTERNAL_ACCESS derleme koşullar denetlenir.
Çalışma zamanı denetimi
Çalışma zamanında kod derleme için aşağıdaki koşulları kontrol edilir.Bu durumlardan herhangi biri bulunursa, yönetilen kod çalıştırmak için izin verilmez ve bir özel durum.
GÜVENLİ OLMAYAN
Derleme yükleme — açıkça arayarak ya da System.Reflection.Assembly.Load() yöntem bir bayt dizisi veya örtülü olarak kullanılmasıyla Reflection.Emit ad alanı — verilmez.
PERMİSSİON_SET
Tüm UNSAFE koşullar denetlenir.
Tüm türleri ve yöntemleri ile desteklenen derlemeler listesinde aşağıdaki ana bilgisayar Koruması (hpa) öznitelik değerlerini işaretiyle izin verilmedi.
SelfAffectingProcessMgmt
SelfAffectingThreading
Eşitleme
SharedState
ExternalProcessMgmt
ExternalThreading
SecurityInfrastructure
MayLeakOnAbort
KULLANICI ARABİRİMİ
HPAs ve izin verilmeyen türleri ve Üyeler'de desteklenen derlemeler listesi hakkında daha fazla bilgi için bkz: Ana bilgisayar koruması öznitelikleri ve clr tümleştirme programlama.
GÜVENLİ
Tüm EXTERNAL_ACCESS koşullar denetlenir.