Cara mengaktifkan akun non-sysadmin untuk menjalankan "xp_cmdshell" memperpanjang prosedur yang disimpan di SQL Server 2000

Ringkasan

Artikel ini menguraikan cara mengonfigurasi akun proksi agen Server SQL Microsoft Windows yang akan digunakan oleh SQL login yang bukan anggota dari peran server tetap sysadmin . Selain itu, artikel berisi referensi ke informasi selengkapnya untuk membantu Anda memecahkan masalah yang mungkin terjadi saat Anda mencoba menyetel akun proksi.

PENDAHULUAN

Xp_cmdshell prosedur yang disimpan diperpanjang memanggil shell perintah Windows dari dalam Microsoft SQL Server 2000. Saat xp_cmdshell prosedur tersimpan yang diperpanjang dijalankan oleh anggota peran server tetap sysadmin , proses Windows perintah shell berjalan dengan konteks keamanan akun layanan Windows dari SQL Server. Misalnya, jika SQL Server berjalan di bawah logon Windows yang memiliki hak administratif di komputer, pengguna yang membuka prompt perintah dengan xp_cmdshell prosedur tersimpan yang diperpanjang akan menerima akses ke Windows sebagai administrator lokal. Secara default, izin untuk menjalankan xp_cmdshell prosedur tersimpan yang diperpanjang hanya diberikan kepada anggota peran server tetap sysadmin . Izin ini membantu mencegah eskalasi hak. Saat Anda ingin memulai proses Windows baru dengan tingkat hak yang dikurangi, Anda bisa menggunakan akun proksi agen Server SQL untuk mengonfigurasi akun Windows dengan tingkat hak yang sesuai.

Informasi Selengkapnya

Ketika Anda mencoba menjalankan xp_cmdshell prosedur tersimpan yang diperpanjang dari login SQL Server yang bukan anggota dari peran server sysadmin dan akun proksi agen Server SQL belum disiapkan dengan benar, Anda mungkin menerima pesan kesalahan yang mirip dengan yang berikut ini:

MSG 50001, tingkat 1, 50001 xpsql. CPP: kesalahan 997 dari GetProxyAccount pada baris 499

MSG 50001, tingkat 1, 50001 xpsql. CPP: kesalahan 317 dari GetProxyAccount pada baris 499

MSG 50001, tingkat 1, 50001 xpsql. CPP: kesalahan 0 dari GetProxyAccount pada baris 499

MSG 50001, tingkat 1, 50001 xpsql. CPP: kesalahan 87 dari GetProxyAccount pada baris 499

Jika Anda harus memperbolehkan pengguna non-sysadmin menjalankan xp_cmdshell prosedur tersimpan yang diperluas di SQL Server 2000, Anda harus mengonfigurasi akun proksi dan akun startup SQL Server untuk menjadi anggota grup administrator lokal. Ketika SQL Server menjalankan pekerjaan atau perintah untuk pengguna yang bukan anggota peran server tetap sysadmin, agen Server SQL dan xp_cmdshell memperpanjang prosedur yang disimpan menggunakan akun proksi. Kredensial keamanan Windows untuk akun proksi disimpan dalam database rahasia otoritas keamanan lokal (LSA). Hanya administrator Windows yang bisa mengakses informasi ini. Oleh karena itu, jika akun startup SQL Server bukan anggota grup administrator lokal, pengguna tidak bisa menyimpan atau mendapatkan kredensial keamanan Windows untuk masuk sebagai akun proksi, dan xp_cmdshell memperpanjang prosedur yang disimpan gagal. Untuk mengaktifkan pengguna non-sysadmin untuk menjalankan xp_cmdshell prosedur yang disimpan diperpanjang, akun startup SQL Server harus menjadi anggota grup administrator lokal. Untuk mengonfigurasi akun proksi untuk login SQL Server yang bukan anggota peran server tetap sysadmin , gunakan salah satu metode berikut ini.

Metode 1: menggunakan SQL Server Enterprise Manager

Mengonfigurasi akun Windows

Untuk mengatur akun Windows untuk mengaktifkan pengguna non-sysadmin untuk menjalankan xp_cmdshell prosedur yang disimpan diperpanjang, ikuti langkah-langkah berikut:

  1. Mulai SQL Server Enterprise Manager.

  2. Di SQL Server Enterprise Manager, Perluas Microsoft SQL Server, lalu Perluas grup SQL Server.

  3. Perluas contoh SQL Server yang Anda inginkan untuk menyiapkan akun proksi.

  4. Perluas manajemen, klik kanan agen Server SQL, lalu klik properti.

  5. Dalam kotak dialog properti agen SQL Server , klik tab sistem kerja .

  6. Di bawah akun proksi langkah kerja non-sysadmin, klik untuk menghapus satu-satunya pengguna dengan hak istimewa sysadmin bisa menjalankan kotak centang cmdexec dan activescripting pekerjaan .

  7. Dalam kotak dialog akun proksi agen Server SQL, ketikkan nama akun Windows dalam kotak nama pengguna.

  8. Dalam kotak kata sandi , ketikkan kata sandi Windows.

  9. Dalam kotak domain , ketikkan domain yang menjadi anggota Windows, lalu klik OK dua kali.

Menambahkan akun masuk SQL Server

Untuk menambahkan akun masuk SQL Server yang ingin Anda beri izin untuk menjalankan xp_cmdshell prosedur tersimpan yang diperpanjang, ikuti langkah-langkah berikut:

  1. Di Manajer Enterpise SQL Server, Perluaskeamanan.

  2. Di panel masuk , klik kanan akun masuk SQL Server yang ingin Anda beri izin, lalu klikproperti.Catatan Jika akun belum ditambahkan, Anda dapat membuat akun proksi Windows sebagai akun masuk.

  3. Dalam kotak dialog properti login SQL Server , klik tab akses database .

  4. Dalam daftar Tentukan database mana yang dapat diakses oleh ini , klik untuk memilih kotak centang izin untuk database Master , lalu klik OK.

  5. Perluas database, PerluasMaster, lalu klik Perluas prosedur yang disimpan.

  6. Temukan lalu klik kananxp_cmdshell prosedur tersimpan yang diperpanjang, lalu klikproperti.

  7. Dalam kotak dialog properti prosedur tersimpan yang diperluas , klik izin.

  8. Klik untuk memilih kotak centang exec untuk akun masuk SQL Server yang ingin Anda beri izin eksekusi, lalu klik OK dua kali.

Metode 2: menjalankan skrip Transact-SQL

Jalankan skrip Transact-SQL berikut untuk mengaktifkan akun Windows untuk mengeksekusi xp_cmdshell prosedur tersimpan yang diperpanjang:

-- Set database to master.USE masterGO-- Add a valid Windows account as proxy account.EXECUTE xp_sqlagent_proxy_account N'SET'                        , N'<DomainName>'                        , N'<WindowsAccount>'                        , N'<WindowsPassword>'GO-- Get the proxy account to determine whether it is set up correctly. EXECUTE xp_sqlagent_proxy_account N'GET'GO-- Enable non-system administrators to run the job and to execute xp_cmdshell.EXECUTE msdb..sp_set_sqlagent_properties @sysadmin_only = 0GO

Catatan Dalam skrip ini, <nama> adalah domain yang menjadi anggota Windows. <windowsaccount> adalah nama akun Windows. <WindowsPassword> adalah kata sandi untuk akun Windows. Untuk menambahkan akun masuk SQL Server yang ingin Anda beri izin untuk mengeksekusi xp_cmdshell prosedur tersimpan yang diperpanjang, jalankan skrip Transact-SQL berikut ini:

USE masterGO-- Grant database access to the SQL Server login account that you want to provide access.EXEC sp_grantdbaccess '<SQLLogin>'GO-- Grant execute permission on xp_cmdshell to the SQL Server login account.GRANT exec ON xp_cmdshell TO <SQLLogin>GO

Catatan Dalam skrip ini, <sqllogin> adalah login SQL Server yang ingin Anda beri izin untuk menjalankan xp_cmdshell prosedur yang disimpan diperpanjang.Catatan Akun proksi adalah akun Windows yang memiliki konteks keamanan yang dijalankan oleh pekerjaan agen Server SQL atau perintah baris perintah. Saat menyiapkan akun Windows untuk akun proksi agen Server SQL, Anda harus memberikan akun "masuk sebagai pekerjaan batch" di tingkat Windows.

Referensi

Untuk informasi selengkapnya tentang xp_cmdshell prosedur yang disimpan diperpanjang, lihat topik "referensi Transact-SQL" di buku daring SQL Server. Untuk informasi selengkapnya tentang akun proksi agen Server SQL, kunjungi situs web Microsoft Developer Network (MSDN) berikut:

xp_sqlagent_proxy_accounthttp://msdn2.Microsoft.com/en-US/Library/aa260700 (SQL. 80). aspxXp_cmdshellhttp://msdn2.Microsoft.com/en-US/Library/aa369561.aspxMENYETEL akun layanan Windowshttp://msdn2.Microsoft.com/en-US/Library/aa176564 (SQL. 80). aspxUntuk informasi selengkapnya tentang cara mengatur izin yang sesuai pada akun proksi, klik nomor artikel berikut ini untuk menampilkan artikel di Basis Pengetahuan Microsoft:

283811 Cara mengubah akun Layanan agen SQL Server atau SQL Server tanpa menggunakan SQL Enterprise Manager di SQL Server 2000 atau manajer konfigurasi SQL Server di SQL Server 2005

Perlu bantuan lainnya?

Kembangkan keterampilan Anda
Jelajahi pelatihan
Dapatkan fitur baru terlebih dahulu
Gabung Microsoft Insider

Apakah informasi ini bermanfaat?

Terima kasih atas umpan balik Anda!

Terima kasih atas umpan balik Anda! Sepertinya menghubungkan Anda ke salah satu agen dukungan Office kami akan sangat membantu.

×