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.
Ketika Anda membangun prosedur tersimpan terkelola atau objek database terkelola lainnya, ada pemeriksaan kode tertentu yang dilakukan oleh SQL Server melakukan pemeriksaan pada rakitan kode terkelola ketika pertama kali terdaftar dalam database, menggunakan CREATE ASSEMBLY pernyataan, dan juga pada runtime. Kode terkelola juga diperiksa saat runtime karena dalam rakitan mungkin ada jalur kode yang mungkin tidak pernah benar-benar dicapai pada runtime. Ini memberikan fleksibilitas untuk mendaftarkan rakitan pihak ketiga, terutama, sehingga rakitan tidak akan diblokir di mana ada kode 'tidak aman' yang dirancang untuk berjalan di lingkungan klien tetapi tidak akan pernah dijalankan di CLR yang dihosting. Persyaratan yang harus dipenuhi kode terkelola bergantung pada apakah assembly terdaftar sebagai SAFE, , EXTERNAL_ACCESSatau UNSAFE, SAFE menjadi yang paling ketat, dan tercantum di bawah ini.
Selain pembatasan yang ditempatkan pada rakitan kode terkelola, ada juga izin keamanan kode yang diberikan. Runtime bahasa umum (CLR) mendukung model keamanan yang disebut keamanan akses kode (CAS) untuk kode terkelola. Dalam model ini, izin diberikan kepada rakitan berdasarkan identitas kode.
SAFE, EXTERNAL_ACCESS, dan UNSAFE rakitan memiliki izin CAS yang berbeda. Untuk informasi selengkapnya, lihat Keamanan Akses Kode Integrasi CLR.
MEMBUAT Pemeriksaan RAKITAN
CREATE ASSEMBLY Saat pernyataan dijalankan, pemeriksaan berikut dilakukan untuk setiap tingkat keamanan. Jika ada pemeriksaan yang gagal, CREATE ASSEMBLY akan gagal dengan pesan kesalahan.
Global (tingkat keamanan apa pun)
Semua rakitan yang dirujuk harus memenuhi satu atau beberapa kriteria berikut:
Rakitan sudah terdaftar dalam database.
Rakitan adalah salah satu rakitan yang didukung. Untuk informasi selengkapnya, lihat Pustaka .NET Framework yang didukung.
Anda menggunakan
CREATE ASSEMBLY FROM<lokasi>, dan semua rakitan yang dirujuk dan dependensinya tersedia di <lokasi>.Anda menggunakan
CREATE ASSEMBLY FROM<byte ...>, dan semua referensi ditentukan melalui ruang yang dipisahkan byte.
EXTERNAL_ACCESS
Semua EXTERNAL_ACCESS rakitan harus memenuhi kriteria berikut:
Bidang statis tidak digunakan untuk menyimpan informasi. Bidang statis baca-saja diperbolehkan.
Uji PEVerify diteruskan. Alat PEVerify (peverify.exe), yang memeriksa apakah kode MSIL dan metadata terkait memenuhi persyaratan keamanan jenis, disediakan dengan .NET Framework SDK.
Sinkronisasi, misalnya dengan
SynchronizationAttributekelas , tidak digunakan.Metode finalizer tidak digunakan.
Atribut kustom berikut tidak diizinkan dalam EXTERNAL_ACCESS rakitan:
System.ContextStaticAttribute
System.MTAThreadAttribute
System.Runtime.CompilerServices.MethodImplAttribute
System.Runtime.CompilerServices.CompilationRelaxationsAttribute
System.Runtime.Remoting.Contexts.ContextAttribute
System.Runtime.Remoting.Contexts.SynchronizationAttribute
System.Runtime.InteropServices.DllImportAttribute
System.Security.Permissions.CodeAccessSecurityAttribute
System.Security.SuppressUnmanagedCodeSecurityAttribute
System.Security.UnverifiableCodeAttribute
System.STAThreadAttribute
System.ThreadStaticAttribute
SELAMAT
- Semua
EXTERNAL_ACCESSkondisi perakitan diperiksa.
Pemeriksaan Runtime
Saat runtime, rakitan kode diperiksa untuk kondisi berikut. Jika salah satu kondisi ini ditemukan, kode terkelola tidak akan diizinkan untuk dijalankan dan pengecualian akan dilemparkan.
TIDAK AMAN
Memuat assembly-baik secara eksplisit dengan memanggil System.Reflection.Assembly.Load() metode dari array byte, atau secara implisit melalui penggunaan Reflection.Emit namespace tidak diizinkan.
EXTERNAL_ACCESS
Semua UNSAFE kondisi diperiksa.
Semua jenis dan metode yang dianotasi dengan nilai atribut perlindungan host (HPA) berikut dalam daftar rakitan yang didukung tidak diizinkan.
SelfAffectingProcessMgmt
SelfAffectingThreading
Sinkronisasi
SharedState
ExternalProcessMgmt
ExternalThreading
SecurityInfrastructure
MayLeakOnAbort
Antarmuka Pengguna
Untuk informasi selengkapnya tentang HPAs dan daftar jenis dan anggota yang tidak diizinkan di rakitan yang didukung, lihat Atribut Perlindungan Host dan Pemrograman Integrasi CLR.
SELAMAT
Semua EXTERNAL_ACCESS kondisi diperiksa.
Lihat Juga
Pustaka .NET Framework yang didukung
Keamanan Akses Kode Integrasi CLR
Atribut Perlindungan Host dan Pemrograman Integrasi CLR
Membuat Rakitan