SQL Server di Windows: Perubahan isolasi untuk Layanan Pembelajaran Mesin

Berlaku untuk: SQL Server 2019 (15.x) dan versi yang lebih baru pada Windows dan SQL Server 2022 (16.x) - Hanya Windows

Artikel ini menjelaskan perubahan pada mekanisme isolasi di layanan Pembelajaran Mesin di SQL Server di Windows, pertama kali diperkenalkan di SQL Server 2019. Perubahan ini memengaruhi SQLRUserGroup, aturan firewall, izin file, dan autentikasi tersirat.

Untuk informasi selengkapnya, lihat cara menginstal Layanan Pembelajaran Mesin SQL Server di Windows.

Perubahan pada mekanisme isolasi

Di Windows, Penyiapan SQL mengubah mekanisme isolasi untuk proses eksternal. Perubahan ini menggantikan akun pekerja lokal dengan AppContainers, teknologi isolasi untuk aplikasi klien yang berjalan di Windows.

Tidak ada item tindakan khusus untuk administrator sebagai akibat dari modifikasi. Pada server baru atau yang ditingkatkan, semua skrip dan kode eksternal yang dijalankan dari sp_execute_external_script mengikuti model isolasi baru secara otomatis.

Dirangkum, perbedaan utama dalam rilis ini adalah:

  • Akun pengguna lokal di bawah Grup Pengguna Terbatas SQL (SQLRUserGroup) tidak lagi dibuat atau digunakan untuk menjalankan proses eksternal. AppContainers menggantinya.
  • Keanggotaan SQLRUserGroup telah berubah. Alih-alih beberapa akun pengguna lokal, keanggotaan hanya terdiri dari akun layanan Launchpad SQL Server. Proses R dan Python sekarang dijalankan di bawah identitas layanan Launchpad, diisolasi melalui AppContainers.

Meskipun model isolasi telah berubah, Wizard Penginstalan dan parameter baris perintah tetap sama seperti pada versi SQL Server yang lebih lama. Untuk bantuan terkait penginstalan, lihat Menginstal Layanan Pembelajaran Mesin SQL Server 2016-2019 atau Menginstal Layanan Pembelajaran Mesin SQL Server 2022 (Python dan R) di Windows.

Tentang isolasi AppContainer

Dalam rilis sebelumnya, SQLRUserGroup berisi kumpulan akun pengguna Windows lokal (MSSQLSERVER00-MSSQLSERVER20) yang digunakan untuk mengisolasi dan menjalankan proses eksternal. Ketika proses eksternal diperlukan, layanan Launchpad SQL Server akan mengambil akun yang tersedia dan menggunakannya untuk menjalankan proses.

Dimulai dengan SQL Server 2019, Penyiapan SQL tidak lagi membuat akun pekerja lokal. Sebaliknya, isolasi dicapai melalui AppContainers. Pada waktu proses, ketika skrip atau kode yang disematkan terdeteksi dalam prosedur atau kueri tersimpan, SQL Server memanggil Launchpad dengan permintaan peluncur khusus ekstensi. Launchpad menjalankan lingkungan runtime yang sesuai dalam sebuah proses dengan identitasnya sendiri, dan membuat AppContainer untuk menampungnya. Perubahan ini bermanfaat karena akun lokal dan manajemen kata sandi tidak lagi diperlukan. Selain itu, pada penginstalan di mana akun pengguna lokal dilarang, penghapusan dependensi akun pengguna lokal berarti Anda sekarang dapat menggunakan fitur ini.

Seperti yang diimplementasikan oleh SQL Server, AppContainers adalah mekanisme internal. Meskipun Anda tidak akan melihat jejak langsung AppContainers di Process Monitor, Anda dapat menemukannya di aturan firewall keluar yang dibuat oleh Setup untuk mencegah proses membuat koneksi jaringan.

Aturan firewall yang dibuat oleh Penyetelan

Secara default, SQL Server menonaktifkan koneksi keluar dengan membuat aturan firewall. Sebelumnya, aturan ini didasarkan pada akun pengguna lokal, di mana Setup membuat satu aturan keluar untuk SQLRUserGroup yang menolak akses jaringan bagi para anggotanya (setiap akun pekerja dicantumkan sebagai principal lokal yang tercakup dalam aturan tersebut).

Sebagai bagian dari migrasi ke AppContainer, terdapat aturan firewall baru yang didasarkan pada SID AppContainer: satu untuk masing-masing dari 20 AppContainer yang dibuat oleh program penyiapan SQL Server. Konvensi penamaan untuk nama aturan firewall adalah Blokir akses jaringan untuk AppContainer-00 dalam instans SQL Server MSSQLSERVER, di mana 00 adalah jumlah AppContainer (00-20 secara default), dan MSSQLSERVER adalah nama instans SQL Server.

Catatan

Jika komunikasi jaringan diperlukan, Anda dapat menonaktifkan aturan lalu lintas keluar di Windows Firewall.

Izin akses file

Secara default, skrip Python dan R eksternal hanya memiliki izin akses baca ke direktori kerja mereka.

Jika skrip Python atau R Anda memerlukan akses ke direktori lain, Anda perlu memberikan izin Baca & jalankan dan/atau Tulis ke akun pengguna layanan NT Service\MSSQLLaunchpad dan SEMUA PAKET APLIKASI pada direktori ini.

Ikuti langkah-langkah di bawah ini untuk memberikan akses.

  1. Di File Explorer, klik kanan pada folder yang ingin Anda gunakan sebagai direktori kerja, dan pilih Properti.
  2. Pilih Keamanan dan klik Edit... untuk mengubah izin.
  3. Klik Tambahkan...
  4. Pastikan Dari lokasi ini merupakan nama komputer lokal.
  5. Masukkan ALL APPLICATION PACKAGES di Masukkan nama objek yang akan dipilih dan klik Periksa Nama. Klik OK.
  6. Pilih Baca & jalankan di bawah kolom Izinkan .
  7. Pilih Tulis di bawah kolom Izinkan , jika Anda ingin memberikan izin tulis.
  8. Klik OK dan OK.

Izin berkas program

Seperti rilis sebelumnya, SQLRUserGroup terus memberikan izin baca dan jalankan pada executable di direktori SQL Server Binn, R_SERVICES, dan PYTHON_SERVICES . Dalam rilis ini, satu-satunya anggota SQLRUserGroup adalah akun layanan Launchpad SQL Server. Saat layanan Launchpad memulai lingkungan eksekusi R atau Python, proses berjalan sebagai layanan LaunchPad.

Autentikasi tersirat

Seperti sebelumnya, konfigurasi tambahan masih diperlukan untuk autentikasi tersirat dalam kasus di mana skrip atau kode harus terhubung kembali ke SQL Server menggunakan autentikasi tepercaya untuk mengambil data atau sumber daya. Konfigurasi tambahan melibatkan pembuatan login database untuk SQLRUserGroup, yang anggota tunggalnya sekarang menjadi satu akun layanan Launchpad SQL Server alih-alih beberapa akun pekerja. Untuk informasi selengkapnya tentang tugas ini, lihat Tambahkan SQLRUserGroup sebagai pengguna database.

Tautan simbolis dibuat ke R_SERVICES dan PYTHON_SERVICES default saat ini sebagai bagian dari penyiapan SQL Server. Jika Anda tidak ingin membuat tautan ini, alternatifnya adalah memberikan izin baca kepada 'semua paket aplikasi' untuk hierarki menuju folder tersebut.