SQL User Without Login Nedir

24 Nis by NURULLAH ÇAKIR

SQL User Without Login Nedir

SQL Server 2005 ile beraber gelen bir user çeşididir. Login olmadan sadece veritabanı seviyesinde oluşturulan bir user’dır. Application Role’lerin yerine gelmiştir. “Application Role Nedir” isimli makalemi okumak isteyebilirsiniz.

 

 

Genellikle login ve şifre bilgileri uygulama içersinde connection string’e yazılır ve tüm uygulamacılar aynı kullanıcı adı ve şifreyi kullanır. Bir uygulamacı işten ayrıldığında bu yüzden şifrenin değiştirilip connection string’de de değiştirilmesi gerekir. SQL User Without Login ile login olmadan bir user oluşturuyoruz ve bu user’a gerekli yetkileri veriyoruz. Daha sonra uygulama veritabanına bağlanmak isteyen uygulamacılara bu user üzerinden impersonete etme hakkı(yani bu user’mış gibi davranma hakkı) veriyoruz. Uygulamacılarda bu user’ı kullanarak veritabanında gerekli işlemlerini yapabiliyorlar. Bir örnek yaparak konuyu netleştirelim.

 

Öncelikle Instance üzerinde LoginOrnegi isminde bir login oluşturarak Test veritabanında sadece public yetkisi verelim.

 

USE [master]
GO
CREATE LOGIN [LoginOrnegi] WITH PASSWORD=N'Abc123', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=ON
GO
USE [Test]
GO
CREATE USER [LoginOrnegi] FOR LOGIN [LoginOrnegi]
GO

 

Oluşturduğumuz bu kullanıcı ile Test veritabanında bir tabloya aşağıdaki gibi select atmaya çalıştığımızda hata alacağız.

Veritabanı üzerinde db_owner yetkisi olan ve login’i olmayan bir user(sql user without login) oluşturalım. Test veritabanında Security semesinde Users’a sağ tıklayarak New User… diyoruz.

User type: kısmından SQL user without login seçeneğini seçerek User name: kısmından oluşturacağımız user’a bir isim veriyoruz ve Default schema: kısmından da bu user’ın default olarak kullanacağı şema bilgisini seçiyoruz.

Membership kısmına gelerek veritabanı üzerinde bu user’a db_owner hakkını veriyoruz. Eğer isterseniz Owned Schemas ve Securables kısmından farklı, daha spesifik yetkiler de verebilirsiniz.

Login olmadan Test veritabanında db_owner yetkisine sahip bir user oluşturduk. Şimdi bu user üzerinden daha önce oluşturduğumuz login’e impersonate etme hakkını verelim.

 

GRANT IMPERSONATE ON USER::sqluserwithoutlogin TO LoginOrnegi

 

Gerekli yetkiyi verdikten sonra LoginOrnegi isimli login ile aşağıdaki şekilde tekrar select işlemi gerçekleştirdiğinizde hata almadığınızı göreceksiniz.

 

USE TEST
Execute As User='sqluserwithoutlogin'
GO
SELECT * FROM [Test].[dbo].[IdentitiyOrnekTablo]

 

Login olmadan veritabanına bağlanmanın başka bir yolu da veritabanını Contained yapıya dönüştürmektir. “Contained Database Nedir” isimli makalemi okumak isteyebilirsiniz.

Loading

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir