Berikan akses ke semua tabel database

13

Saya baru-baru ini ingin berbagi hak akses reguler dengan satu pengguna server dan saya menyadari bahwa perintah sederhana CREATE USERdan GRANT ALL ON DATABASEtidak membiarkannya menjalankan SELECTdata sederhana .

Saya ingin memberikan hak ke semua tabel dari database yang diberikan kepada pengguna tertentu, tetapi saya tidak yakin apakah itu ide terbaik untuk memberinya akses ke seluruh skema publickarena saya tidak tahu apakah itu akan memberikan semacam hak istimewa. eskalasi. Apakah ada cara lain?

d33tah
sumber
Kenapa kamu tidak bisa begitu saja GRANT SELECT ON TableName TO [Domain\User]? Saya biasanya hanya menetapkan pengguna ke db_datareaderperan jika yang mereka butuhkan adalah akses baca ke semua tabel tapi saya tidak yakin seberapa terperinci yang Anda inginkan.
Kris Gruttemeyer
Saya ingin memberikan semua CRUD ke semua tabel dalam database. Juga, MENGHENTIKAN dan MENCIPTAKAN bagian dalam basis data ini juga bisa terbukti bermanfaat.
d33tah

Jawaban:

19

Hak istimewa DATABASEhanya pada pemberian hak koneksi umum ke database dan tidak lebih. Seorang pengguna dengan hak istimewa itu hanya bisa melihat apa yang masyarakat umum boleh lihat.

Untuk memberikan akses baca ke semua tabel , Anda juga memerlukan hak istimewa pada semua skema dan tabel:

GRANT USAGE ON SCHEMA public TO myuser; -- more schemas?
GRANT SELECT ON ALL TABLES IN SCHEMA public TO myuser;

Anda mungkin juga ingin mengatur hak default untuk skema dan tabel di masa depan . Jalankan untuk setiap peran yang menciptakan objek di db Anda

ALTER DEFAULT PRIVILEGES FOR ROLE mycreating_user IN SCHEMA public
GRANT SELECT ON TABLES TO myuser;

Tetapi Anda benar-benar perlu memahami keseluruhan konsep terlebih dahulu.
Dan hampir selalu lebih baik untuk menggabungkan hak istimewa dalam peran grup dan kemudian memberikan / mencabut peran grup ke / dari peran pengguna. Terkait:

Erwin Brandstetter
sumber
Apakah myusrsalah ketik? Bukankah seharusnya begitu myuser?
attomos
1
@attomos: Seharusnya pengguna yang berbeda dalam contoh. Saya mengklarifikasi.
Erwin Brandstetter