Makale Özeti

Hangi firmanın olursa olsun hazırlanmış olan tüm yazılımlarda birinci öncelik güvenlik sorunudur.İnsanlar bile her şeyden önce kendi güvenliğini birinci planda tuttuğuna göre bilgisayar yazılım ortamlarında da sistemler internet üzerinden dünya’ya açık ortamlar haline geldiğinden ilk öncelik güvenlik oluyor.Hangi programı kullanırsanız kullanın eğer sisteminiz internete bağlı ise ,ki SQL Server ile mutlaka bu böyle olmak zorundadır.Çünkü SQL Server bir veri tabanı sistemi yani bilgilerinizin karşılıklı olarak gönderilip alındığı bir platformdur. Öyleyse ilk amaç bilgilerinizin veya verilerinizin karşı tarafa güvenli olarak iletmek olmaktadır.

Makale

SQL SERVER 2000’DE GÜVENLİK

 

Hangi firmanın olursa olsun hazırlanmış olan tüm yazılımlarda birinci öncelik güvenlik sorunudur.İnsanlar bile her şeyden önce kendi güvenliğini birinci planda tuttuğuna göre bilgisayar yazılım ortamlarında da sistemler internet üzerinden dünya’ya açık ortamlar haline geldiğinden ilk öncelik güvenlik oluyor.Hangi programı kullanırsanız kullanın eğer sisteminiz internete bağlı ise ,ki SQL Server ile mutlaka bu böyle olmak zorundadır.Çünkü SQL Server bir veri tabanı sistemi yani bilgilerinizin karşılıklı olarak gönderilip alındığı bir platformdur. Öyleyse ilk amaç bilgilerinizin veya verilerinizin karşı tarafa güvenli olarak iletmek olmaktadır.

Peki SQL Server’da güvenlik nasıl sağlanıyor?

SQL Server 2000'de güvenlik başta authentication (yetkilendirme/kimlik denetimi) düzenlemesi olmak üzere, SQL Server'a bağlanan ve veritabanlarına erişen kişilerin denetlenmesi işlemidir.

SQL Server'a erişen bir kullanıcı şu tanımlamalardan geçerek bir veritabanı nesnesine erişir:

Login account -> Database user -> Database nesneleri

Geçerli bir kullanıcı-> veritabanı kullanıcısı-> tablo ya da view

Login account (oturum açma adı), SQL Server'a erişecek geçerli bir kullanıcı adıdır. Bu kullanıcı adı iki şekilde oluşturulur:

  • Windows 2000 kullanıcısı olmak.
  • SQL Server'da tanımlı bir Login ID olmak.

Ardından login adı bir SQL Server veritabanı kullanıcı adıyla eşleştirilerek veritabanına ve veritabanı nesnesine erişim sağlanmış olur. Ardından izinler devreye girer. İzinler (permissions) kullanıcıların hangi database nesnelerini kullanacağını ve hangi işlemleri yapabileceğini belirtir.

A. VAROLAN SİSTEM YÖNETİCİSİ

Nasıl Windows işletim sisteminde Administrator tanımlı yerleşik bir kullanıcı var, SQL Server'da da kuruluş sırasında yaratılan bu kullanıcı sistem yöneticisidir. SQL Server'a ve bütün database'lere erişim yetkisi vardır. Bu kullanıcının adı: sa dır.

Sistem yöneticisi: SA

B. KİMLİK DENETİMİ (AUTHENTİCATİON) TİPİNİN SEÇİLMESİ

SQL Server'a erişecek kullanıcıların (login'lerin) sisteme girişinde yapılacak kontrole authentication (kimlik denetimi) denir. SQL Server 2000'de Windows 2000 kimlik denetimi, Windows 2000 Authentication Mode ya da Mixed olarak düzenlenir.

  • Windows 2000 kimlik denetimi
  • Windows NT ve SQL Server Kimlik denetimi (Mixed)

Kimlik denetiminde iki modun (tipin) olmasının bir diğer anlamı da; SQL Server'ın kullanıcıları kendisinin denetlediği gibi Windows NT'nin denetimine de güvenmesidir.

Windows NT/2000 Kimlik Denetimi

SQL Server'a bağlanmak isteyen bir kullanıcı Windows NT kimlik denetimini kullandığında; bir Windows 2000 kullanıcısı ya da grubu SQL Server'a girebilir. Bu şekilde SQL Server'a giren kullanıcıya bir bağlantı yaratılır. Bu bağlantıya da trusted connection denilir. Ardından kullanıcının adı ve grubu SQL Server'a geçirilir.

Windows 2000 Authentication Mode'un Üstünlükleri

Windows NT Authentication Mode, Windows NT'nin kimlik denetiminden geçen kullanıcıların SQL Server'ı kullanmasına izin verir. Bu tipin kullanılmasının üstünlükleri şunlardır:

  • Tek bir kullanıcı adını kullanarak daha kolay ve hızlı logon işlemi.
  • Kullanıcı adı ve parola düzenlemesi olarak daha fazla seçeneğe sahiptir. Örneğin auditing, expiration, logon hours vb düzenlemeler.

Mixed Mode'un Üstünlükleri

Mixed modun kullanımını üstünlüklerinin başında non-Windows NT client'ların (Internet clients, vb) da SQL Server'a erişmelerinin sağlanmasıdır. Diğer bir üstünlük ise ikinci bir güvenlik katmanı olmasıdır.

Kimlik Denetimi Tipinin (Authentication Mode) Düzenlenmesi

Kimlik denetimi tipinin seçilmesi için şu işlemler yapılır:

Windows 2000 Authentication Mode'un seçilmesi:

1. SQL Server Enterprise Manager çalıştırılır.
2. Kimlik denetimi değiştirilecek server üzerinde sağ tuşa tıklanır Properties seçilir.
3. Security sekmesi seçilir.
4. Buradan istenilen düzenleme seçilir.
5. MSSQLServer servisi durdurulur ve yeniden başlatılır. Böylece seçilen kimlik denetimi tipi geçerli olur.
6. "Trusted connection " olarak SQL Server'a bağlanacak olan Windows NT kullanıcıları ve grupları yaratın.
7. Bu kullanıcı ve gruplara Enterprise Manager aracılığıyla SQL Server'da kullanabilecekleri izinler ver.

Mixed Authentication Mode'un seçilmesi:

1. SQL Server Enterprise Manager çalıştırılır.
2. Kimlik denetimi değiştirilecek server üzerinde sağ tuşa tıklanır Properties seçilir.
3. Security sekmesi seçilir.
4. Buradan istenilen düzenleme seçilir.

C. BİR SQL SERVER LOGİN'İ YARATMAK

Windows NT kullanıcısı ya da grubu üyesi olmayan kullanıcıların (non-trusted users) SQL Server'da tanımlanması için yine Enterprise Manager ya da sp_addlogin sistem stored procedure'ı kullanılır. Bu deyim de yine Administrator tarafından kullanılır.

1. Bir server grubu ve bir server açılır.
2. Security açılır.
3. Logins üzerinde sağ tuşa tıklanır ve New Login seçilir.
4. SQL Server logininin adı girilir.
5. SQL Server Authentication seçilir.
6. Bir parola (password) girilir.
7. Seçimlik olarak bir varsayım database ve dili girilir.
8. Girilen parola onaylanır.

D. ROLLER

Veritabanı rolleri, izinlerin uygulanacağı birçok kullanıcının bir araya getirilmesidir. SQL Server, server düzeyinde de database düzeyinde roller düzenlenebilir.

SQL Server, belli yönetim fonksiyonlarına sahip hazır-tanımlanmış birtakım rollere sahiptir. Bu roller kolayca bir kullanıcıya verilebilir. Bunun dışında özel (user-defined) roller de yaratılabilir.

Tanımlı (sabit) server rolleri yönetimsel düzeydeki izinlerin gruplanmasını sağlar. Bu roller kullanıcı database'leri üzerinde bağımsız olarak düzenlenebilir.

Tablo: Sık kullanılan sabit server rolleri

Rol

İzni

Database yaratıcıları (dbcreator)

Database yaratır ve değiştirir.

Disk yöneticileri (diskadmin)

Disk dosyalarını düzenler.

Process yöneticileri (processadmin)

SQL Server process'lerini yönetir.

Güvenlik yöneticileri (securityadmin)

Sisteme giriş işlemini düzenler.

Server yöneticileri (serveradmin)

Server düzeyindeki düzenlemeleri yapar.

Kuruluş yöneticileri (setupadmin)

Replication işlemini kurar.

Sistem yöneticileri (sysadmin)

Herhangi bir işlemi yapar.

Enterprise Manager aracılığıyla Server Rollerini görmek için Security bölümünden Server Roles seçilir.

Tanımlı (sabit) database rolleri database düzeyinde yönetimsel izinlerin gruplanmasını sağlar. Database rollerini görmek için Enterprise Manager içinde database seçilir.

Tablo: Sık kullanılan sabit database (Veritabanı) rolleri

Rol

İzni

Public

Bir database üzerindeki bütün varsayım izinleri sağlar.

db_owner

Herhangi bir database rolü işlemini yapar.

db_accessadmin

Database kullanıcısı, grubu ve rolü ekler.

db_dlladmin

Database nesnesi ekler, değiştirir ya da düşürür.

db_securityadmin

Deyim ve nesne izinleri düzenler.

db_backupoperator

Database yedekleme ve geri yükleme.

db_datareader

Herhangi bir tablodan data okur.

db_datawriter

Tablolardaki dataları siler, değiştirir ve ekler.

db_denydatareader

Herhangi bir tablodan data okuyamaz.

db_denydatawriter

Herhangi bir tablodan data değiştiremez.

Tanımlı (sabit) rollerin dışında sistem yöneticileri kendi kullanıcıları için de roller düzenleyebilirler. Böylece bir grup kullanıcının izinlerinde toplu değişiklik yapılabileceği için yönetim fonksiyonu kolaylaşacaktır.

E. KULLANICI-TANIMLI BİR ROL YARATMAK

Kullanıcı tanımlı bir rol yaratmak için:

1. Bir server grubu ve bir server seçilir.
2. Databases grubu açılır ve içinde rol yaratılacak olan database açılır.
3. Roles üzerinde sağ tuşa tıklanır ve New Database Role seçilir.
4. Yeni rolün adı girilir.
5. Add düğmesine tıklanarak standart role üyeler eklenir.

Bir SQL Server database rolüne üye eklemek için:

1. Bir server grubu ve bir server seçilir.
2. Databases grubu seçilir. Ardından rolün olduğu database genişletilir.
3. Database Roles seçilir.
4. Rol üzerinde sağ tuşa tıklanır ve Properties seçilir.
5. User altında Add düğmesine tıklanır.
6. Eklenecek kullanıcı ya da kullanıcılar seçilir.

 

 

F. İZİNLERİN DÜZENLENMESİ

İzinlerin (permissions) atanması; kullanıcıların belli işlemleri yapmalarını sağlayacak olan yetkilerin kullanıcılara ve rollere atanması anlamına gelir. SQL Server'da verilerin güvenliği, kullanıcıların kontrol edilmesiyle; diğer bir deyişle sadece gerekli izini olanların belli işlemleri yapması anlamına gelir. İzin sisteminde kullanıcıların database nesnelerini belli izinlerle kullanması sağlanır.

Database nesneleri şunlardır:

  • Tables (tablolar)
  • Defaults (varsayılan değerler)
  • Rules (kurallar)
  • Indexes (ideksler)
  • Views (görünümler)
  • Triggers (tetiklemeler)

Bir veritabanına erişmek için hem geçerli bir login id'ye hem de bir veritabanı kullanıcısına gereksinim vardır. Bir database'de yer alan izin sistemi (izinler) diğer bir database'i etkilemez. Örneğin bir kullanıcı Müşteri database'inde verilere erişim iznine sahipse Stok database'inde herhangi bir işlemi yapamaz.

Bir login'in (sistem giriş kullanıcı adı) bir SQL Server kullanıcı adına ya da rolüne atanmasının ardından, database'lerin güvenliği sağlamak için izinlerin düzenlenmesi gerekir. İzinler (permissions) kullanıcıların kullanacağı database nesnelerini ve işlemlerini belirtir.

SQL Server'da üç tip izin sistemi vardır:

  • Deyim (statement)
  • Nesne (object)
  • Önceden-tanımlı

Nesne İzinleri

Deyim izinleri bir database ya da nesnenin yaratılması ile ilgilidir. Nesne izinleri ise datalar üzerinde işlem yapmayı ve procedure'ları işletmeyi sağlar. Nesne izinleri tablolar ve view'ler üzerinde, kolonlar üzerinde ve stored procedure'larla işlem yapmayı sağlar.

Tablo ve View İzinleri

Tablolar ve view'ler için nesne izinleri SELECT, INSERT, UPDATE ve DELETE izinlerinin bu nesneler üzerinde kullanılmasını sağlar.

Tablo ve view izinleri

  • SELECT
  • INSERT
  • UPDATE
  • DELETE

Sütun İzinleri

SELECT, UPDATE ve REFERENCES izinleri tek bir kolona (bir alana) uygulanabilirler. Bir kullanıcı bir tabloya FOREIGN KEY kısıtlaması ile bir satır eklediğinde ya da değiştirdiğinde SQL Server bu alanı kullanabilmelidir. Bu işlem için kullanıcının SELECT ya da REFERENCES izinine sahip olması gerekir.

 

Kolon İzinleri

  • SELECT
  • UPDATE
  • REFERENCES

Stored Procedure İzinleri

EXECUTE (EXEC) izini bir stored procedure için kullanılan bir nesne izinidir.

EXEC izinleri

STORED PROCEDURE

Deyim

Sysprotect tablosundaki durumu

Açıklama

GRANT

Positive

İşlem yapabilir.

REVOKE

None

İşlem yapamaz. Ancak rol izini ile ezilebilir.

DENY

Negative

İşlem yapamaz. Ve rol izini ile de ezilemez.

İzinlerin Verilmesinde Enterprise Manager'ın Kullanılması

Bir nesneye erişim izini vermek için:

1. Bir server grubu ve bir server açılır.
2. Databases grubu açılır ve nesnenin bulunduğu database seçilir.
3. Nesnenin tipine göre Tables, SQL Server Views ya da Stored Procedures seçilir.
4. Ayrıntı penceresinde nesne üzerinde sağ tuşa tıklanır. Task işaret edilir ve Manage Permissions seçilir.
5. List All Users/DB Roles seçilir.
6. İzin verilecek kullanıcı seçilir. Bir check işareti verilen izini ifade eder.

G. GÜVENLİĞİ PLANLAMAK

SQL Server'da güvenlik konusunun düzenlenmesi için aşağıdaki konuların göz önünde bulundurulması gerekir:

  • Varsayım login'in kullanımı
  • Guest kullanıcı adının kullanımı
  • Public rolünün izininin belirlenmesi
  • Login'lerin kullanıcı adlarına ve rollere atanması
  • dbo ile nesnelerin yaratılması

Varsayım Login'in Kullanımı

SQL Server'da login adı olarak sisteme giriş yetkisine sahip olan sa ve BUILTIN\Administrator'un kullanımının belirlenmesi gerekir.

  • sa
  • BUILTIN\Administrator

Bu kullanıcı adları sıradan kullanıcı olarak kullanılmamalıdır. Bu nedenle sa kullanıcısına mutlaka bir parola düzenlenmelidir!

 

 

Public Rolünün İzininin Belirlenmesi

Public rolü, her database kullanıcısının sahip olduğu özel bir database rolüdür. Bu izin sayesinde kullanıcıların database üzerindeki minimum izinleri (varsayım izinleri) düzenlenir. Bu nedenle bu role izin verilirken dikkat edilmelidir.

Login'lerin Kullanıcı Adlarına ve Rollere Atanması

Bir login adının bir database'e atanmasının ardından bir kullanıcı ya da rol ile izinler düzenlenir. Login adı ile kullanıcı adının eşleştirilmesi için aşağıdaki kurallar uygulanır.


Tolga Nalbantoğlu