Bagikan melalui


Menerapkan Keamanan Agen SQL Server

Berlaku untuk: SQL Server Azure SQL Managed Instance

Penting

Pada Azure SQL Managed Instance, sebagian besar, tetapi tidak semua fitur SQL Server Agent saat ini didukung. Lihat Perbedaan T-SQL Azure SQL Managed Instance dari SQL Server untuk detailnya.

SQL Server Agent memungkinkan administrator database menjalankan setiap langkah pekerjaan dalam konteks keamanan yang hanya memiliki izin yang diperlukan untuk melakukan langkah pekerjaan tersebut, yang ditentukan oleh proksi SQL Server Agent. Untuk mengatur izin untuk langkah pekerjaan tertentu, Anda membuat proksi yang memiliki izin yang diperlukan lalu menetapkan proksi tersebut ke langkah pekerjaan. Proksi dapat ditentukan untuk lebih dari satu langkah pekerjaan. Untuk langkah-langkah pekerjaan yang memerlukan izin yang sama, Anda menggunakan proksi yang sama.

Bagian berikut menjelaskan peran database apa yang harus Anda berikan kepada pengguna sehingga mereka dapat membuat atau menjalankan pekerjaan dengan menggunakan SQL Server Agent.

Memberikan Akses ke SQL Server Agent

Untuk menggunakan SQL Server Agent, pengguna harus menjadi anggota dari satu atau beberapa peran database tetap berikut:

  • SQLAgentUserRole

  • SQLAgentReaderRole

  • SQLAgentOperatorRole

Peran ini disimpan dalam database msdb . Secara default, tidak ada pengguna yang merupakan anggota dari peran database ini. Keanggotaan dalam peran ini harus diberikan secara eksplisit. Pengguna yang merupakan anggota peran server tetap sysadmin memiliki akses penuh ke SQL Server Agent, dan tidak perlu menjadi anggota peran database tetap ini untuk menggunakan SQL Server Agent. Jika pengguna bukan anggota dari salah satu peran database ini atau peran sysadmin , simpul SQL Server Agent tidak tersedia untuk mereka saat terhubung ke SQL Server dengan menggunakan SQL Server Management Studio.

Anggota peran database ini dapat melihat dan menjalankan pekerjaan yang mereka miliki, dan membuat langkah-langkah pekerjaan yang berjalan sebagai akun proksi yang ada. Untuk informasi selengkapnya tentang izin tertentu yang terkait dengan masing-masing peran ini, lihat Peran Database Tetap Agen SQL Server.

Anggota peran server tetap sysadmin memiliki izin untuk membuat, memodifikasi, dan menghapus akun proksi. Anggota peran sysadmin memiliki izin untuk membuat langkah-langkah pekerjaan yang tidak menentukan proksi, tetapi sebaliknya berjalan sebagai akun layanan SQL Server Agent, yang merupakan akun yang digunakan untuk memulai SQL Server Agent.

Panduan

Ikuti panduan ini untuk meningkatkan keamanan implementasi SQL Server Agent Anda:

  • Buat akun pengguna khusus khusus untuk proksi, dan hanya gunakan akun pengguna proksi ini untuk menjalankan langkah-langkah pekerjaan.

  • Hanya berikan izin yang diperlukan untuk akun pengguna proksi. Berikan hanya izin yang diperlukan untuk menjalankan langkah-langkah pekerjaan yang ditetapkan ke akun proksi tertentu.

  • Jangan jalankan layanan SQL Server Agent di bawah akun Microsoft Windows yang merupakan anggota grup Administrator Windows.

  • Proksi hanya seaman penyimpanan kredensial SQL Server.

  • Jika operasi penulisan pengguna dapat menulis ke log Peristiwa NT, mereka dapat menaikkan pemberitahuan melalui SQL Server Agent.

  • Jangan tentukan akun Admin NT sebagai akun layanan atau akun proksi.

  • SQL Server dan SQL Server Agent memiliki akses ke aset satu sama lain. Kedua layanan berbagi ruang proses tunggal dan SQL Server Agent adalah sysadmin pada layanan SQL Server.

  • Ketika TSX (server target) mendaftar dengan MSX (server master), MSX sysadmins mendapatkan kontrol total atas instans TSX SQL Server.

  • ACE adalah ekstensi dan tidak dapat memanggil dirinya sendiri. ScenarioEngine.exe chainer (juga dikenal sebagai Microsoft.SqlServer.Chainer.Setup.exe) dapat memanggil ACE. Proses host lainnya juga dapat memanggil ACE.

  • ACE bergantung pada DLL konfigurasi berikut yang dimiliki oleh SSDP, karena API DLL tersebut dipanggil oleh ACE:

    • SCO - Microsoft.SqlServer.Configuration.Sco.dll, termasuk validasi SCO baru untuk akun virtual

    • Kluster - Microsoft.SqlServer.Configuration.Cluster.dll

    • SFC - Microsoft.SqlServer.Configuration.SqlConfigBase.dll

    • Ekstensi - Microsoft.SqlServer.Configuration.ConfigExtension.dll

Server yang ditautkan

Dalam beberapa skenario, seperti dengan Azure SQL Managed Instance, untuk menjalankan pekerjaan SQL Agent yang menjalankan kueri Transact-SQL (T-SQL) di server jarak jauh melalui server tertaut, Anda perlu memetakan login lokal ke login di server jarak jauh.

Gunakan sp_addlinkedsrvlogin untuk membuat pemetaan antara login di server lokal ke login di server jarak jauh yang memiliki izin yang diperlukan untuk menjalankan kueri T-SQL. Ketika pekerjaan SQL Agent tersambung ke server jarak jauh melalui server tertaut, pekerjaan menjalankan kueri T-SQL dalam konteks login jarak jauh.

Tabel berikut ini menjelaskan cara memetakan login berdasarkan pemilik pekerjaan SQL Agent di Azure SQL Managed Instance:

Pemilik pekerjaan Agen SQL Cara memetakan login
Pengguna yang bukan sysadmin Petakan pengguna lokal yang memiliki pekerjaan SQL Agent ke login jarak jauh.
adminsis Petakan semua pengguna lokal ke login jarak jauh dengan mengatur @locallogin parameter ke NULL.

Catatan

Membuat login di server jarak jauh untuk pekerjaan SQL Agent diperlukan saat server lokal adalah Azure SQL Managed Instance. Gagal memetakan pengguna dengan benar dapat mengakibatkan kesalahan seperti contoh berikut:

  • Windows logins are not supported in this version of SQL Server
  • Linked servers cannot be used under impersonation without a mapping for the impersonated login