Biasanya ketika saya membuat prosedur tersimpan saya menggunakan yang berikut ini sebagai templat pengurutan
Create procedure <procedurename>
<@param1 <type>, @param2 <type>, etc..>
as begin
<procedure>
end
Apakah ada cara untuk menyertakan pemberian izin eksekusi hanya pada prosedur tersimpan itu sementara saya melakukannya?
Misalnya seperti ...
Grant execute [User_Execute]
... tetapi hanya untuk prosedur tersimpan ini?
Saya telah melihat beberapa pertanyaan serupa lainnya tetapi semuanya merujuk pada SEMUA prosedur yang tersimpan dan bukan hanya satu, saya juga belum melihat satu di mana Anda dapat menentukan izin di dalam create procedure
skrip. Bahkan jawaban tentang bagaimana saya dapat mengatur izin tanpa GUI untuk prosedur tersimpan tertentu akan diterima.
Sunting Jawaban teratas tentu menunjuk saya ke arah yang benar, ini pada dasarnya adalah apa yang saya cari, saya tidak berpikir tentang batching perintah yang akhirnya saya lakukan, batching perintah bersama dengan prosedur tersimpan saya. Ngomong-ngomong, saya pikir ini cukup apik.
Create procedure <procedurename>
<@param1 <type>, @param2 <type>, etc..>
as begin
<procedure>
end
GO
GRANT EXECUTE ON <procedurename> to <username>
GO
sumber
Jawaban:
sumber
truncate table Menetapkan izin pada objek seperti prosedur tersimpan dapat dilakukan dengan:
Namun, Anda mungkin juga ingin memberikan hak keamanan di tingkat login dan pengguna. Anda akan ingin menentukan dan memberikan HANYA hak yang diperlukan untuk objek yang membutuhkan akses (seperti eksekusi). Pertimbangkan penggunaan
EXECUTE AS
kemampuan yang memungkinkan peniruan pengguna lain untuk memvalidasi izin yang diperlukan untuk mengeksekusi kode TANPA harus memberikan semua hak yang diperlukan untuk semua objek yang mendasarinya (misalnya tabel).EXECUTE AS
dapat ditambahkan ke prosedur tersimpan, fungsi, pemicu, dll.Tambahkan ke kode sebagai berikut tepat di dalam Prosedur Tersimpan:
Dalam hal ini Anda menyamar sebagai pemilik modul yang dipanggil. Anda juga dapat menyamar sebagai DIRI, ATAU pengguna membuat atau mengubah modul ATAU ... melangsungkan penelepon, yang akan memungkinkan modul untuk mengambil izin dari pengguna saat ini, ATAU ... meniru PEMILIK, yang akan mengambil izin dari pemilik prosedur yang disebut ATAU ... menyamar sebagai 'user_name', yang akan menyamar sebagai pengguna tertentu ATAU ... menyamar menjadi 'login_name' dengan akan menyamar sebagai login tertentu.
PALING, Anda hanya perlu memberikan
EXECUTE
hak kepada procs yang disimpan dan kemudian hak diberikan kepada semua objek yang dirujuk dalam proc yang disimpan.Dengan cara ini, Anda TIDAK perlu memberikan hak tersirat (misalnya: untuk memperbarui data atau memanggil procs tambahan). Chaining kepemilikan menangani ini untuk Anda. Ini sangat membantu untuk sql dinamis atau jika Anda perlu membuat tugas keamanan yang ditinggikan seperti
CREATE TABLE
.EXECUTE AS
adalah alat yang berguna untuk dipertimbangkan.Contoh ini dapat membantu memperjelas semua ini:
Buat pengguna bernama NoPrivUser dengan akses publik ke basis data (mis. Dbadb):
CATATAN: PENCIPTA ATAU PEMILIK PROSEDUR INI AKAN MEMERLUKAN HAK TABEL dalam database target.
Dengan
EXECUTE AS
klausa prosedur tersimpan dijalankan di bawah konteks pemilik objek. Kode ini berhasil dibuatdbo.MyTable
dan baris berhasil dimasukkan. Dalam contoh ini, penggunaNoPrivUser
sama sekali tidak memiliki hak yang diberikan untuk memodifikasi tabel, atau membaca atau memodifikasi data apa pun dalam tabel ini.Hanya dibutuhkan hak yang diperlukan untuk menyelesaikan tugas khusus ini yang diberi kode DALAM konteks prosedur ini.
Metode menciptakan prosedur tersimpan yang dapat melakukan tugas-tugas yang memerlukan hak keamanan yang tinggi tanpa secara permanen menetapkan hak-hak itu menjadi sangat berguna.
sumber
pilih login basis data -> Pergi ke Securable dan klik tombol Cari seperti pada gambar sebelumnya. Pada mengklik tombol Cari, Anda akan menemukan dia mengikuti jendela untuk menambahkan jenis objek.
Klik tombol Jenis Objek dan Anda akan mendapatkan jendela "Pilih Jenis Objek" dengan berbagai objek. Sekarang jika Anda melihat, prosedur tersimpan terdaftar di area jenis objek. Sekarang kita akan memilih prosedur tersimpan khusus kami yang ingin kami beri izin.
sumber