Veri Tabanı Yönetim Sistemleri 1
Ders 12
SQL Server'da Kullanıcı Yönetimi
Yrd. Doç. Dr. Altan MESUT
Trakya Üniversitesi
Bilgisayar Mühendisliği Bölümü
Login ve User
• SQL Server'da Login nesnesi bir sunucuya giriş
için, User ise sunucu altındaki bir veritabanına
giriş için kullanılır.
• Öncelikle sunucu üzerinde bir login oluşturup,
daha sonra hangi veritabanı üzerinde o login'e
bağlanma hakkı vereceksek, ilgili veritabanı
üzerinde o login için bir user oluştururuz.
• Bir login ismi aynı veritabanı üzerinde birden fazla
kullanıcı ile ilişkilendirilemez (farklı veritabanları
üzerinde kullanılabilir).
• Windows kullanıcıları da login'e bağlanabilir.
SQL Server Management Studio üzerinden de Login, Kullanıcı, Rol, Şema yaratma ve
yetki verme işlemleri yapılabilir. Ama sunuda T-SQL kodları ile yapılması gösterilecektir.
LOGIN Yaratma
• SQL Server Authentication için:
CREATE LOGIN loginAdı
WITH PASSWORD = 'şifresi' MUST_CHANGE
• Windows Authentication için:
CREATE LOGIN [domainAdı\loginAdı]
FROM WINDOWS
• Opsiyonel olarak varsayılan veritabanı adı ve
varsayılan dil seçilebilir:
– DEFAULT_DATABASE = yeniDB
– DEFAULT_LANGUAGE = Turkish
3
USER Yaratma
• Genel Kullanım:
CREATE USER kullanıcıAdı
FOR LOGIN loginAdı
• Kullanıcı yaratılırken varsayılan şema atanabilir:
CREATE LOGIN AltanMESUT
WITH PASSWORD = '8fdKJl3$nlNv3049js';
USE yeniDB;
CREATE USER Altan FOR LOGIN AltanMESUT
WITH DEFAULT_SCHEMA = yeniSema;
Altan kullanıcısının yaratacağı nesneler bir şema
belirtilmez ise yeniSema altında yer alacaktır.
4
Şema (Schema)
• Şema, tablo ve prosedür gibi veritabanı
nesnelerini barındıran yapıdır. Kullanıcı ve rol gibi
yapılar ise şema içinde yer almazlar.
• Şemanın sahibi bir kullanıcı veya rol olabilir.
Seçimlik olarak kullanılabilen AUTHORIZATION ile
şemanın sahibi olacak kullanıcı belirlenir. Eğer
kullanılmazsa şemayı yaratan kullanıcı sahibi olur:
CREATE SCHEMA Alinin AUTHORIZATION Ali
• Tüm sabit veritabanı rollerinin kendilerine ait
farklı bir şeması vardır.
5
Roller
• Rol, birçok yetkinin bir araya getirilmesi ile oluşan yetki
gruplarına verilen isimdir.
• Kişilere tek tek yetkiler verildiğinde, sonradan yetkilerin
değiştirilmesi gerekirse, yine tek tek o kişilere
değişikliğin uygulanmasını gerektirecektir.
• Oysa ki kişilere bir rol verilirse, bu rolün yetkileri
değiştirilince o role sahip olan tüm kişilerin yetkileri
değiştirilmiş olur.
• SQL Server üzerindeki yetkili kullanıcılar için sabit
sunucu rolleri, veritabanına erişim yetkisi olan
kullanıcılar için ise sabit veritabanı rolleri mevcuttur.
6
Sabit Sunucu Rolleri
• Dış dosyalardan alınan verileri tablolara
yerleştirebilme (BULK INSERT)
• VT oluşturma ve değiştirme
• VT yedek (backup) dosyalarını yönetme
• Sunucu işlemlerini kontrol etme (erişimleri
sonlandırabilir)
• Genel kullanıcılar için en yetkisiz rol
• Login, Rol yaratma gibi güvenlik işleri
• Sunucu temelli ayarlamalar (veritabanını açıp,
kapatabilme yetkisi)
• Birbirine bağlı sunucuların kurulumu ve idaresi
(SQL Server Replication)
• Tüm işleri yapabilen en yetkili rol (sa kullanıcısı bu
rolün üyesidir)
7
Sabit Veritabanı Rolleri
• Kullanıcı yaratır, yetki verir
• Yedek (backup) alır
• Tüm tablolardaki verileri sorgulayabilir
• Tüm tablolar üzerinde değişiklik (DML
işlemleri) yapabilir
• Veritabanında DDL işlemleri yapabilir
• Hiçbir tabloyu sorgulayamaz
• Hiçbir tablo üzerinde değişiklik yapamaz
• Tüm yapılandırma ve bakım işlemlerini
yapar
• Rol üyelikleri ve yetkilendirme işlemlerini
yapar
8
Rol Yaratma
• Geçeli veritabanında bir rol yaratmak için:
CREATE ROLE rol_adı
[AUTHORIZATION kullanıcı_adı]
• Seçimlik olarak kullanılabilen AUTHORIZATION
ile rolün sahibi olacak kullanıcı belirlenir. Eğer
kullanılmazsa rolü yaratan kullanıcı sahibi olur.
• Rolü yaratacak olan kullanıcıda CREATE
ROLE yetkisi veya db_securityadmin sabit
veritabanı rolüne üyelik olması gereklidir.
9
Role Kullanıcı Ekleme
• Rollere kullanıcıları üye yapmak veya üyelikten
çıkarmak için ALTER ROLE komutu kullanılır.
CREATE ROLE yeniRol;
ALTER ROLE yeniRol ADD MEMBER Altan;
ALTER ROLE yeniRol DROP MEMBER Altan;
• Rollere üye olarak başka bir kullanıcı tanımlı
veritabanı rolü de atanabilir (sabit veritabanı
rolleri üye olarak atanamaz).
ALTER ROLE public ADD MEMBER yeniRol;
Yukarıdaki kod ile public rolünün sahip olduğu tüm yetkilere yeniRol de sahip
olur. Dolayısıyla yeniRol'e üye olan herkes te public yetkilerine sahip olur.
10
Yetkiler
• Kullanıcı veya Rol yaratıldıktan sonra veritabanı
üzerinde neleri yapıp neleri yapamayacaklarını
belirlemek için yetkiler verilir.
• Bu işlemler için kullanılan aşağıdaki 3 komut DCL
(Data Control Language) komutları olarak bilinir:
– GRANT komutu ile yetki verilir (kullanıcı veya rol
üyelerinin yapabilecekleri belirlenir)
– DENY komutu ile kısıtlama tanımlanır (kullanıcı veya
rol üyelerinin yapamayacakları belirlenir)
– REVOKE komutu ile verilen yetki ve tanımlanan
kısıtlamalar geri alınır.
11
GRANT ile yetki verme
• Genel kullanım aşağıdaki gibidir:
GRANT <yetki> ON <nesne> TO <user, login, rol>
• "yeniRol" rolüne tablo yaratma yetkisi verilmesi:
GRANT CREATE TABLE TO yeniRol
• Nesneler üzerinde yetki verilirken ON kullanılır.
Dersler tablosu üzerinde değişiklik yapabilme
(DML işlemleri) yetkisinin Ali, Ahmet ve Mehmet
kullanıcılarına verilmesi:
GRANT INSERT, DELETE, UPDATE
ON Dersler TO Ali, Ahmet, Mehmet
Eğer bu 3 kişiye db_datawriter sabit rolünü verdiyseniz,
zaten tüm tablolar üzerinde DML işlemleri yapabilirler.
12
DENY ile kısıtlama tanımlama
• Kullanıcının belirli bir role atanması ile üzerine
aldığı yetkilerden bazılarını engellemek için
DENY ile kısıtlama getirebiliriz.
• Kullanımı GRANT ile benzerdir:
DENY CREATE TABLE TO Hasan, Ali
• Ali ve Mehmet'in Notlar tablosunu
sorgulamasını engellemek için:
DENY SELECT ON Notlar TO Ali, Mehmet
13
REVOKE ile yetkiyi geri alma
• Hem GRANT ile verilen yetkilerin, hem de
DENY ile tanımlanan kısıtlamaların geri
alınması için kullanılır.
• Kullanım olarak yine GRANT ve DENY'a benzer,
fakat TO yerine FROM kullanılır:
REVOKE CREATE TABLE FROM yeniRol
REVOKE SELECT ON Hocalar FROM Altan
14
Management Studio üzerinde kullanıcı işlemleri
Aynı anda birden fazla
login ile bağlantı açılabilir
• Login ve Sunucu Rolleri sunucunun Security düğümü altındadır
• Kullanıcılar, Şemalar ve Veritabanı Rolleri ise ilgili veritabanının
Security düğümü altındadır
• Her VT'de olan dbo (database owner) kullanıcısı sa (system
administrator) login ismi ile bağlanır.
• Kullanıcı, Rol, Şema ve Login yaratma işlemleri ilgili düğümlerde
sağ tıklama ve "New …" seçimi ile açılan pencerede gerekli
alanları doldurma yolu ile yapılabilir.
15
Kullanıcı özellikleri üzerinden yetki verme
General: varsayılan
şema değiştirilir
Owned Schemas:
Şema sahiplikleri
ayarlanır
Membership: Rol
üyellikleri ayarlanır
Search + All objects of the types + Tables
kullanılırsa Securables listesinde tablolar
listelenir. Seçilen tabloda ilgili yetki için
aşağıda Grant/Deny tıklanır. "With Grant"
seçili ise aldığı yetkiyi başkasına da verebilir.
16
Download

SQL Server`da Kullanıcı Yönetimi - Altan MESUT