İzin Çeşitleri:
3 tip izin vardır:
- Statement (Durum) İzinleri: Veritabanında nesnelerin yaratılmasını sağlayan izinlerdir. Bu izinler sayesinde kullanıcıların Transact-SQL komutlarını sınırlı bir şekilde kullanmaları sağlanır.
- Object (Nesne) İzinleri: Tablo ya da view gibi nesnelerde bilginin değiştirilmesi, seçilmesi, eklenmesi, çıkarılması vb. işlemlerin yapılması; sütunlarda seçme,güncelleme gibi işlemlerin yapılması ve saklı yordamların çalıştırılması ile ilgili izinlerdir.
- Predefined (Ön tanımlı) İzinler: Sabit rolde olan bir kişinin özel hakları vardır; örneğin sysadmin rolünde ise istediği herhangi bir işlem yapabilir (Ayrıca nesne sahibi olan kişi de o nesne ile ilgili istediği işlemi yapma hakkına sahiptir).
Statement | Description |
GRANT | erişme hakkı var |
DENY | erişme hakkı engellenmiş,ait olduğu grubunun çalışma hakları üstün değil |
REVOKE | erişme hakkı geri alınmış, ama ait olduğu grubunun hakları daha üstün |
Veritabanında bir kullanıcının bilgiye erişme izninin verilmesi için ya "Enterprise Manager" kullanılır ya da "Query Analyzer"da GRANT kullanılmalıdır.
Örnek: GRANT SELECT , INSERT
ON TABLE1
TO dilek
denirse, o an çalışılan veritabanında dilek'e TABLE1'da SELECT ve INSERT hakkı verilmiş olur.
Örnek: GRANT CREATE VIEW , CREATE TABLE
TO dilek
denirse, dilek'e veritabanında CREATE VIEW ve CREATE TABLE hakları verilmiş olur.
Veritabanında bir kullanıcının bilgiye erişme izninin engellenmesi için ya "Enterprise Manager" kullanılır ya da "Query Analyzer" 'da DENY kullanılmalıdır.
Örnek: DENY SELECT , INSERT
ON TABLE1
TO dilek
denirse, dilek'in veritabanında TABLE1 tablosunda SELECT ve INSERT haklarını kullanmasını engellenmiş olunur. Eğer dilek'in de içinde bulunduğu bir grup varsa ve o gruba aynı tablo için SELECT ve INSERT hakları tanınmışsa yine de dilek'in TABLE1 üzerinde SELECT ve INSERT izni olmaz.
Örnek: DENY CREATE VIEW , CREATE TABLE
TO dilek
denirse , dilek'in veritabanında CREATE VIEW ve CREATE TABLE izni engellenmiş olur. dilek'in içinde bulunduğu gruba CREATE VIEW ve CREATE TABLE hakları verilse bile dilek'in bu hakları kullanma izni olmayacaktır.
Veritabanında bir kullanıcının bilgiye erişme izninin kaldırılması için ya Enterprise Manager kullanılır ya da Query Analyzer'da REVOKE kullanılmalıdır.
Örnek: REVOKE SELECT , INSERT
ON TABLE1
FROM dilek
denirse, dilek'in veritabanında TABLE1 tablosunda SELECT ve INSERT izni iptal edilmiş olur. dilek'in de içinde bulunduğu bir grup varsa ve o gruba aynı tablo için SELECT ve INSERT haklarını tanımışsak; dilek'in TABLE1 üzerinde SELECT ve INSERT izni vardır ve işlem yapabilir.
Örnek: REVOKE CREATE VIEW , CREATE TABLE
FROM dilek
denirse , dilek'in veritabanında CREATE VIEW ve CREATE TABLE izni kaldırılmış olur. dilek'in içinde bulunduğu gruba CREATE VIEW ve CREATE TABLE hakları verilirse dilek'in CREATE VIEW ve CREATE TABLE izni olacaktır; işlem yapabilir.
İzin Onayları :
SQL Server, veritabanı güvenliğini yürütmek için izinleri kullanır. SQL Server, Transact-SQL ifadelerinin, görünümleri ve saklı yordamların kullanılması için yetki verir. İzinler herbir kullanıcının durumuna bağlı olarak belirlenir (sa, dbo, database object owner olarak). Bunlar iki tiptir: Nesne izinleri, tümce izinleri.
Her bir veritabanı içinde belirli hareketleri sınırlamak için kullanıcı hesaplarına ve rollerine izinler verilebilir. Bir kullanıcı başarılı bir şekilde bağlandıktan sonra SQL Server komutları kabul eder. İzinler onaylanırken, SQL Server aşağıdaki adımları takip eder:
- Kullanıcı Transact-SQL ifadelerini çalıştırdığında veya bir menü seçeneği seçme işlemleri yerine getirdiği zaman, Transact-SQL ifadeleri SQL Server'a gönderilir.
- SQL Server, Transact-SQL ifadesini aldığında kullanıcının ifadeyi çalıştırma izninin olup olmadığını kontrol eder.
- SQL Server aşağıdaki iki hareketi yerine getirir:
- Kullanıcının izni yoksa, SQL Server bir hata mesajı gönderir.
- Kullanıcının izni varsa, SQL Server isteneni yerine getirir.