SQL Server di Windows: Perubahan isolasi untuk Layanan Pembelajaran Mesin

Berlaku untuk: SQL Server 2019 (15.x) dan yang lebih baru - Hanya 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 SQL Server Pembelajaran Mesin Services 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 dibandingkan dengan versi SQL Server yang lebih lama. Untuk bantuan tentang penginstalan, lihat Menginstal SQL Server 2016-2019 Pembelajaran Mesin Services atau Menginstal SQL Server 2022 Pembelajaran Mesin Services (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 memanggil lingkungan runtime yang sesuai dalam proses di bawah identitasnya, dan membuat instans AppContainer untuk memuatnya. 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 bukti fisik AppContainers di Monitor Proses, Anda dapat menemukannya dalam aturan firewall keluar yang dibuat oleh Penyiapan untuk mencegah proses melakukan panggilan jaringan.

Aturan firewall yang dibuat oleh Penyetelan

Secara default, SQL Server menonaktifkan koneksi keluar dengan membuat aturan firewall. Di masa lalu, aturan ini didasarkan pada akun pengguna lokal, di mana Penyiapan membuat satu aturan keluar untuk SQLRUserGroup yang menolak akses jaringan ke anggotanya (setiap akun pekerja terdaftar sebagai prinsip lokal yang tunduk pada aturan).

Sebagai bagian dari perpindahan ke AppContainers, ada aturan firewall baru berdasarkan SID AppContainer: satu untuk masing-masing dari 20 AppContainers yang dibuat oleh 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 panggilan jaringan diperlukan, Anda dapat menonaktifkan aturan keluar di Windows Firewall.

Izin 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 adalah nama komputer lokal.
  5. Masukkan SEMUA PAKET APLIKASI di Masukkan nama objek untuk memilih 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 file 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 Menambahkan SQLRUserGroup sebagai pengguna database.

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

Baca juga