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.
Runtime bahasa umum (CLR) mendukung model keamanan yang disebut keamanan akses kode untuk kode terkelola. Dalam model ini, izin diberikan kepada rakitan berdasarkan identitas kode. Untuk informasi selengkapnya, lihat bagian "Keamanan Akses Kode" di kit pengembangan perangkat lunak .NET Framework.
Kebijakan keamanan yang menentukan izin yang diberikan kepada rakitan didefinisikan di tiga tempat berbeda:
Kebijakan mesin: Ini adalah kebijakan yang berlaku untuk semua kode terkelola yang berjalan di komputer tempat SQL Server diinstal.
Kebijakan pengguna: Ini adalah kebijakan yang berlaku untuk kode terkelola yang dihosting oleh proses. Untuk layanan SQL Server sedang berjalan.
Kebijakan host: Ini adalah kebijakan yang disiapkan oleh host CLR (dalam hal ini, SQL Server) yang berlaku untuk kode terkelola yang berjalan di host tersebut.
Mekanisme keamanan akses kode yang didukung oleh CLR didasarkan pada asumsi bahwa runtime dapat menghosting kode yang sepenuhnya tepercaya dan tepercaya sebagian. Sumber daya yang dilindungi oleh keamanan akses kode CLR biasanya dibungkus oleh antarmuka pemrograman aplikasi terkelola yang memerlukan izin yang sesuai sebelum mengizinkan akses ke sumber daya. Permintaanuntuk izin terpenuhi hanya jika semua pemanggil (pada tingkat perakitan) di tumpukan panggilan memiliki izin sumber daya yang sesuai.
Sekumpulan izin keamanan akses kode yang diberikan ke kode terkelola saat berjalan di dalam SQL Server memberikan serangkaian izin ke rakitan yang dimuat di SQL Server, serangkaian izin akhirnya yang diberikan kepada kode pengguna dapat dibatasi lebih lanjut oleh kebijakan tingkat pengguna dan mesin.
Set Izin Tingkat Kebijakan Host SQL Server
Kumpulan izin keamanan akses kode yang diberikan kepada rakitan oleh tingkat kebijakan host SQL Server ditentukan oleh set izin yang ditentukan saat membuat rakitan. Ada tiga set izin: SAFE, EXTERNAL_ACCESS dan UNSAFE (ditentukan menggunakan opsi PERMISSION_SETDARI CREATE ASSEMBLY (Transact-SQL)).
SQL Server. Kebijakan ini tidak dimaksudkan untuk domain aplikasi default yang akan berlaku ketika SQL Server membuat instans CLR.
SQL Server fixedpolicy untuk rakitan sistem dan kebijakan yang ditentukan pengguna untuk rakitan pengguna.
Kebijakan tetap untuk rakitan CLR dan rakitan sistem SQL Server memberi mereka kepercayaan penuh.
Bagian yang ditentukan pengguna dari kebijakan host SQL Server didasarkan pada pemilik perakitan yang menentukan salah satu dari tiga wadah izin untuk setiap rakitan. Untuk informasi selengkapnya tentang izin keamanan yang tercantum di bawah ini, lihat .NET Framework SDK.
SELAMAT
Hanya komputasi internal dan akses data lokal yang diizinkan.
SAFE adalah kumpulan izin yang paling ketat. Kode yang dijalankan oleh rakitan dengan SAFE izin tidak dapat mengakses sumber daya sistem eksternal seperti file, jaringan, variabel lingkungan, atau registri.
SAFE rakitan memiliki izin dan nilai berikut:
| Persetujuan | Nilai/Deskripsi |
|---|---|
SecurityPermission |
Execution: Izin untuk menjalankan kode terkelola. |
SqlClientPermission |
Context connection = true, context connection = yes: Hanya koneksi konteks yang dapat digunakan dan string koneksi hanya dapat menentukan nilai "context connection=true" atau "context connection=yes".AllowBlankPassword = false: Kata sandi kosong tidak diizinkan. |
EXTERNAL_ACCESS
EXTERNAL_ACCESS rakitan memiliki izin yang sama dengan SAFE rakitan, dengan kemampuan tambahan untuk mengakses sumber daya sistem eksternal seperti file, jaringan, variabel lingkungan, dan registri.
Rakitan EXTERNAL_ACCESS juga memiliki izin dan nilai berikut:
| Persetujuan | Nilai/Deskripsi |
|---|---|
DistributedTransactionPermission |
Unrestricted: Transaksi terdistribusi diperbolehkan. |
DNSPermission |
Unrestricted: Izin untuk meminta informasi dari Server Nama Domain. |
EnvironmentPermission |
Unrestricted: Akses penuh ke variabel lingkungan sistem dan pengguna diizinkan. |
EventLogPermission |
Administer: Tindakan berikut diizinkan: membuat sumber peristiwa, membaca log yang ada, menghapus sumber peristiwa atau log, menanggapi entri, menghapus log peristiwa, mendengarkan peristiwa, dan mengakses kumpulan semua log peristiwa. |
FileIOPermission |
Unrestricted: Akses penuh ke file dan folder diperbolehkan. |
KeyContainerPermission |
Unrestricted: Akses penuh ke kontainer kunci diizinkan. |
NetworkInformationPermission |
Access: Pinging diizinkan. |
RegistryPermission |
Memungkinkan hak baca untuk HKEY_CLASSES_ROOT, HKEY_LOCAL_MACHINE, HKEY_CURRENT_USER, HKEY_CURRENT_CONFIG, dan HKEY_USERS. |
SecurityPermission |
Assertion: Kemampuan untuk menegaskan bahwa semua pemanggil kode ini memiliki izin yang diperlukan untuk operasi.ControlPrincipal: Kemampuan untuk memanipulasi objek utama.Execution: Izin untuk menjalankan kode terkelola.SerializationFormatter: Kemampuan untuk menyediakan layanan serialisasi. |
| SmtpPermission |
Access: Koneksi keluar ke port host SMTP 25 diizinkan. |
SocketPermission |
Connect: Koneksi keluar (semua port, semua protokol) pada alamat transportasi diizinkan. |
SqlClientPermission |
Unrestricted: Akses penuh ke sumber data diizinkan. |
StorePermission |
Unrestricted: Akses penuh ke penyimpanan sertifikat X.509 diizinkan. |
WebPermission |
Connect: Koneksi keluar ke sumber daya web diperbolehkan. |
TIDAK AMAN
UNSAFE memungkinkan rakitan akses tidak terbatas ke sumber daya, baik di dalam maupun di luar SQL Server. Kode yang dijalankan dari dalam rakitan UNSAFE juga dapat memanggil kode yang tidak dikelola.
Rakitan UNSAFE diberikan FullTrust.
Penting
SAFE adalah pengaturan izin yang direkomendasikan untuk rakitan yang melakukan tugas komputasi dan manajemen data tanpa mengakses sumber daya di luar SQL Server.
EXTERNAL_ACCESS rakitan secara default dijalankan sebagai akun layanan SQL Server, izin untuk menjalankan EXTERNAL_ACCESS hanya boleh diberikan kepada login yang dipercaya untuk dijalankan sebagai akun layanan. Dari perspektif keamanan, rakitan EXTERNAL_ACCESS dan UNSAFE identik. Namun, EXTERNAL_ACCESS rakitan memberikan berbagai perlindungan keandalan dan ketahanan yang tidak berada dalam UNSAFE rakitan. Menentukan UNSAFE memungkinkan kode dalam rakitan melakukan operasi ilegal terhadap SQL Server. Untuk informasi selengkapnya tentang membuat rakitan CLR di SQL Server, lihat Mengelola Rakitan Integrasi CLR.
Mengakses Sumber Daya Eksternal
Jika jenis yang ditentukan pengguna (UDT), prosedur tersimpan, atau jenis rakitan konstruksi lainnya terdaftar dengan kumpulan izin SAFE, maka kode terkelola yang dijalankan dalam konstruksi tidak dapat mengakses sumber daya eksternal. Namun, jika set izin EXTERNAL_ACCESS atau UNSAFE ditentukan, dan kode terkelola mencoba mengakses sumber daya eksternal, SQL Server menerapkan aturan berikut:
| Kalau | Kemudian |
|---|---|
| Konteks eksekusi sesuai dengan login SQL Server. | Upaya untuk mengakses sumber daya eksternal ditolak dan pengecualian keamanan dinaikkan. |
| Konteks eksekusi sesuai dengan login Windows dan konteks eksekusi adalah pemanggil asli. | Sumber daya eksternal diakses di bawah konteks keamanan akun layanan SQL Server. |
| Pemanggil bukan pemanggil asli. | Akses ditolak dan pengecualian keamanan dinaikkan. |
| Konteks eksekusi sesuai dengan login Windows dan konteks eksekusi adalah pemanggil asli dan pemanggil telah ditiru. | Access menggunakan konteks keamanan pemanggil; bukan akun layanan. |
Ringkasan Set Izin
Bagan berikut ini meringkas batasan dan izin yang diberikan ke kumpulan izin SAFE, EXTERNAL_ACCESS, dan UNSAFE.
SAFE |
EXTERNAL_ACCESS |
UNSAFE |
|
Code Access Security Permissions |
Jalankan saja | Jalankan + akses ke sumber daya eksternal | Tidak dibatasi (termasuk P/Panggil) |
Programming model restrictions |
Ya | Ya | Tidak ada batasan |
Verifiability requirement |
Ya | Ya | Tidak. |
Local data access |
Ya | Ya | Ya |
Ability to call native code |
Tidak. | Tidak. | Ya |
Lihat Juga
Keamanan Integrasi CLR
Atribut Perlindungan Host dan Pemrograman Integrasi CLR
Pembatasan Model Pemrograman Integrasi CLR
Lingkungan yang Dihosting CLR