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 kode terkelola mengakses sumber daya eksternal, SQL Server tidak secara otomatis meniru konteks eksekusi saat ini di mana rutinitas dijalankan. Kode dalam EXTERNAL_ACCESS dan UNSAFE rakitan dapat secara eksplisit meniru konteks eksekusi saat ini.
Nota
Untuk informasi tentang perubahan perilaku dalam peniruan, lihat Melanggar Perubahan pada Fitur Mesin Database di SQL Server 2014.
Penyedia akses data dalam proses menyediakan antarmuka pemrograman aplikasi, SqlContext.WindowsIdentity, yang dapat digunakan untuk mengambil token yang terkait dengan konteks keamanan saat ini. Kode terkelola dalam EXTERNAL_ACCESS dan UNSAFE rakitan dapat menggunakan metode ini untuk mengambil konteks dan menggunakan metode .NET Framework WindowsIdentity.Impersonate untuk meniru konteks tersebut. Pembatasan berikut berlaku saat kode pengguna secara eksplisit meniru:
Akses data dalam proses tidak diizinkan ketika kode terkelola dalam keadaan ditiru. Kode dapat mengurungkan peniruan lalu memanggil akses data dalam proses. Perhatikan bahwa ini mengharuskan menyimpan nilai pengembalian (
WindowsImpersonationContextobjek) dari metode asliImpersonate, dan memanggilUndometode pada iniWindowsImpersonationContext.Pembatasan ini berarti bahwa ketika akses data dalam proses terjadi, itu selalu dalam konteks konteks keamanan saat ini yang berlaku untuk sesi. Ini tidak dapat dimodifikasi dengan peniruan eksplisit dalam kode terkelola.
Untuk kode terkelola yang dijalankan secara asinkron (misalnya, melalui
UNSAFErakitan yang membuat utas dan menjalankan kode secara asinkron), akses data dalam proses tidak pernah diizinkan. Ini benar apakah ada peniruan atau tidak.
Ketika kode berjalan dalam konteks yang ditiru yang berbeda dari SQL Server, kode tidak dapat melakukan panggilan akses data dalam proses; ini harus membatalkan konteks peniruan sebelum melakukan panggilan akses data dalam proses. Ketika akses data dalam proses dibuat dari kode terkelola, konteks eksekusi asli dari titik masuk Transact-SQL ke dalam kode terkelola selalu digunakan untuk otorisasi.
Rakitan EXTERNAL_ACCESS dan UNSAFE rakitan mengakses sumber daya sistem operasi dengan akun layanan SQL Server, kecuali mereka secara sukarela meniru konteks keamanan saat ini seperti yang dijelaskan sebelumnya. Karena itu, penulis EXTERNAL_ACCESS rakitan memerlukan tingkat kepercayaan yang lebih tinggi daripada SAFE rakitan, yang ditentukan oleh EXTERNAL ACCESS izin tingkat login. Hanya login yang dipercaya untuk menjalankan kode di bawah akun layanan SQL Server yang harus diberikan EXTERNAL ACCESS izin.
Lihat Juga
Keamanan Integrasi CLR
Peniruan Identitas dan Kredensial untuk Koneksi