Trustworthy Property and Assemblies

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. sp_configure 'clr strict security',0 reconfigure alter database msdb SET TRUSTWORTHY on 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. use YourDB select assembly_id from sys.assemblies --Yukarıdaki Script ile assembly_id değeri aşağıda trusted ederken kullanılır. DECLARE @asmBin varbinary(max) ; DECLARE @sql […]

Trustworthy Property and Assemblies

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.

sp_configure 'clr strict security',0
reconfigure
alter database msdb SET TRUSTWORTHY on

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.

use YourDB
select assembly_id from sys.assemblies
--Yukarıdaki Script ile assembly_id değeri aşağıda trusted ederken kullanılır.
DECLARE @asmBin varbinary(max) ;
DECLARE @sql nvarchar(max)
select @asmBin=content from sys.assembly_files where assembly_id=65536
DECLARE @hash varbinary(64);
SELECT @hash = HASHBYTES('SHA2_512', @asmBin);
EXEC sp_add_trusted_assembly @hash,                                              
N'AssemblyName, version=0.0.0.0, culture=neutral, publickeytoken=null, processorarchitecture=msil'
GO
sp_configure 'clr strict security',1
reconfigure
alter database msdb SET TRUSTWORTHY off

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)

Benzer Yazılar

SQL Server Log Shipping Mimarisi

SQL Server 1 ay önce

SQL Server Log Shipping Mimarisi nedir? Log Shipping Nedir? Log Shipping Kurulumu nasıl yapılır?İçindekilerLog Shipping Nedir?Log Shipping Nasıl Çalışır?Log Shipping Kurulumu Merhabalar Bu yazımda MS SQL Server mimarisi olan LOG SHIPPING mimarisinden ve kurulumundan bahsettim. Log Shipping Nedir? Log Shipping, Primary veritabanında meydana gelen değişikliklerin (inserts, updates, deletes) Secondary  veritabanına aktarılmasını sağlar. Bu işlem, düzenli olarak alınan transaction log yedeklerinin bir veya birden fazla Secondary sunucuya uygulanmasıyla gerçekleşir. Log Shipping, genellikle şunlar için kullanılır: Felaket Kurtarma (Disaster Recovery): Primary Sunucu Arızalandığında Secondary sunucudan devam etmeyi sağlar. Burada tabiki herkesin aklındaki soru Veri Kaybı  evet burada bir veri kaybı olacaktır. Bunun sebebi alınan son transaction log backup sonrasında yapılan işlemler Secondary sunucuda bulunmayacaktır. Kısaca özetlemek gerekir ise Her 10 Dakikada bir Transaction Log backup alınan ortamda En son alınan Transaction Log backup saat 12:50 de alındığını düşünelim ve Primary sunucumuz arızalandığı saat ise 12:55 burada 5 dakika içerisinde gerçekleşen işlemlerin hiç […]

User-Defined Functions(Kullanıcı Tanımlı Fonksiyonlar)

SQL Server 1 ay önce

User-Defined Functions(Kullanıcı Tanımlı Fonksiyonlar) SQL Server 2000 ile gelen bir özelliktir.İçindekilerTable-Valued Functions (Tablo Değerli Fonksiyonlar)Scalar Functions (Skalar Fonksiyonlar)Inline Table-Valued Functions (Satır İçi Tablo Değerli Fonksiyonlar) Bu yazımda ihtiyaçlar doğrultusunda kendinize ait raporlamaları aralıklı günlere göre yada istediğiniz değerlere göre ihtiyaçlarınızı karşılayabilirsiniz. Başlıktanda anlaşıldığı gibi kullanıcıların ihtiyaçlarına göre kendilerine ait fonksiyonlarını oluşturabileceklerdir. 3 çeşit fonksiyon vardır. Table-Valued Functions (Tablo Değerli Fonksiyonlar) Viewlerle büyük benzerlikler içerir ancak farklı olarak dışarıdan parametre alabilirler. belirli bir tarih aralığındaki verileri dondurmek istediğimizde ve büyük verileri sorgulamak istediğimizde kullanılır. Örnek olarak 2 tarih arasındaki verileri döndürmek CREATE FUNCTION dbo.fn_SalesBaslaBitisTarih (@startDate DATE, @endDate DATE) RETURNS TABLE AS RETURN ( SELECT * —-Yada istenilen kolonlar FROM Sales WHERE OrderDate BETWEEN @startDate AND @endDate — ekstra koşul eklenebilir ) SELECT * FROM dbo.fn_ SalesBaslaBitisTarih (‘2025-01-01’, ‘2025-03-01’) Bu sorgu, 2025-01-01 ile 2025-03-01 arasındaki tüm verileri listeleyecektir. Scalar Functions (Skalar Fonksiyonlar) Skalar fonksiyonlar birden fazla satır üzerinde işlem yapmaz; her zaman […]

SQL Server 2016 ‘dan 2022 Sürüm bilgileri

SQL Server 1 ay önce

SQL Server 2016 ‘dan 2022 sürümüne kadar eklenen önemli işlevler ve gelişmeler hakkında bilgi sahibi olmak  Bu yazımızda SQL Server 2016 ,SQL Server 2017, SQL Server 2019, SQL Server 2022 sürümlerinin yeniliklerini nelerdir ? Bu sürümler ile göze çarpan ve ortamlara göre kullanılması gereken etkenler ne olmalıdır sorularına cevap vermeye çalışacağım

0 Yorum

Yorum Yaz

Rastgele