Memetakan beberapa login server ke satu pengguna basis data

11

Ini sepertinya pertanyaan yang bodoh, tetapi meskipun saya telah melakukan beberapa penelitian, saya tidak dapat menemukan informasi mengenai hal ini saja (mungkin karena menggunakan terminologi yang salah).

Apakah mungkin untuk login beberapa login server (otentikasi server sql) ke pengguna database tunggal (yang memiliki izin yang ditetapkan dengan menjadi anggota peran database)?

Saya memiliki lusinan login sql (otentikasi server sql) yang perlu membaca satu pengaturan dari database pusat dan saya lebih suka memetakan semua login ini ke pengguna DB tunggal dalam database target daripada membuat pengguna DB sendiri untuk setiap login.

Jika ya, apa yang akan menjadi sintaks T-SQL yang benar?

leepfrog
sumber
Ketika Anda mengatakan "log masuk server" maksud Anda akun Windows atau akun server SQL?
Phil Sumner
Saya berbicara tentang akun server SQL. Akan mengedit pertanyaan untuk diklarifikasi
leepfrog
Bagaimana kalau Anda membuat ROLEdan kemudian menambahkan pengguna ke peran. Dengan cara ini Anda hanya memberikan izin untuk peran tersebut. Ini akan membantu Anda mengelola keamanan dengan cara yang lebih baik. Juga, apa versi server sql - 2008R2, 2012?
Kin Shah

Jawaban:

19

Pertama untuk memastikan terminologi. Login adalah prinsip keamanan tingkat instance ( sys.server_principals) dan Pengguna adalah prinsip keamanan tingkat database ( sys.database_principals). Mereka bergabung bersama oleh SID (pengidentifikasi keamanan). Jika Anda melihat tampilan sistem di atas, Anda dapat melihat bagaimana mereka digabungkan bersama dalam format 1: 1 oleh SID. Itu 1 Login ke 1 Pengguna dalam database. Login dapat memiliki beberapa Pengguna tetapi mereka harus di database yang berbeda.

Jadi, Anda harus membuat Pengguna di basis data Anda untuk setiap Login yang ingin Anda akses. Ini perintah yang cukup sederhana.

CREATE USER [UserName] FROM LOGIN [LoginName]

Dari sana Anda dapat menempatkan semua pengguna Anda ke dalam Peran tunggal (atau banyak). Peran adalah wadah yang memiliki izin dan membagikan izin tersebut dengan setiap Pengguna (untuk peran basis data) atau Masuk (misalnya peran). Ada built in peran basis data yang disebut db_datareaderyang memberikan akses baca ke setiap tabel dan tampilan dalam database. Anda bisa menambahkan semua pengguna Anda ke peran itu. Namun, ide yang lebih baik adalah menciptakan peran baru dan menambahkannya ke db_datareaderperan tersebut. Kemudian tambahkan semua pengguna Anda ke peran baru. Manfaatnya di sini adalah jika Anda ingin menambahkan izin tambahan ke grup, Anda dapat dengan hanya mengubah izin pada peran tersebut.

Buat peran dengan:

CREATE ROLE RoleName

Tambahkan pengguna ke peran (atau satu peran ke peran lain)

EXEC sp_addrolemember 'RoleName','UserName'

atau jika Anda berada di tahun 2012 atau lebih tinggi

ALTER ROLE [RoleName] ADD MEMBER [UserName]
Kenneth Fisher
sumber
Terima kasih untuk penjelasan terperinci dan untuk memberikan informasi latar belakang Kenneth, yang tidak jelas tentang saya adalah That's 1 Login to 1 User in a database.
leepfrog