SQL Server Programlama ve Ana Bilgisayar Koruması Öznitelikleri
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ümelerinde yürütülen kod, özniteliği uygulanmış olan belirli türlerden veya üyelerden HostProtectionAttribute kaçınmalıdır. HostProtectionAttribute, konağın izin verebileceği tür veya yöntemler gibi belirli kod yapılarını tanımlaması için güvenilirlik garantisi kadar bir güvenlik izni değildir. kullanımı HostProtectionAttribute , konağın kararlılığını korumaya yardımcı olan bir programlama modeli uygular.
Not
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.
Konak 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, ExternalProcessMgmtSynchronizationMayLeakOnAbortveya değerini belirten bir HostProtectionAttribute türün veya üyenin kullanılmasına SharedStateizin vermemektedir.HostProtectionResource 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, değerleriNE SQL Server tarafından izin verilmeyen türler ve üyeler HostProtectionResource 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 | GÜVENLİ | EXTERNAL-ACCESS | GÜVENLİ OLMAYAN |
---|---|---|---|
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ı | Yes | Yes | Kısıtlama yok |
Doğrulanabilirlik gereksinimi | Yes | Evet | Hayır |
Yerel kodu çağırabilme | Hayır | 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.
Ayrıca bkz.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin