Merhaba,
Sql Server’da kullanıcı oluşturduğunuzda default olarak sadece server role de ve user mapping üzerinden verilen veritabanı rollerinde public seçeneği işaretlidir.Bu da sadece sql server a bağlanabilmenize ve hangi veritabanları var onları görmenize izin verir.İlk olarak Agent Servis kullanım hakkı nasıl verilir,ikinci olarak da şirketteki departmanlara göre kullanıcıların görebildikleri veritabanları nasıl kısıtlanır onu göreceğiz.
1-Sql Server Agent Servisinin Kullanımına İzin Verilmesi
Sql Server üzerinde job’ların çalıştırıldığı servis olan Agent Servis’i kullanabilmek içinde sql server ı kullanan kullanıcının da yetkisi olması gerekmektedir.Job larınız çalışmadığında oturum açtığınız kullanıcının yetkisinin olmadığını da göreceksiniz zaten.
Windows Login olarak eklediğim kullanıcıya henüz veritabanı ve sunucu seviyesinde bir yetki vermedim.Dolayısıyla herhangi bir veritabanına erişim sağlayamamakla birlikte job lar ı tanımlayabileceği agent servis i de çalıştıramamakta.
“sa” ile bağlandığımız instance üzerinde loginlerden,windows login ile bağlanan kullanıcımıza kullanması gereken veritabanları için şimdilik okuma-yazma rolleri ile msdb sistem veritabanında da şekildeki sql server agent larını ilgilendiren yetkileri veriyoruz.Ok deyip,windows login hesabı ile bağlanılan instance ı yeniliyoruz.
Sql Server Agent’ları kullanabilme yetkisi ile artık erişebiliyor kullanıcı.
2-Veritabanı Listesinin Kısıtlanması
Public olarak gelen veritabanı rolü,server daki tüm database leri görmemizi sağlar.Sistem veritabanlarından denydatareader yada denydatawriter dersek onlarında sadece isimlerini görür,onun dışında sadece sistem veritabanlarının içini görebilir.
“Northwindci” isimli bir kullanıcı oluşturuyoruz ve sadece Northwind veritabanı üzerinde okuma yetkisi veriyoruz.
Resimde de görüldüğü gibi AdventureWorks departmanındaki veritabanını açamıyor,açamıyorsa orda görünmesininde bir anlamı olmadığını düşünmüşler ve bunu göstermemek için şöyle bir yol izliyoruz.Public rolü ile gelen “view any database” yetkisi kaldırılarak yetkili olduğu veritabanının gösterimi sağlanmaktadır.
Yetkiyi kaldırdık şuan sistem veritabanları hariç hiçbir veritabanını görememektedir.Okuma yetkini verdiğimiz Northwndci kullanıcısının açtığı server’da Northwind veritabanında “owner” yetkisi vererek sadece onu görebilmesi de şu query ile sağlanmaktadır.
Kullanıcıyı önce düşürdük,sonra “change db owner” store procedure ü yardımıyla owner olarak tekrar atadık,daha önce yetki verilmiş bir kullanıcıya aynı zamanda owner olma özelliğini atayamayız.Query çalıştıktan sonra yenilediğimizde sadece sistem veritabanları ve owner özelliğini verdiğimiz veritabanını görebilmektedir.
Bir sonraki yazımızda görüşmek üzere..