Apakah ada perbedaan antara memberikan SELECT pengguna dan menambahkannya ke peran db_datareader?

9

Saya diminta untuk memberikan SELECT, INSERTdan UPDATEkepada pengguna yang diberikan untuk semua tabel dalam database. Saya akhirnya menambahkan pengguna ke db_datareaderdan memberi mereka INSERTdan UPDATEdi tingkat database.

Tapi itu membuat saya berpikir, apa bedanya (jika ada) antara memberikan SELECTizin pengguna di tingkat basis data, atau menambahkannya ke db_datareaderperan? Dan apakah ada praktik terbaik dengan satu atau lain cara?

Kenneth Fisher
sumber

Jawaban:

7

Rick Byham memiliki pos WIKI yang menunjukkan peran server tetap dan basis data tetap dan cara mereka memetakan. Anda dapat melihat di sini: http://social.technet.microsoft.com/wiki/contents/articles/database-engine-fixed-server-and-fixed-database-roles.aspx

Bagan menunjukkan bahwa peran db_datareader identik dengan GRANT SELECT ON [database]. Jadi masih bagus untuk digunakan, tetapi rekomendasinya adalah untuk beralih dari peran tersebut ke perintah yang lebih terperinci. Beberapa peran basis data tetap lainnya kurang didefinisikan dengan jelas bagi kebanyakan orang. Menggunakan perintah eksplisit menghasilkan kejelasan yang lebih besar saat melaporkan hak.

Jelas Anda tahu cara memberikan izin berbutir halus. Saya mencoba melepaskan diri dari peran lama kapan pun memungkinkan, tetapi db_owner (misalnya) adalah kebiasaan yang sulit untuk dihilangkan.

RLF
sumber