Perbedaan antara Pengguna dan Login di SQL Server

178

Saya baru-baru ini berlari ke banyak area berbeda dari SQL Server yang biasanya saya tidak main-main. Salah satunya yang membuat saya bingung adalah area Login dan Pengguna. Sepertinya itu harus menjadi topik yang cukup sederhana ...

Tampaknya setiap login hanya dapat memiliki 1 pengguna dan setiap pengguna hanya dapat memiliki 1 login.

Login dapat dikaitkan dengan beberapa tabel sehingga menghubungkan pengguna itu ke banyak tabel.

Jadi pertanyaan saya adalah mengapa bahkan memiliki login dan pengguna? mereka tampaknya cukup banyak satu hal yang sama. Apa perbedaannya, atau apa yang sepertinya saya lewatkan?

corymathews
sumber

Jawaban:

202

"Login" memberikan entri utama ke SERVER.

"Pengguna" memberikan entri masuk ke DATABASE tunggal.

Satu "Login" dapat dikaitkan dengan banyak pengguna (satu per basis data).

Setiap objek di atas dapat memiliki izin yang diberikan padanya pada levelnya sendiri. Lihat artikel berikut untuk penjelasan masing-masing

Scott Ivey
sumber
7
Ah tidak heran saya tidak dapat menemukan perbedaan. Saya hanya bekerja dengan 1 database. Terima kasih.
corymathews
3
Jawaban ini pada dasarnya benar, tetapi seperti yang saya pahami, pengguna tertentu sebenarnya dapat diberikan akses ke lebih dari satu database yang tersedia di server tertentu. Jadi login-ke-pengguna adalah pemetaan 1-ke-1, tetapi pengguna-ke-basis data adalah pemetaan 1-ke-banyak.
andrew pate
1
@coreymathews: Lebih sedikit waktu di "Boy Meets World" dan lebih banyak waktu di buku! ;).
MSIS
Tetapi sekarang MSDN merekomendasikan jenis pengguna "Pengguna yang mengotentikasi pada basis data" (Disarankan untuk membantu membuat basis data Anda lebih portabel). Tautan: docs.microsoft.com/en-us/sql/t-sql/statements/… Apakah ini lebih baik daripada tipe pengguna tradisional?
Sheen
32

Salah satu alasan untuk memiliki keduanya adalah agar otentikasi dapat dilakukan oleh server database, tetapi otorisasi dapat dicakup ke dalam database. Dengan begitu, jika Anda memindahkan basis data ke server lain, Anda selalu dapat memetakan kembali hubungan pengguna-masuk di server basis data, tetapi basis data Anda tidak harus berubah.

Tom Resing
sumber
Bisakah Anda jelaskan? Apa keuntungan dari perubahan yang dilakukan pada server database daripada pada database?
HeyJude
Katakanlah Anda ingin membuat cadangan dan memulihkan basis data. Pemulihan sering dilakukan pada server baru. Anda mungkin tidak ingin harus membuat perubahan ke database dalam pemulihan.
Tom Resing
Mengapa tidak melakukan perubahan saja setelah database dipulihkan?
HeyJude
1
Ada video 60 detik yang bagus tentang topik di SQLAuthority untuk informasi lebih lanjut blog.sqlauthority.com/2014/07/16/…
Tom Resing
1
@ HeyJude Berarti server berkaitan dengan Otentikasi sesuatu yang harus dilakukan database jika bukan karena login dan pemisahan pengguna.
Zaid Khan
25

Saya pikir ada posting blog MSDN yang sangat bagus tentang topik ini oleh Laurentiu Cristofor:

Hal penting pertama yang perlu dipahami tentang keamanan SQL Server adalah bahwa ada dua bidang keamanan yang terlibat - server dan database. Ranah server mencakup beberapa ranah basis data. Semua pekerjaan dilakukan dalam konteks beberapa basis data, tetapi untuk dapat melakukan pekerjaan tersebut, seseorang harus terlebih dahulu memiliki akses ke server dan kemudian memiliki akses ke database.

Akses ke server diberikan melalui login. Ada dua kategori utama login: SQL Server otentikasi login dan Windows otentikasi login. Saya biasanya akan merujuk pada ini menggunakan nama pendek dari login SQL dan login Windows. Login Windows yang diautentikasi dapat dipetakan ke pengguna Windows atau login ke grup Windows. Jadi, untuk dapat terhubung ke server, seseorang harus memiliki akses melalui salah satu dari jenis atau login ini - login menyediakan akses ke ranah server.

Tetapi login tidak cukup, karena pekerjaan biasanya dilakukan dalam database dan database adalah ranah yang terpisah. Akses ke database diberikan melalui pengguna.

Pengguna dipetakan ke login dan pemetaan dinyatakan oleh properti SID login dan pengguna. Login masuk ke pengguna dalam database jika nilai SID mereka identik. Bergantung pada jenis login, karena itu kami dapat memiliki kategorisasi pengguna yang meniru kategorisasi di atas untuk login; jadi, kami memiliki pengguna SQL dan pengguna Windows dan kategori yang terakhir terdiri dari pengguna yang dipetakan ke login pengguna Windows dan pengguna yang dipetakan ke login grup Windows.

Mari kita mundur selangkah untuk ikhtisar cepat: login menyediakan akses ke server dan untuk lebih lanjut mendapatkan akses ke database, pengguna yang dipetakan ke login harus ada dalam database.

itulah tautan ke pos lengkap.

David Leitner
sumber
Posting blog ini telah dihapus :(
Steven Schlansker
23

Pendeknya,

Info masuk akan memiliki akses ke server.

dan

Pengguna akan memiliki akses ke basis data.

Vikrant Kedari
sumber
6

Saya pikir ini adalah pertanyaan yang sangat berguna dengan jawaban yang bagus. Hanya untuk menambahkan dua sen saya dari halaman MSDN Buat Login :

Login adalah prinsip keamanan, atau entitas yang dapat diautentikasi oleh sistem yang aman. Pengguna memerlukan login untuk terhubung ke SQL Server. Anda bisa membuat login berdasarkan prinsip Windows (seperti pengguna domain atau grup domain Windows) atau Anda bisa membuat login yang tidak didasarkan pada prinsip Windows (seperti login SQL Server).

Catatan:
Untuk menggunakan Otentikasi SQL Server, Mesin Database harus menggunakan otentikasi mode campuran. Untuk informasi lebih lanjut, lihat Memilih Mode Otentikasi.

Sebagai prinsip keamanan, izin dapat diberikan untuk login. Cakupan login adalah seluruh Mesin Basis Data. Untuk menyambung ke database tertentu pada contoh SQL Server, login harus dipetakan ke pengguna database. Izin di dalam basis data diberikan dan ditolak untuk pengguna basis data, bukan login. Izin yang memiliki cakupan seluruh contoh SQL Server (misalnya, izin CREATE ENDPOINT) dapat diberikan untuk login.

ilmatte
sumber
3
Ini sedikit lebih jelas jika Anda menempatkan >di awal setiap paragraf dalam kutipan sehingga diformat sebagai kutipan.
Sam
2
Ini sangat berguna. Meskipun saya telah mengatur pengguna dan login dengan benar, sistem tidak diatur untuk mengizinkan otentikasi login SQL Server. Mengapa saya bisa membuat login SQL Server ketika server tidak mengizinkan mereka untuk login ada di luar jangkauan saya!
Tandai Irlandia
Saya bingung dengan ini juga. jika server saat ini tidak dalam mode campuran maka saya akan mengharapkan server untuk hanya melemparkan kesalahan saat mencoba membuat login SQL Auth, yang setidaknya akan memberikan petunjuk kepada pengguna yang menunjukkan bahwa mereka harus terlebih dahulu mengaktifkan otentikasi mode Campuran.
arunsun
1

Grafik saat masuk / pengguna dari MS sql-docs

masukkan deskripsi gambar di sini

frmbelz
sumber