Birden çok sunucu oturum açma bilgisini bir veritabanı kullanıcısıyla eşleme


11

Bu aptalca bir soru gibi görünüyor, ancak bazı araştırmalara rağmen sadece bu konuda herhangi bir bilgi bulamadım (muhtemelen yanlış terminolojiden dolayı).

Tek bir veritabanı kullanıcısına (bir veritabanı rolünün üyesi olarak atanmış izinleri vardır) birden çok sunucu oturum açma (sql server kimlik doğrulaması) günlüğe kaydedilebilir mi?

Merkezi bir veritabanından bir ayarı okumak için gereken onlarca sql oturum açma (sql server kimlik doğrulaması) var ve daha ziyade her oturum açma için kendi DB kullanıcı oluşturmak yerine tüm bu girişleri hedef veritabanında tek bir DB kullanıcı eşleştirmek istiyorum.

Evetse, doğru T-SQL sözdizimi ne olurdu?


"Sunucu oturum açma" derken Windows hesapları mı yoksa SQL sunucusu hesapları mı demek istersiniz?
Phil Sumner

SQL sunucu hesapları hakkında konuşuyorum.
Açıklığa

Bir ROLErol oluşturup ardından kullanıcıları role eklemeye ne dersiniz? Bu şekilde rol için izin verirsiniz. Bu, güvenliği daha iyi yönetmenize yardımcı olacaktır. Ayrıca, sql sunucusu sürümü nedir - 2008R2, 2012?
Kin Shah

Yanıtlar:


19

İlk önce terminolojiden emin olun. Oturum Açma, örnek düzeyinde bir güvenlik sorumlusudur ( sys.server_principals) ve Kullanıcı, veritabanı düzeyinde bir güvenlik sorumlusudur ( sys.database_principals). Bir SID (güvenlik tanımlayıcısı) ile birleştirilirler. Yukarıdaki sistem görünümlerine bakarsanız, bunların SID ile 1: 1 biçiminde nasıl birleştirildiklerini görebilirsiniz. Bu 1 Veritabanında 1 Kullanıcı için oturum açın. Bir Giriş'in birden fazla Kullanıcısı olabilir, ancak farklı veritabanlarında olması gerekir.

Bu nedenle, veritabanına erişmek istediğiniz her Giriş için bir Kullanıcı oluşturmanız gerekir. Yeterince basit bir komut.

CREATE USER [UserName] FROM LOGIN [LoginName]

Oradan tüm kullanıcılarınızı tek bir (veya çoklu) Rol'e koyabilirsiniz. Rol, izinleri olan ve bu izinleri her Kullanıcı (veritabanı rolleri için) veya Oturum Açma (örneğin roller) ile paylaşan bir kapsayıcıdır. Veritabanındaki db_datareaderher tabloya ve görünüme okuma erişimi veren yerleşik bir veritabanı rolü vardır . Tüm kullanıcılarınızı bu role ekleyebilirsiniz. Bununla birlikte, daha iyi bir fikir yeni bir rol oluşturmak ve rolüne eklemek olacaktır db_datareader. Ardından, tüm kullanıcılarınızı yeni role ekleyin. Buradaki avantaj, gruba ek izinler eklemek isterseniz, rol üzerindeki izinleri değiştirerek yapabilmenizdir.

Rolü şu yolla oluşturun:

CREATE ROLE RoleName

Bir role (veya bir rolü diğerine) kullanıcı ekleme

EXEC sp_addrolemember 'RoleName','UserName'

veya 2012 veya daha üstündeyseniz

ALTER ROLE [RoleName] ADD MEMBER [UserName]

Ayrıntılı açıklama ve arka plan bilgisi sağlamak için teşekkür ederim Kenneth, hakkında net değildi That's 1 Login to 1 User in a database.
leepfrog
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.