Memahami izin SQL Server

8

Saya rooting di dalam SQL Server Management Studio terhadap contoh saya dari SQL Server 2008 R2 Express Edition. Saya mencoba memahami cara kerja izin.

Apa yang dapat saya lihat adalah (melalui properti dari banyak entitas ini)

  1. Login Server Saya dapat ditautkan ke Pengguna Database
  2. Pengguna Database Saya dapat memiliki satu atau lebih peran Database
  3. Salah satu Peran Basis Data adalah db_datawriter yang memiliki skema db_datawriter

Namun pada saat itu jalannya menjadi dingin. Skema db_datawriter memiliki halaman izin di bawah propertinya yang kosong.

Apa yang menentukan dengan tepat apa yang dimaksud dengan izin skema db_datawriter?

akc42
sumber

Jawaban:

7

db_datawriter tidak memiliki item di halaman izin karena tidak memiliki izin objek eksplisit seperti itu. Hak tersirat oleh peran.

MSDN untuk db_datawriter berkata

Anggota peran basis data tetap db_datawriter dapat menambahkan, menghapus, atau mengubah data di semua tabel pengguna.

Ini memiliki INSERT, UPDATE, DELETE pada tabel sesuai dengan halaman MSDB lainnya Izin Peran Database Tetap

Diberikan: HAPUS, INSERT, PEMBARUAN

Akhirnya, apa kata mesin DB (SQL Server 2008 R2)?

EXEC sp_dbfixedrolepermission 'db_datawriter'

db_datawriter   DELETE permission on any object
db_datawriter   INSERT permission on any object
db_datawriter   UPDATE permission on any object

Halaman MSDN untuk SQL Server 2008 ada di sini (hierarki halaman berbeda)

gbn
sumber
Saya pikir apa yang diminta OP adalah tentang izin pada skema, bukan peran tetap db. Kecuali saya salah membaca itu?
Thomas Stringer
@ Surfer513: skema ini adalah placeholder untuk peran itu, ia tidak memiliki izin
gbn
Ah, oke saya mengerti. Terima kasih telah membereskan kesalahpahaman!
Thomas Stringer
Saya sebenarnya mencoba mencari tahu apakah db_datawriter memberi Anda hak untuk menulis melalui tampilan. Saya pikir jawabannya adalah bahwa Anda bisa jika Anda memiliki izin di tabel yang mendasarinya (dan memenuhi persyaratan lain hanya memasukkan ke satu tabel). Kegagalan saya untuk menulis ternyata menjadi masalah dengan kolom identitas dan gagal pada tabel yang mendasarinya
akc42