Share via


SQL Server in Windows: Isolatiewijzigingen voor Machine Learning Services

Van toepassing op: SQL Server 2019 (15.x) en latere versies in Windows en SQL Server 2022 (16.x) - alleen Windows

In dit artikel worden de wijzigingen in het isolatiemechanisme in Machine Learning Services in SQL Server in Windows beschreven, die voor het eerst zijn geïntroduceerd in SQL Server 2019. Deze wijzigingen zijn van invloed op SQLRUserGroup, firewallregels, bestandsmachtigingen en impliciete verificatie.

Zie voor meer informatie hoe u SQL Server Machine Learning Services installeert in Windows.

Wijzigingen in isolatiemechanisme

In Windows wijzigt SQL Setup het isolatiemechanisme voor externe processen. Deze wijziging vervangt lokale werkrollenaccounts door AppContainers, een isolatietechnologie voor clienttoepassingen die worden uitgevoerd in Windows.

Er zijn geen specifieke actie-items voor de beheerder als gevolg van de wijziging. Op een nieuwe of bijgewerkte server volgen alle externe scripts en code die worden uitgevoerd vanuit sp_execute_external_script automatisch het nieuwe isolatiemodel.

Samengevat zijn de belangrijkste verschillen in deze release:

  • Lokale gebruikersaccounts onder SQL Restricted User Group (SQLRUserGroup) worden niet meer gemaakt of gebruikt om externe processen uit te voeren. AppContainers vervangen ze.
  • Het LIDMAATSCHAP van SQLRUserGroup is gewijzigd. In plaats van meerdere lokale gebruikersaccounts bestaat het lidmaatschap alleen uit het SQL Server Launchpad-serviceaccount. R- en Python-processen worden nu uitgevoerd onder de Launchpad-service-identiteit, geïsoleerd via AppContainers.

Hoewel het isolatiemodel is gewijzigd, blijven de installatiewizard en opdrachtregelparameters hetzelfde in vergelijking met oudere versies van SQL Server. Zie SQL Server 2016-2019 Machine Learning Services installeren of SQL Server 2022 Machine Learning Services (Python en R) installeren in Windows voor hulp bij de installatie.

Over AppContainer-isolatie

In eerdere versies bevatte SQLRUserGroup een groep lokale Windows-gebruikersaccounts (MSSQLSERVER00-MSSQLSERVER20) die wordt gebruikt voor het isoleren en uitvoeren van externe processen. Wanneer een extern proces nodig was, zou de SQL Server Launchpad-service een beschikbaar account nemen en dit gebruiken om een proces uit te voeren.

Vanaf SQL Server 2019 maakt SQL Setup geen lokale werkrolaccounts meer. In plaats daarvan wordt isolatie bereikt via AppContainers. Wanneer ingesloten scripts of code tijdens runtime worden gedetecteerd in een opgeslagen procedure of query, roept SQL Server Launchpad aan met een aanvraag voor een extensiespecifiek startprogramma. Launchpad roept de juiste runtime-omgeving aan in een proces onder de bijbehorende identiteit en instantieert een AppContainer om deze te bevatten. Deze wijziging is nuttig omdat lokaal account- en wachtwoordbeheer niet meer vereist is. Bij installaties waarbij lokale gebruikersaccounts zijn verboden, betekent het verwijderen van de afhankelijkheid van het lokale gebruikersaccount ook dat u deze functie nu kunt gebruiken.

Zoals geïmplementeerd door SQL Server, zijn AppContainers een intern mechanisme. Hoewel u geen fysiek bewijs ziet van AppContainers in Procesmonitor, kunt u deze vinden in uitgaande firewallregels die zijn gemaakt door Setup om te voorkomen dat processen netwerkoproepen uitvoeren.

Firewallregels die zijn gemaakt door Setup

Sql Server schakelt standaard uitgaande verbindingen uit door firewallregels te maken. In het verleden waren deze regels gebaseerd op lokale gebruikersaccounts, waarbij Setup één uitgaande regel voor SQLRUserGroup heeft gemaakt die netwerktoegang tot de leden heeft geweigerd (elk werkrolaccount werd vermeld als een lokaal principe dat onderhevig is aan de regel).

Als onderdeel van de overstap naar AppContainers zijn er nieuwe firewallregels op basis van AppContainer-SID's: één voor elk van de 20 AppContainers die zijn gemaakt door SQL Server Setup. Naamconventies voor de naam van de firewallregel zijn Netwerktoegang blokkeren voor AppContainer-00 in SQL Server-exemplaar MSSQLSERVER, waarbij 00 het nummer is van de AppContainer (standaard 00-20) en MSSQLSERVER de naam van het SQL Server-exemplaar is.

Opmerking

Als netwerkoproepen vereist zijn, kunt u de uitgaande regels in Windows Firewall uitschakelen.

Bestandsmachtigingen

Externe Python- en R-scripts hebben standaard alleen leestoegangsmachtigingen voor hun werkmappen.

Als uw Python- of R-scripts toegang nodig hebben tot een andere map, moet u lees - en/of schrijfmachtigingen verlenen voor het gebruikersaccount van de NT Service\MSSQLLaunchpad-service en ALLE TOEPASSINGSPAKKETTEN in deze map.

Volg de onderstaande stappen om toegang te verlenen.

  1. Klik in Verkenner met de rechtermuisknop op de map die u wilt gebruiken als werkmap en selecteer Eigenschappen.
  2. Selecteer Beveiliging en klik op Bewerken... om machtigingen te wijzigen.
  3. Klik op Toevoegen...
  4. Zorg ervoor dat deze locatie de naam van de lokale computer is.
  5. Voer ALLE TOEPASSINGSPAKKETTEN in bij De objectnamen invoeren om te selecteren en klik op Namen controleren. Klik op OK.
  6. Selecteer Lezen en uitvoeren onder de kolom Toestaan .
  7. Selecteer Schrijven onder de kolom Toestaan als u schrijfmachtigingen wilt verlenen.
  8. Klik op OK en OK.

Machtigingen voor programmabestanden

Net als bij eerdere releases blijft de SQLRUserGroup lees- en uitvoermachtigingen bieden voor uitvoerbare bestanden in de SQL Server Binn, R_SERVICES en PYTHON_SERVICES mappen. In deze release is het enige lid van SQLRUserGroup het SQL Server Launchpad-serviceaccount. Wanneer de Launchpad-service een R- of Python-uitvoeringsomgeving start, wordt het proces uitgevoerd als LaunchPad-service.

Impliciete authenticatie

Net als voorheen is er nog steeds aanvullende configuratie vereist voor impliciete verificatie in gevallen waarin script of code verbinding moet maken met SQL Server met behulp van vertrouwde verificatie om gegevens of resources op te halen. De aanvullende configuratie omvat het maken van een databaseaanmelding voor SQLRUserGroup, waarvan het enige lid nu het individuele SQL Server Launchpad-serviceaccount is in plaats van meerdere werkrolaccounts. Zie SQLRUserGroup toevoegen als databasegebruiker voor meer informatie over deze taak.

Er wordt een symbolische koppeling gemaakt naar de huidige standaard-R_SERVICES en PYTHON_SERVICES als onderdeel van sql Server Setup. Als u deze koppeling niet wilt maken, is het een alternatief om leesmachtigingen voor alle toepassingspakketten toe te kennen aan de hiërarchie die naar de map leidt.

Zie ook