Bagikan melalui


Tautan dalam Keamanan Integrasi CLR

Bagian ini menjelaskan bagaimana potongan kode pengguna dapat saling memanggil di SQL Server, baik dalam Transact-SQL atau dalam salah satu bahasa terkelola. Hubungan antar objek ini disebut sebagai tautan.

Tautan pemanggilan sesuai dengan pemanggilan kode, baik dari pengguna yang memanggil objek (seperti Transact-SQL batch yang memanggil prosedur tersimpan), atau prosedur atau fungsi tersimpan runtime bahasa umum (CLR). Tautan pemanggilan menyebabkan EXECUTE izin pada penerima panggilan diperiksa.

Tautan akses tabel sesuai dengan mengambil atau memodifikasi nilai dalam tabel, tampilan, atau fungsi bernilai tabel. Mereka mirip dengan tautan pemanggilan, kecuali bahwa mereka memiliki kontrol akses yang lebih halus dalam hal izin SELECT, INSERT, UPDATE, dan DELETE.

Tautan terjaga berarti bahwa selama eksekusi, izin tidak diperiksa di seluruh hubungan objek setelah dibuat. Ketika ada tautan terjaga antara dua objek (misalnya, objek x dan objek y), izin pada objek y dan objek lain yang diakses dari objek y hanya dicentang pada waktu pembuatan objek x. Pada waktu pembuatan objek x, REFERENCE izin diperiksa pada y terhadap pemilik x. Pada waktu eksekusi, (misalnya, ketika seseorang memanggil objek x), tidak ada izin yang diperiksa terhadap y atau objek lain yang direferensikannya secara statis. Pada waktu eksekusi, izin yang sesuai akan diperiksa terhadap objek x itu sendiri.

Tautan berpagar selalu digunakan bersama dengan dependensi metadata antara dua objek. Dependensi metadata ini adalah hubungan yang dibuat dalam katalog SQL Server yang mencegah objek dihilangkan selama objek lain bergantung padanya.

Tautan berpagar berguna ketika tidak sesuai atau dapat dikelola untuk memberikan izin ke banyak objek dependen. Tautan terjaga diperkenalkan antara objek yang menentukan Transact-SQL titik masuk ke dalam rakitan CLR (misalnya, prosedur CLR, pemicu, fungsi, jenis, dan agregat) dan rakitan tempat mereka ditentukan. Keamanan terjaga terhadap objek-objek ini menyiratkan bahwa untuk memanggil titik masuk Transact-SQL yang ditentukan dalam rakitan CLR, pemanggil hanya memerlukan izin yang sesuai pada titik masuk Transact-SQL tersebut. Pemanggil tidak diharuskan memiliki izin pada rakitan tersebut atau rakitan lain yang dirujuknya secara statis. Izin pada rakitan diperiksa pada waktu pembuatan titik entri Transact-SQL.

Keamanan Authorization-Based SQL Server

Berikut ini adalah aturan dasar di balik pemeriksaan keamanan SQL Server untuk pemanggilan dan antara objek database berbasis CLR; tiga aturan pertama menentukan izin mana yang diperiksa dan terhadap objek mana; aturan keempat menentukan konteks eksekusi mana yang diperiksa izinnya.

  1. Semua pemanggilan memerlukan EXECUTE izin kecuali pemanggilan terjadi dalam objek yang sama; ini berarti bahwa panggilan dalam rakitan yang sama tidak memerlukan pemeriksaan izin apa pun. Izin diperiksa pada waktu eksekusi.

  2. Tautan terjaga memerlukan REFERENCE izin terhadap penerima panggilan saat objek panggilan dibuat. Izin diperiksa untuk pemilik objek panggilan saat objek dibuat.

  3. Tautan akses tabel memerlukan SELECTizin , , INSERT, UPDATEatau DELETE terkait terhadap tabel atau tampilan yang diakses.

  4. Izin diperiksa terhadap konteks eksekusi saat ini. Prosedur dan fungsi dapat dibuat dengan konteks eksekusi yang berbeda dari pemanggil. Rakitan selalu dibuat dengan konteks eksekusi prosedur, fungsi, atau pemicu yang didefinisikan terhadapnya.

Lihat Juga

Keamanan Integrasi CLR