SQL Server İzinleri Kılavuzu


SQL Server veritabanını yöneten herkes için izinleri anlamak, yalnızca yetkili kullanıcıların verileri görüntüleyebilmesini ve değiştirebilmesini sağlamak açısından kritik öneme sahiptir.

Bu makalede, sunucu düzeyi ve veritabanı düzeyi kullanıcı izinleri de dahil olmak üzere farklı SQL Server izin türleri açıklanmakta ve bunların nasıl yönetileceği konusunda rehberlik sağlanmaktadır.

SQL Server Güvenliğinin Temel Bileşenleri

Microsoft SQL Server, kurumsal BT ortamlarında çok çeşitli işlem işleme, iş zekası ve analitik uygulamalarını destekleyen ilişkisel bir veritabanı yönetim sistemidir (DBMS). Microsoft SQL Server, pazar lideri üç veritabanı teknolojisinden biridir.

SQL Server, DBA'ların ve sistem yöneticilerinin hangi kullanıcıların sunucuda oturum açabileceğini, hangi verilere erişebileceklerini ve bu veriler üzerinde hangi işlemleri gerçekleştirmelerine izin verildiğini kontrol etmelerini sağlayan üç ana güvenlik bileşenine sahiptir. Bu bileşenler şunlardır:

  • Güvenlik sorumluları — Belirli bir SQL Server örneğine erişme yetkisine sahip kişiler veya işlemler
  • Güvenlikleştirilebilir Öğeler — Erişimin düzenlendiği sunucu ve veritabanı kaynakları
  • İzinler — Sorumluların belirli güvence altına alınabilir öğelere sahip olduğu erişim türleri

Güvenlik Prensipleri

Güvenlik sorumlusu, SQL Server kullanan ve verilere erişme ve bunları değiştirme izni verilebilen bir kimliktir. Sorumlular bireyler, kullanıcı grupları, roller veya kişi olarak kabul edilen varlıklar (dbowner, dbo veya sysadmin gibi) olabilir.

Güvenlik sorumluları iki şekilde oluşturulabilir ve yönetilebilir:

  • SQL Server Management Studio (SSMS) — Bu ortam, SQL Server ve Azure SQL Veritabanı da dahil olmak üzere çeşitli SQL altyapılarını yönetmek için oluşturulmuştur. SMSS aşağıdakiler için araçlar sağlar:

    • SQL Server ve veritabanı yapılandırması, izleme ve örnek yönetimi
    • Veri katmanı uygulama bileşenlerini dağıtma, izleme ve yükseltme
    • Sorgular ve komut dosyaları oluşturma
  • Transact-SQL (T-SQL) — SQL'in bu özel uzantısı, Microsoft SQL hizmetlerinden yararlanmanın merkezinde yer alır. Bu makalede sağlanan tüm veritabanı komutları T-SQL ifadeleridir.

Rol Tabanlı Güvenlik

SQL Server, güvenlik sorumluları için rol tabanlı erişim denetimini destekler. Roller, Microsoft Windows güvenlik gruplarına benzer: Çeşitli roller tanımlarsınız, izinler ve kısıtlamalar atarsınız ve kullanıcıları, iş görevlerine karşılık gelen sunucu rollerine eklersiniz. Belirli bir role atanan izinler, rolün tüm üyeleri tarafından devralınır; dolayısıyla, bireysel kullanıcılar için benzersiz izin kümeleri oluşturup yönetmeye gerek yoktur.

Hem sunucu düzeyinde hem de veritabanı düzeyinde roller kullanılabilir.

Sunucu Düzeyindeki Roller

Adından da anlaşılacağı gibi sunucu rolleri, sunucu düzeyinde izinler vermenizi sağlar. İki tür sunucu rolü vardır:

  • Sabit sunucu rolleri — SQL Server dokuz sabit sunucu rolü sağlar; bu rollere sorumlular atayabilirsiniz ancak rol izinlerini değiştiremezsiniz. Sabit sunucu rolleri kullanışlıdır ve geriye dönük uyumluluğu destekler, ancak izinlerde ince ayar yapmanıza olanak tanıdığı için mümkün olan her yerde kullanıcı tanımlı roller önerilir. SQL Veritabanının sabit sunucu rollerini desteklemediğini unutmayın. Ancak, sunucu rolleri gibi davranan dbmanager ve loginmanager olmak üzere iki rol içerir.
  • Kullanıcı tanımlı sunucu rolleri — Sorumluları atayabilir ve rol izinlerini değiştirebilirsiniz.

Kullanıcı tanımlı bir sunucu rolü oluşturmak basittir:

  1. Bu komutu kullanarak rolü oluşturun:
CREATE SERVER ROLE serverrole
  1. Şu örneğe benzer bir komut kullanarak role izin verin:
GRANT ALTER ANY DATABASE TO serverrole
  1. Bu komutu kullanarak role bir sorumlu ekleyin:
ALTER SERVER ROLE serverrole ADD MEMBER [testexampleuser]

Ek izinler vermek ve role daha fazla sorumlu eklemek için 2. ve 3. adımları tekrarlayın.

Veritabanı Düzeyindeki Roller

Veritabanı rolleri, sunucu düzeyinde izinler yerine veritabanı düzeyinde izinler atamanıza izin vermesi dışında sunucu rolleriyle aynı şekilde çalışır.

Bir veritabanı rolü oluşturmak için yukarıda sunucu rolleri için ayrıntılı olarak açıklanan prosedürün aynısını kullanın. Örneğin aşağıdaki komutları kullanabilirsiniz:

CREATE ROLE dbrole

GRANT SELECT ON DATABASE::TestDatabase TO dbrole

ALTER ROLE dbrole ADD MEMBER exampleuser2

Teminatlanabilirler

Müdürler, güvence altına alınabilir öğeler için izinler alır. Güvenli olanlar, erişimin düzenlendiği kaynaklardır. Güvenli hale getirilebilir öğeler, "kapsamlar" adı verilen ve aynı zamanda güvence altına alınabilen iç içe geçmiş hiyerarşilere sahip olabilir. Güvenli hale getirilebilir kapsamlar sunucu, veritabanı ve şemadır. (Veritabanı şeması, tüm veritabanının mantıksal görünümünü temsil eden bir iskelet yapısıdır. Verilerin nasıl organize edildiğini ve aralarındaki ilişkilerin nasıl ilişkili olduğunu tanımlar. Verilere uygulanması gereken tüm kısıtlamaları açıklar.)

İzinler

İzinler, belirli güvenli öğelere verilen erişim türleridir. Sunucu düzeyinde, SQL Server oturum açma bilgilerine ve sunucu rollerine izinler atanır. Veritabanı düzeyinde, veritabanı kullanıcılarına ve veritabanı rollerine atanırlar.

İzinleri kontrol etmenin üç ana yolu vardır:

  • Grant — GRANT ifadesi, sorumluların belirtilen güvenli öğelere erişmesine olanak tanır.
  • Reddet — DENY ifadesi, sorumluların belirtilen güvenli öğelere erişmesini engeller.
  • İptal Et — REVOKE ifadesi, belirli güvence altına alınabilir öğeler için önceden verilen izinleri ortadan kaldırır.

DENY izinleri bildiriminin verilen tüm izinleri geçersiz kıldığını unutmayın.

İzin Hiyerarşisi

Güvenli hale getirilebilir öğeler, sunucular, veritabanları, şemalar ve bu şemaların içerdiği nesnelerden oluşan bir hiyerarşi halinde düzenlenir. İzinler sunucu, veritabanı, şema veya tek nesne düzeyinde atanabilir.

Hiyerarşinin daha yüksek bir düzeyinde verilen izinlerin, bunları güvenli hale getirilebilir öğenin alt ve torun nesnelerine özellikle reddetmediğiniz sürece, otomatik olarak daha düşük düzeylere uygulanacağını unutmayın.

SQL Server İzinlerini Güvenli Bir Şekilde Yönetme

Yanlış atanan izinler, veri güvenliği açısından ciddi risk oluşturabilir ve görevlerini tamamlamaya çalışan çalışanlar için büyük aksaklıklar yaratabilir. Aşağıdaki en iyi uygulamalar bu sorunlardan kaçınmanıza yardımcı olacaktır.

En Az Ayrıcalık İlkesine Uyun

Her kullanıcıya yalnızca görevlerini gerçekleştirmek için gereken ayrıcalıkları verin; ne fazla ne de az. Aşağıda bazı kullanıcı örnekleri ve hangi düzeyde erişime ihtiyaç duyabilecekleri verilmiştir:

  • SQL Server yöneticisi — Veritabanlarının tamamını ekleme ve silme becerisine ihtiyaç var
  • Geliştirici — Veritabanı nesnelerini oluşturmanız, tasarlamanız, değiştirmeniz ve silmeniz gerekiyor
  • Uygulama — Verileri görüntülemeniz ve düzenlemeniz gerekiyor
  • Son kullanıcı — Verileri salt okunur kapasitede kullanma veya verileri hem okuma hem de düzenleme ihtiyacı

Rolleri Kullan

İzinleri atamak için SQL Server tarafından sağlanan rol tabanlı güvenlik seçeneklerinden yararlanın. Bireysel kullanıcılara benzersiz haklar atamak yerine rolleri kullanmak hem daha kullanışlı hem de çok daha doğrudur.

İzinler ve Devralma Hiyerarşisini Anlayın

Daha önce açıklandığı gibi, SQL Server güvenliği sağlanabilen öğeler bir hiyerarşi halinde gruplandırılır. Sunucu, üzerinde barındırılan veritabanlarının, veritabanlarının kendi şemalarının ve şemaların kendi nesnelerinin sahibidir. İzinler bu düzeylerden herhangi birine atanabilir. Bir kullanıcıya veya role belirli bir düzeye erişim izni vermek, bir alt veya torun nesnesi için erişim özel olarak reddedilmediği veya iptal edilmediği sürece otomatik olarak onlara bu düzeyin altındaki tüm düzeylere erişim izni verir.

Dahası, iç içe geçmiş hiyerarşi nedeniyle, müdürler, güvence altına alınabilirler ve izinlerin tümü birbirini devralabilir. Örneğin, bir sorumlu bir rol olabilir ve ona atanan tüm izinler otomatik olarak o rolün tüm üyelerine uygulanır.

Netwrix Denetçisi SQL Server Güvenliğini Nasıl Geliştirir?

SQL Server izinlerinize ilişkin görünürlüğe sahip olmak, bunları etkili bir şekilde yönetmek açısından kritik öneme sahiptir. Netwrix Auditor for SQL Server, izinleri anlamanıza ve bunlarda yapılan değişiklikleri izlemenize yardımcı olabilir. Şunları alırsınız:

  • SQL Server izinleri üzerinde kontrol — SQL Server'da kimin neye erişimi olduğunu anlamanıza ve bu izinlerin nasıl verildiğini belirlemenize yardımcı olur
  • Güvenlisunucu düzeyinde değişiklik denetimi — İzin güncellemeleri veya SQL sunucusu örneğinin silinmesi gibi tüm SQL Server yapılandırma değişikliklerini izler
  • Veritabanı düzeyinde değişiklik denetimi — Veritabanı içeriğini ve nesne değişikliklerini izler

Netwrix Auditor ayrıca şunları da sağlar:

  • Ayrıntılı oturum açma izleme — Yetkisiz erişimi ve siber saldırıları tespit etmenize ve bunlara müdahale etmenize yardımcı olmak için SQL Server'ınızda başarılı ve başarısız oturum açma girişimlerine ilişkin raporlar
  • Tehdit kalıplarıyla ilgili uyarılar — İzin değişiklikleri ve temel veritabanlarına erişme girişimleri gibi anında ilgilenmenizi gerektiren kritik olaylar hakkında sizi bilgilendirir
  • Otomatik denetim raporları ve kontrol panelleri — Filtreleme, sıralama ve dışa aktarma özelliklerine sahip, önceden tanımlanmış kapsamlı raporlar ve kontrol panelleri sağlayarak SQL denetim günlüklerini artırır

İlgili makaleler