Trustworthy Property and Assemblies

Serdar BAYRAK

Updated on:

Assembly, T-SQL yerine, .NET Framework CLR ile SQL üzerinde yazılan kodların, store procedure, function, triggerlar aracılığı ile derlenen DLL dosyalarıdır.
PostgreSQL veya Oracle ile SQL Server’dan veri okumak ya da yazmak istediğimizde OPENQUERY\OPENROWSET gibi komutları Linked Server üzerinden çalıştırmak için CLR özelliğinin kapatılması gereklidir. Default olarak bu değer açık gelmektedir.
Assembly kullanabilmek için ilgili Instance altındaki database’in TRUSTWORTH özelliğinin aktif edilmesi gerekmektedir. Bu özellik default olarak OFF olarak kullanılmaktadır. Bu özellik sistemde güvenlik açığı oluşturabileceği için Database Properties kısmında değiştirilemez olarak görünmektedir. Aktif etmek için aşağıdaki scripti kullanabilirsiniz.

TRUSTWORTH aktif edildikten sonra database üzerindeki assembly etkin olarak kullanılabilecektir. Fakat CLR Security özelliğinin kapalı olması güvenlik açığı oluşturduğundan dolayı. Bu özelliği aktif durumda bırakıp assembly trusted olarak sağlanması gerekmektedir.

Komutları ile assembly, trusted duruma getirilir. CLR security aktif edilir ve TRUSTWORTHY kapatılarak güvenlik sorunu ortadan kaldırılır.
Assembly oluştururken önem arz eden diğer konulardan biride permission konusudur.
Kod çalıştırılırken 3 tür permission bulunur. SAFE, UNSAFE ve EXTERNAL_ACCESS.
SAFE, Default olarak gelen değerdir ve genel olarak kullanılan değerdir. Bu permission ile sadece sunucu içerisinde kod çalıştırmak istersek kullanabiliriz. Sınırlıdır (Restricted)
EXTERNAL_ACCESS, kodun sunucu dışındaki kaynaklara erişmesi gerekirse bu permission kullanılması gerekmektedir. File, Network kaynaklarına erişim sağlanabilir.
UNSAFE, kodun güvenli olmadığını ek erişim gereken Win32 gibi API kaynaklara erişim gerektiğinde kullanılır. Sınırsızdır (Unrestricted)

Yorum yapın