Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Sql Server konağından yönetilen kodu yükleyip yürütebilmek için hem kod erişim güvenliği hem de konak kaynak koruması için konağın gereksinimlerini karşılaması gerekir. Kod erişimi güvenlik gereksinimleri üç SQL Server izin kümesinden biri tarafından belirtilir: SAFE, EXTERNAL-ACCESS veya UNSAFE. SAFE veya EXTERNAL-ACCESS izin kümeleri içinde çalışan kod, HostProtectionAttribute özelliği uygulanmış belirli tür veya üyelerden kaçınmalıdır. HostProtectionAttribute, konağın izin vermeyebileceği belirli tür veya yöntem türündeki kod yapılarını tanımlamaya yönelik bir güvenilirlik garantisi olarak, güvenlik izni kadar önemli değildir. HostProtectionAttribute kullanımı, konağın kararlılığını korumaya yardımcı olan bir programlama modeli uygular.
Uyarı
Kod Erişim Güvenliği (CAS), .NET Framework ve .NET'in tüm sürümlerinde kullanım dışı bırakılmıştır. .NET'in son sürümleri CAS ek açıklamalarını dikkate almaz ve CAS ile ilgili API'ler kullanılırsa hata üretir. Geliştiriciler, güvenlik görevlerini yerine getirmek için alternatif yöntemler aramalıdır.
Sunucu Koruma Öznitelikleri
Konak koruma öznitelikleri, konak programlama modeline uymayan türleri veya üyeleri tanımlar ve aşağıdaki artan güvenilirlik tehdidi düzeylerini temsil eder:
Aksi takdirde zararsızdır.
Sunucu tarafından yönetilen kullanıcı kodunun istikrarının bozulmasına neden olabilir.
Sunucu işleminin kendisinde istikrarsızlığa yol açabilir.
SQL Server, HostProtectionAttribute türü veya üyesi için HostProtectionResource değeri SharedState, Synchronization, MayLeakOnAbort veya ExternalProcessMgmt olarak belirtilenlerin kullanılmasına izin vermemektedir. Bu, derlemelerin paylaşım durumunu etkinleştiren, eşitleme gerçekleştiren, sonlandırma sırasında kaynak sızıntısına neden olabilen veya SQL Server işleminin bütünlüğünü etkileyen üyeleri çağırmasını önler.
İzin Verilmeyen Türler ve Üyeler
Aşağıdaki tabloda, SQL Server tarafından değerlerine izin verilmeyen türler ve üyeler tanımlanmıştır.
SQL Server İzin Kümeleri
SQL Server, kullanıcıların veritabanına dağıtılan kod için güvenilirlik gereksinimlerini belirtmesine olanak tanır. Derlemeler veritabanına yüklendiğinde, derlemenin yazarı bu derleme için üç izin kümesinden birini belirtebilir: SAFE, EXTERNAL-ACCESS veya UNSAFE.
| İzin kümesi | KASA | EXTERNAL-ACCESS | GÜVENSİZ |
|---|---|---|---|
| Kod erişimi güvenliği | Yalnızca yürüt | Dış kaynaklara + erişim yürütme | Sınırsız |
| Programlama modeli kısıtlamaları | Evet | Evet | Kısıtlama yok |
| Doğrulanabilirlik gereksinimi | Evet | Evet | Hayı |
| Yerel kodu çağırabilme | Hayı | Hayı | Evet |
SAFE, izin verilen programlama modeli açısından ilişkili kısıtlamalara sahip en güvenilir ve güvenli moddur. SAFE kodu yüksek güvenilirlik ve güvenlik özelliklerine sahiptir. SAFE derlemelerine çalıştırmak, hesaplamalar gerçekleştirmek ve yerel veritabanına erişim sağlamak için yeterli izin verilir. SAFE derlemelerinin doğrulanabilir tür güvenli olması gerekir ve yönetilmeyen kodu çağırmasına izin verilmez.
EXTERNAL-ACCESS, kodun veritabanı dışındaki kaynaklara erişmesine izin veren ancak yine de SAFE güvenilirliğine ve güvenliğine sahip olan bir ara güvenlik seçeneği sağlar.
UNSAFE, yalnızca veritabanı yöneticileri tarafından oluşturulabilen son derece güvenilir koda yöneliktir. Bu güvenilen kodun kod erişimi kısıtlaması yoktur ve yönetilmeyen (yerel) kodu çağırabilir.
SQL Server, SQL Server kataloglarında depolanan izin kümesine göre üç izin kümesinden birini veren bir konak ilkesi ayarlamak için konak düzeyi kod erişim güvenlik ilkesi katmanını kullanır. Veritabanının içinde çalışan yönetilen kod her zaman bu kod erişim izin kümelerinden birini alır.
Programlama Modeli Kısıtlamaları
SQL Server'da yönetilen kod için programlama modeli, birden çok çağrıda tutulan durum kullanımını veya birden çok kullanıcı oturumu arasında durum paylaşımını gerektirmeyen işlevler, yordamlar ve türler gerektirir. Ayrıca, daha önce açıklandığı gibi, paylaşılan durumun varlığı, ölçeklenebilirliği ve uygulamanın güvenilirliğini etkileyen kritik özel durumlara neden olabilir.
Bu noktalar göz önünde bulundurulduğunda, SQL Server statik değişkenlerin ve statik veri üyelerinin kullanılmasına izin vermemektedir. SAFE ve EXTERNAL-ACCESS derlemeleri için SQL Server, CREATE ASSEMBLY zamanında derlemenin meta verilerini inceler ve statik veri üyeleri ile değişkenlerin kullanımını bulursa bu tür derlemelerin oluşturulmasında başarısız olur.