clr tümleştirme kod erişimi güvenliği
Ortak dil çalışma zamanı (clr) kod erişimi güvenliği için yönetilen kod adı verilen bir güvenlik modelini destekler.Bu modelde, kodunun kimliğine göre derlemeler için izinler verilir.Daha fazla bilgi için bkz: "kod erişimi güvenliği" Bölüm'de..NET Framework Yazılım Geliştirme Seti.
Derlemeler için verilen izinleri belirler güvenlik ilkesi, üç farklı yerlerde tanımlanır:
Makine ilkesi: Bu tüm için etkin ilke, yönetilen kod makine üzerinde çalışan SQL Server yüklenir.
Kullanıcı İlkesi: Etkin bir işlem tarafından barındırılan yönetilen kod için ilke budur.İçin SQL Server, kullanıcı ilkesi, Windows hesabına belirli SQL Server hizmet olan çalışıyor.
Ana bilgisayar ilkesi: Bu ilke, küme clr ana bilgisayar tarafından yukarı (Bu durumda, SQL Server) olan etkin yönetilen kodun çalışan o ana.
clr tarafından desteklenen kod erişimi güvenliği mekanizması, çalışma zamanı tam güvenilir ve kısmen güvenilen kod barındırabilir varsayımına dayanır.The resources that are protected by CLR code access security are typically wrapped by managed application programming interfaces that requirethe corresponding permission before allowing access to the resource.The demandfor the permission is satisfied only if all the callers (at the assembly level) in the call stack have the corresponding resource permission.
Dizi kod erişimi güvenliği için verilen izinleri yönetilen kod içinde çalışırken SQL Server olan kesişimi izinler küme verilen yukarıdaki üç ilke düzeyi.Olsa bile, SQL Server de yüklenen derleme izin küme verir SQL Server, ileride kullanıcı kodu verilen izinler küme kısıtlanabilir daha fazla kullanıcı ve makine -düzey ilkeleri.
sql Server ana ilke düzeyinde izin kümeleri
küme Derlemeler tarafından verilen kod erişimi güvenlik izinleri, SQL Server ana ilke düzey izni tarafından belirlenen küme derleme. oluştururken belirttiğinizÜç izin kümeleri şunlardır: SAFE, EXTERNAL_ACCESS ve UNSAFE (kullanılarak belirtilen PERMISSION_SET seçeneği DERLEME (Transact-sql) oluştur).
SQL Server sağlayan ana bilgisayar -düzey Güvenlik İlkesi düzey ; ev sahipliği yaparken clr için Bu ilke, her zaman etkin olan iki ilke düzey altındaki ek ilke düzeyidir.Bu ilke tarafından oluşturulan her uygulama etki alanı için küme SQL Server.Bu ilke geçerli olacak varsayılan uygulama etki alanı için tasarlanmıştır, SQL Server oluşturur bir örnek clr.
The SQL Server host-level policy is a combination of SQL Server fixed* *policy for system assemblies and user-specified policy for user assemblies.
clr birleştirmeler için sabit ilke ve SQL Server sistem birleştirmelerine bunları verir tam güven.
Kullanıcı tarafından belirtilen kısmı SQL Server ana İlkesi derleme sahibi her derleme üç izni demetleri birini belirterek esasAşağıda listelenen güvenlik izinleri hakkında daha fazla bilgi için bkz.net Framework sdk.
GÜVENLİ
Only internal computation and local data access are allowed.SAFE is the most restrictive permission set.Bir derleme tarafından çalıştırılan kod SAFE izinleri dosyaları, ağ, ortam değişkenleri veya gibi dış sistem kaynaklarına erişemiyorkayıt defteri.
SAFE derleme, aşağıdaki izinler ve değerlere sahip:
İzin |
Değer / açıklama |
---|---|
SecurityPermission |
Execution: Yönetilen kod yürütmek izni. |
SqlClientPermission |
Context connection = true, context connection = yes: Yalnızca içerik-bağlantısı kullanılabilir ve bağlantı dize değeri, yalnızca belirtebilirsiniz "içerik bağlantısı = true" ya da "içerik bağlantısı = yes". AllowBlankPassword = false: Boş parolalara izin verilmiyor. |
PERMİSSİON_SET
Permission_set derleme olarak aynı izinlere sahip SAFE dosyaları, ağları, ortam değişkenleri ve gibi dış sistem kaynaklarına erişmek için ek yeteneği ile birleştirmelerikayıt defteri.
EXTERNAL_ACCESS derleme, aşağıdaki izinler ve değerleri de sahip:
İzin |
Değer / açıklama |
---|---|
DistributedTransactionPermission |
Unrestricted: Dağıtılmış hareketlere izin verilir. |
DNSPermission |
Unrestricted: Etki alanı adı sunucuları bilgi istemek için izni. |
EnvironmentPermission |
Unrestricted: Sistem ve kullanıcı ortam değişkenleri için tam erişim verilir. |
EventLogPermission |
Administer:Aşağıdaki eylemleri izin verilir: Olay kaynak oluşturma, varolan günlüklerin okuma, Olay kaynakları veya günlükleri silme, girişlere yanıt, bir olay günlüğünü temizleme, olaylarını dinleme ve erişen bir koleksiyon tüm olay günlüğü. |
FileIOPermission |
Unrestricted: Dosya ve klasörler için tam erişim verilir. |
KeyContainerPermission |
Unrestricted: Anahtar kapsayıcılarını tam erişime izin verilir. |
NetworkInformationPermission |
Access: Ping işlemi izin verilir. |
RegistryPermission |
Allows read rights to HKEY_CLASSES_ROOT, HKEY_LOCAL_MACHINE, HKEY_CURRENT_USER, HKEY_CURRENT_CONFIG, and HKEY_USERS. |
SecurityPermission |
Assertion:Bu kod tüm arayanlar Başlatmalara operasyon için izniniz olduğunu onaylama olanağı. ControlPrincipal: Asıl nesne işleme yeteneği. Execution: Yönetilen kod yürütmek izni. SerializationFormatter:Seri hale getirme hizmetleri sağlamak için yeteneği. |
SmtpPermission |
Access: smtp ana bilgisayar bağlantı noktası 25 için giden bağlantılara izin verilir. |
SocketPermission |
Connect: Giden bağlantılarda (tüm bağlantı noktaları, tüm iletişim kuralları) Aktarım adresi verilir. |
SqlClientPermission |
Unrestricted: Veri kaynağı için tam erişim verilir. |
StorePermission |
Unrestricted: x.509 sertifika depoları için tam erişim verilir. |
WebPermission |
Connect: Web kaynaklarına giden bağlantılara izin verilir. |
GÜVENLİ OLMAYAN
Güvenli olmayan kaynaklara, hem içindeki hem de dışındaki derlemeler sınırsız erişim sağlar SQL Server.Kod içinden yürütülen bir UNSAFE derleme da yönetilmeyen kod çağırabilir.
UNSAFEderlemeler anda FullTrust.
Güvenlik Notu |
---|
SAFE is the recommended permission setting for assemblies that perform computation and data management tasks without accessing resources outside SQL Server.EXTERNAL_ACCESS is recommended for assemblies that access resources outside SQL Server.EXTERNAL_ACCESS assemblies by default execute as the SQL Server service account.Olabilir EXTERNAL_ACCESS kod için açıkça taklit arayanın Windows kimlik doğrulaması güvenlik bağlamı.Varsayılan olarak yürütmek için olduğundan SQL Server hizmet hesabı, execute izni EXTERNAL_ACCESS sadece verilmelidir güvenilir olarak çalıştırmak için oturum açma içinhizmet hesabı. Bir güvenlik perspektif, EXTERNAL_ACCESS ve UNSAFE derlemeler birbirinin.Ancak, EXTERNAL_ACCESS birleştirmelerini sağlamak çeşitli güvenilirliği ve sağlamlığı korumaları olan değil, UNSAFE derlemeler.Belirtme UNSAFE karşı yasadışı işlemlerini gerçekleştirmek için derleme kod verir SQL Server alan, işleyen ve bu yüzden potansiyel tehlikeye sağlamlık ve ölçeklenebilirliğini SQL Server.İçinde clr birleştirmeler oluşturma hakkında daha fazla bilgi için SQL Server, bkz: clr tümleştirme Assemblies yönetme. |
Dış kaynaklara erişme
kullanıcı tanımlı tür (udt), saklı yordam veya başka tür bir yapı derleme kayıtlıysa SAFE izin küme, daha sonra yapı içinde yönetilen kod çalıştırma. dış kaynaklara erişemiyorAncak, EXTERNAL_ACCESS veya UNSAFE izin kümeleri belirtilir ve yönetilen kod dış kaynaklara erişmeyi denediği SQL Server aşağıdaki kurallar geçerlidir:
Eğer |
Sonra |
---|---|
Yürütme içeriği için karşılık gelen bir SQL Server oturum açma. |
Dış kaynaklara erişim girişimleri reddedilir ve güvenlik özel durumu oluşturuldu. |
Yürütme içeriği Windows oturumu açma karşılık gelir ve özgün arayan yürütme içeriği olur. |
Dış kaynak güvenlik bağlamında erişilir SQL Server hizmet hesabı. |
Arayan özgün arayan değildir. |
Erişim reddedildi ve güvenlik özel durumu oluşturuldu. |
Yürütme içeriği Windows oturumu açma karşılık gelir ve özgün arayan yürütme içeriği olan ve çağıran özellikleri. |
Erişim hizmet hesabı arayan güvenlik bağlamını kullanır. |
İzin kümesi özeti
Aşağıdaki grafik kısıtlamaları ve verilen izinler özetler SAFE, EXTERNAL_ACCESS, ve UNSAFE izin kümeleri.
SAFE |
EXTERNAL_ACCESS |
UNSAFE |
|
Code Access Security Permissions |
Yalnızca yürütme |
Yürütme + dış kaynaklara erişim |
(p/Invoke de dahil olmak üzere) sınırsız |
Programming model restrictions |
Evet |
Evet |
Kısıtlama yok |
Verifiability requirement |
Evet |
Evet |
Hayır |
Local data access |
Evet |
Evet |
Evet |
Ability to call native code |
Hayır |
Hayır |
Evet |