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.
Applies to:SQL Server
Ortak dil çalışma zamanı (CLR), yönetilen kod için kod erişimi güvenliği adlı bir güvenlik modelini destekler. Bu modelde, kod kimliğine göre derlemelere izinler verilir. Daha fazla bilgi için bkz. kod erişim güvenliği
Derlemelere verilen izinleri belirleyen güvenlik ilkesi üç farklı yerde tanımlanır:
Machine policy: This policy is in effect for all managed code running in the machine on which SQL Server is installed.
User policy: This policy is in effect for managed code hosted by a process. SQL Server için kullanıcı ilkesi, SQL Server hizmetinin çalıştığı Windows hesabına özgüdür.
Host policy: This policy is set up by the host of the CLR (in this case, SQL Server) that is in effect for managed code running in that host.
CLR tarafından desteklenen kod erişimi güvenlik mekanizması, çalışma zamanının hem tam olarak güvenilen hem de kısmen güvenilen kodu barındırabileceği varsayımını temel alır. CLR kod erişim güvenliği tarafından korunan kaynaklar genellikle kaynağa erişime izin vermeden önce ilgili izni gerektiren yönetilen uygulama programlama arabirimleri tarafından sarmalanmıştır. İzin talebi yalnızca çağrı yığınındaki tüm arayanların (derleme düzeyinde) ilgili kaynak iznine sahip olması durumunda karşılanır.
SQL Server içinde çalıştırılırken yönetilen koda verilen kod erişimi güvenlik izinleri kümesi, önceki üç ilke düzeyi tarafından verilen izin kümesinin kesişimidir. SQL Server, SQL Server'da yüklenen bir derlemeye bir dizi izin verse bile, kullanıcı koduna verilen son izin kümesi kullanıcı ve makine düzeyi ilkeleri tarafından daha da kısıtlanabilir.
Kod erişim güvenliği artık desteklenmiyor
CLR, artık güvenlik sınırı olarak desteklenmeyen .NET Framework'te Kod Erişim Güvenliği'ni (CAS) kullanır.
PERMISSION_SET = SAFE ile oluşturulan bir CLR derlemesi dış sistem kaynaklarına erişebilir, yönetilmeyen kodu çağırabilir ve sysadmin ayrıcalıkları alabilir. SQL Server 2017 (14.x) ve sonraki sürümlerinde, sp_configure seçeneği, clr katı güvenlik, CLR derlemelerinin güvenliğini artırır.
clr strict security varsayılan olarak etkinleştirilir ve SAFE ve EXTERNAL_ACCESS derlemeleri UNSAFEolarak işaretlenmiş gibi değerlendirir. geriye dönük uyumluluk için clr strict security seçeneği devre dışı bırakılabilir, ancak önerilmez.
Tüm derlemeleri, UNSAFE ASSEMBLY veritabanında master izni verilmiş ilgili oturum ile bir sertifika veya asimetrik anahtarla imzalamanızı öneririz. SQL Server yöneticileri, Veritabanı Motoru'nun güvenmesi gereken bir derleme listesine de derleme ekleyebilir. For more information, see sys.sp_add_trusted_assembly.
SQL Server konak ilkesi düzeyi izin kümeleri
SQL Server konak ilkesi düzeyi tarafından derlemelere verilen kod erişimi güvenlik izinleri kümesi, derleme oluşturulurken belirtilen izin kümesi tarafından belirlenir. There are three permission sets: SAFE, EXTERNAL_ACCESS, and UNSAFE (specified using the PERMISSION_SET option of CREATE ASSEMBLY).
SQL Server, barındırırken CLR'ye konak düzeyinde bir güvenlik ilkesi düzeyi sağlar. Bu ilke, her zaman etkin olan iki ilke düzeyinin altında ek bir ilke düzeyidir. Bu ilke, SQL Server tarafından oluşturulan her uygulama etki alanı için ayarlanır. Bu ilke, SQL Server BIR CLR örneği oluşturduğunda geçerli olacak varsayılan uygulama etki alanı için tasarlanmamıştır.
SQL Server konak düzeyi ilkesi, sistem derlemeleri için SQL Server sabit ilkesinin ve kullanıcı derlemeleri için kullanıcı tarafından belirtilen ilkenin bir bileşimidir.
CLR derlemeleri ve SQL Server sistem derlemeleri için sabit ilke onlara tam güven verir.
SQL Server konak ilkesinin kullanıcı tarafından belirtilen bölümü, her derleme için üç izin demetlerinden birini belirten derleme sahibine dayanır. Aşağıdaki güvenlik izinleri hakkında daha fazla bilgi için bkz. .NET Framework SDK'sı.
SAFE
Yalnızca iç hesaplama ve yerel veri erişimine izin verilir.
SAFE en kısıtlayıcı izin kümesidir.
SAFE izinlerine sahip bir derleme tarafından yürütülen kod dosyalar, ağ, ortam değişkenleri veya kayıt defteri gibi dış sistem kaynaklarına erişemez.
SAFE derlemeleri aşağıdaki izinlere ve değerlere sahiptir:
| Permission | Değerler / Açıklama |
|---|---|
SecurityPermission |
Execution: Yönetilen kodu yürütme izni. |
SqlClientPermission |
Context connection = true, context connection = yes: Yalnızca bağlam bağlantısı kullanılabilir ve bağlantı dizesi yalnızca context connection=true veya context connection=yesdeğerini belirtebilir.AllowBlankPassword = false: Boş parolalara izin verilmez. |
EXTERNAL_ACCESS
EXTERNAL_ACCESS derlemeleri, dosyalar, ağlar, ortam değişkenleri ve kayıt defteri gibi dış sistem kaynaklarına erişme olanağıyla SAFE derlemeleriyle aynı izinlere sahiptir.
EXTERNAL_ACCESS derlemeleri de aşağıdaki izinlere ve değerlere sahiptir:
| Permission | Değerler / Açıklama |
|---|---|
DistributedTransactionPermission |
Unrestricted: Dağıtılmış işlemlere izin verilir. |
DNSPermission |
Unrestricted: Etki Alanı Adı Sunucularından bilgi isteme izni. |
EnvironmentPermission |
Unrestricted: Sistem ve kullanıcı ortamı değişkenlerine tam erişime izin verilir. |
EventLogPermission |
Administer: Şu eylemlere izin verilir: bir olay kaynağı oluşturun, var olan günlükleri okuyun, olay kaynaklarını veya günlükleri silin, girdileri yanıtlayın, olay günlüğünü temizleyin, olayları dinleyin ve tüm olay günlüklerinden oluşan bir koleksiyona erişin. |
FileIOPermission |
Unrestricted: Dosya ve klasörlere tam erişime izin verilir. |
KeyContainerPermission |
Unrestricted: Anahtar kapsayıcılarına tam erişime izin verilir. |
NetworkInformationPermission |
Access: Ping işlemine izin verilir. |
RegistryPermission |
, HKEY_CLASSES_ROOT, HKEY_LOCAL_MACHINE, HKEY_CURRENT_USERve HKEY_CURRENT_CONFIGHKEY_USERS.için okuma haklarına izin verir |
SecurityPermission |
Assertion: Bu kodun tüm çağıranlarının işlem için gerekli izne sahip olduğunu onaylama özelliği.ControlPrincipal: Asıl nesneyi işleme yeteneği.Execution: Yönetilen kodu yürütme izni.SerializationFormatter: Serileştirme hizmetleri sağlayabilme. |
SmtpPermission |
Access: SMTP ana bilgisayar bağlantı noktası 25'e giden bağlantılara izin verilir. |
SocketPermission |
Connect: Aktarım adresinde giden bağlantılara (tüm bağlantı noktaları, tüm protokoller) izin verilir. |
SqlClientPermission |
Unrestricted: Veri kaynağına tam erişime izin verilir. |
StorePermission |
Unrestricted: X.509 sertifika depolarına tam erişime izin verilir. |
WebPermission |
Connect: Web kaynaklarına giden bağlantılara izin verilir. |
UNSAFE
UNSAFE, derlemelerin hem SQL Server içindeki hem de dışındaki kaynaklara sınırsız erişime izin verir. bir UNSAFE derlemesinden yürütülen kod yönetilmeyen kodu da çağırabilir.
UNSAFE derlemelerine FullTrustverilir.
Önerilen izin ayarları
SAFE, SQL Server dışındaki kaynaklara erişmeden hesaplama ve veri yönetimi görevleri gerçekleştiren derlemeler için önerilen izin ayarıdır.
sql server dışındaki kaynaklara erişen derlemeler için EXTERNAL_ACCESS önerilir.
EXTERNAL_ACCESS derlemeleri varsayılan olarak SQL Server hizmet hesabı olarak yürütür.
EXTERNAL_ACCESS kodun çağıranın Windows Kimlik Doğrulaması güvenlik bağlamını açıkça taklit etmek mümkündür. Varsayılan değer SQL Server hizmet hesabı olarak yürütüleceğinden, EXTERNAL_ACCESS yürütme izni yalnızca hizmet hesabı olarak çalıştırılacağı güvenilir oturum açma bilgilerine verilmelidir.
Güvenlik açısından bakıldığında, EXTERNAL_ACCESS ve UNSAFE derlemeleri aynıdır. Ancak EXTERNAL_ACCESS derlemeler, UNSAFE derlemelerde olmayan çeşitli güvenilirlik ve sağlamlık korumaları sağlar.
UNSAFE belirtilmesi, derlemedeki kodun SQL Server işlem alanına karşı geçersiz işlemler gerçekleştirmesine olanak tanır ve bu nedenle SQL Server'ın sağlamlığını ve ölçeklenebilirliğini tehlikeye atabilir. SQL Server'da CLR derlemeleri oluşturma hakkında daha fazla bilgi için bkz. CLR tümleştirme derlemelerini yönetme.
Important
SQL Server, Veritabanı Altyapısı'nın belirli işlevleri sağlamak için kullandığı CLR derlemelerini içerir. SQL Server yüklemesine dahil edilen Microsoft.SQLServer.Types derlemesi meta verilerde UNSAFE derlemesi olarak görünür. Bu tasarım gereğidir. Bu derlemeler varsayılan olarak güvenli & güvenilir olarak kabul edilir.
Dış kaynaklara erişme
Kullanıcı tanımlı bir tür (UDT), saklı yordam veya başka tür bir yapı derlemesi SAFE izin kümesine kaydedildiyse, yapısında yürütülen yönetilen kod dış kaynaklara erişemez. Ancak, EXTERNAL_ACCESS veya UNSAFE izin kümeleri belirtilirse ve yönetilen kod dış kaynaklara erişmeye çalışırsa, SQL Server aşağıdaki kuralları uygular:
| If | Then |
|---|---|
| Yürütme bağlamı bir SQL Server oturum açma bilgilerine karşılık gelir. | Dış kaynaklara erişme girişimleri reddedilir ve bir güvenlik özel durumu oluşturulur. |
| Yürütme bağlamı bir Windows oturum açma bilgilerine karşılık gelir ve yürütme bağlamı özgün çağırandır. | Dış kaynağa SQL Server hizmet hesabının güvenlik bağlamı altında erişilir. |
| Arayan özgün arayan değil. | Erişim reddedilir ve bir güvenlik özel durumu oluşturulur. |
| Yürütme bağlamı bir Windows oturum açma bilgilerine karşılık gelir ve yürütme bağlamı özgün arayandır ve arayan kimliğine bürünülmektedir. | Access, hizmet hesabını değil arayan güvenlik bağlamını kullanır. |
İzin kümesi özeti
Aşağıdaki grafik, SAFE, EXTERNAL_ACCESSve UNSAFE izin kümelerine verilen kısıtlamaları ve izinleri özetler.
| Functionality | SAFE |
EXTERNAL_ACCESS |
UNSAFE |
|---|---|---|---|
| Kod Erişim Güvenliği izinleri | Execute only | Dış kaynaklara + erişim yürütme | Sınırsız (P/Invoke dahil) |
| Programlama modeli kısıtlamaları | Yes | Yes | No restrictions |
| Verifiability requirement | Yes | Yes | No |
| Yerel veri erişimi | Yes | Yes | Yes |
| Yerel kodu çağırabilme | No | No | Yes |
Related content
- CLR tümleştirme güvenlik
- Konak koruma öznitelikleri ve CLR tümleştirme programlama
- clr tümleştirme programlama modeli kısıtlamaları
- CLR tümleştirme mimarisi - CLR barındırılan ortam