Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Risiko keamanan pengaturan dapat dipercaya =aktif di sql server 2012

TRUSTWORTHY properti database (bila disetel ke ON ) pada dasarnya mendeklarasikan ke SQL Server bahwa kode yang terkandung dalam database itu, dan mengeksekusi dalam konteks yang ditiru, harus diizinkan untuk menjangkau di luar database itu sambil mempertahankan konteks keamanan yang ditiru itu. Ini juga memungkinkan untuk semua SQLCLR Assemblies dalam Database itu untuk disetel ke EXTERNAL_ACCESS dan UNSAFE , apakah kode tersebut sampai di luar server atau tidak (artinya di luar:akses jaringan, akses sistem file, akses registri, akses lingkungan, dll).

Ini adalah cara yang agak umum untuk memungkinkan ini karena mencakup semua kode dalam database. Menggunakan Sertifikat dan/atau Kunci Asimetris untuk menandatangani modul--procs dan/atau rakitan--memungkinkan kontrol yang lebih terperinci atas kode apa yang memiliki izin apa.

Menyetel Database ke TRUSTWORTHY juga memungkinkan proses apa pun yang dimulai dalam Basis Data ini untuk menjangkau hingga ke tingkat Server dan/atau menyeberang ke Basis Data lainnya. Biasanya suatu proses dibatasi / dikarantina ke Basis Data tempat dimulainya. Jika Basis Data dimiliki oleh Login "sa", maka setiap proses yang dimulai di Basis Data tersebut dan dijalankan sebagai "dbo" akan secara efektif memiliki hak istimewa "sa" (ya!).

Daripada mencoba menjelaskan di sini, dalam jumlah detail yang diperlukan untuk sepenuhnya mengomunikasikan secara spesifik tentang peniruan identitas, memperluas peniruan identitas tersebut, modul penandatanganan, dll, saya sarankan membaca dengan teliti sumber daya berikut tentang topik ini:

Anda harus menghindari pengaturan database Anda ke TRUSTWORTHY sebanyak mungkin. Jika Anda benar-benar harus memiliki panggilan multithreading / async DAN jika Anda memiliki kode sumber dan sedang mengkompilasi Majelis, maka saya tidak dapat memikirkan alasan untuk menggunakan SET TRUSTWORTHY ON pilihan. Sebagai gantinya, Anda harus menandatangani majelis dengan kata sandi dan gunakan perintah berikut untuk menyiapkan metode yang disukai untuk mengizinkan EXTERNAL_ACCESS dan UNSAFE rakitan:

USE [master];
  CREATE ASYMMETRIC KEY [ClrPermissionsKey]
    AUTHORIZATION [dbo]
    FROM EXECUTABLE FILE = 'C:\path\to\my\assembly.dll';

CREATE LOGIN [ClrPermissionsLogin]
  FROM ASYMMETRIC KEY [ClrPermissionsKey];

GRANT UNSAFE ASSEMBLY TO [ClrPermissionsLogin];

Setelah itu, Anda dapat pergi ke database tempat perakitan Anda telah dimuat dan dijalankan:

ALTER ASSEMBLY [MyAssembly] WITH PERMISSION_SET = UNSAFE;

Atau Anda bisa memasukkan WITH PERMISSION_SET = UNSAFE di akhir CREATE ASSEMBLY perintah.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server 2017 Langkah demi Langkah Instalasi -2

  2. Menghilangkan nilai duplikat hanya berdasarkan satu kolom tabel

  3. Bagaimana cara membersihkan input dengan PHP dan driver sqlsrv?

  4. Bagaimana cara menghasilkan nomor acak untuk setiap baris dalam pemilihan T-SQL?

  5. Bagaimana cara menanyakan output ini di SQL server