Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Kemampuan untuk memuat dan menjalankan kode terkelola di host SQL Server mengharuskan memenuhi persyaratan host untuk keamanan akses kode dan perlindungan sumber daya host. Persyaratan keamanan akses kode ditentukan oleh salah satu dari tiga set izin SQL Server: SAFE, EXTERNAL-ACCESS, atau UNSAFE. Kode yang dijalankan dalam set izin SAFE atau EXTERNAL-ACCESS harus menghindari jenis atau anggota tertentu yang memiliki HostProtectionAttribute atribut yang diterapkan. HostProtectionAttribute ini bukan izin keamanan sebanyak jaminan keandalan karena mengidentifikasi konstruksi kode tertentu, baik jenis atau metode, yang mungkin dilarang host. Penggunaan HostProtectionAttribute memberlakukan model pemrograman yang membantu melindungi stabilitas host.
Nota
Keamanan Akses Kode (CAS) telah tidak digunakan lagi di semua versi .NET Framework dan .NET. Versi terbaru .NET tidak mematuhi anotasi CAS dan menghasilkan kesalahan jika API terkait CAS digunakan. Pengembang harus mencari cara alternatif untuk menyelesaikan tugas keamanan.
Atribut Perlindungan Host
Atribut perlindungan host mengidentifikasi jenis atau anggota yang tidak sesuai dengan model pemrograman host dan mewakili peningkatan tingkat ancaman keandalan berikut:
Jika berbahaya.
Dapat menyebabkan destabilisasi kode pengguna yang dikelola server.
Dapat menyebabkan destabilisasi proses server itu sendiri.
SQL Server melarang penggunaan jenis atau anggota dengan HostProtectionAttribute yang menentukan nilai HostProtectionResourceSharedState, Synchronization, MayLeakOnAbort, atau ExternalProcessMgmt. Ini mencegah rakitan memanggil anggota yang mengaktifkan status berbagi, melakukan sinkronisasi, dapat menyebabkan kebocoran sumber daya saat penghentian, atau memengaruhi integritas proses SQL Server.
Tipe dan Anggota yang Tidak Diizinkan
Tabel berikut mengidentifikasi jenis dan anggota yang nilainya HostProtectionResource tidak diizinkan oleh SQL Server.
Set Hak Akses SQL Server
SQL Server memungkinkan pengguna menentukan persyaratan keandalan untuk kode yang disebarkan ke dalam database. Saat rakitan diunggah ke dalam database, pembuat rakitan dapat menentukan salah satu dari tiga set izin untuk rakitan tersebut: AMAN, EXTERNAL-ACCESS, atau TIDAK AMAN.
Set izin | SELAMAT | EXTERNAL-ACCESS | TIDAK AMAN |
---|---|---|---|
Keamanan akses kode | Jalankan saja | Jalankan + akses ke sumber daya eksternal | Tidak dibatasi |
Pembatasan model pemrograman | Ya | Ya | Tidak ada batasan |
Persyaratan keterverifikasian | Ya | Ya | Tidak. |
Kemampuan untuk memanggil kode asli | Tidak. | Tidak. | Ya |
SAFE adalah mode yang paling andal dan aman dengan pembatasan terkait dalam hal model pemrograman yang diizinkan. Kode SAFE memiliki fitur keandalan dan keamanan yang tinggi. Rakitan SAFE diberi izin yang cukup untuk menjalankan, melakukan komputasi, dan memiliki akses ke database lokal. Rakitan SAFE harus berjenis aman dan tidak diizinkan untuk memanggil kode yang tidak dikelola.
EXTERNAL-ACCESS menyediakan opsi keamanan tingkat menengah, memungkinkan akses kode ke sumber daya di luar database tetapi masih memiliki keandalan dan keamanan kategori SAFE.
UNSAFE adalah untuk kode yang sangat tepercaya yang hanya dapat dibuat oleh administrator database. Kode tepercaya ini tidak memiliki batasan akses kode, dan dapat memanggil kode yang tidak dikelola (asli).
SQL Server menggunakan lapisan kebijakan keamanan akses kode tingkat host untuk menyiapkan kebijakan host yang memberikan salah satu dari tiga set izin berdasarkan kumpulan izin yang disimpan dalam katalog SQL Server. Kode terkelola yang berjalan di dalam database selalu mendapatkan salah satu kumpulan izin akses kode ini.
Pembatasan Model Pemrograman
Model pemrograman untuk kode terkelola di SQL Server memerlukan fungsi, prosedur, dan jenis yang tidak memerlukan penggunaan status yang disimpan di beberapa pemanggilan atau berbagi status di beberapa sesi pengguna. Selanjutnya, seperti yang dijelaskan sebelumnya, keberadaan status bersama dapat menyebabkan pengecualian kritis yang berdampak pada skalabilitas dan keandalan aplikasi.
Mengingat pertimbangan ini, SQL Server melarang penggunaan variabel statis dan anggota data statis. Untuk rakitan YANG AMAN dan EXTERNAL-ACCESS, SQL Server memeriksa metadata rakitan pada waktu CREATE ASSEMBLY, dan gagal dalam pembuatan rakitan tersebut jika menemukan penggunaan anggota dan variabel data statis.