SQL Server für Windows: Isolationsänderungen für Machine Learning Services

Gilt für: SQL Server 2019 (15.x) und höher – nur Windows und SQL Server 2022 (16.x) – nur Windows

In diesem Artikel werden die Änderungen am Isolationsmechanismus in Machine Learning Services in SQL Server unter Windows beschrieben, die zuerst in SQL Server 2019 eingeführt wurden. Diese Änderungen wirken sich auf SQLRUserGroup, Firewallregeln, Dateiberechtigungen und die implizite Authentifizierung aus.

Weitere Informationen finden Sie unter Installieren von SQL Server Machine Learning Services unter Windows.

Änderungen am Isolationsmechanismus

Beim SQL-Setup wurde unter Windows der Isolationsmechanismus für externe Prozesse geändert. Im Rahmen dieser Änderung wurden lokale Workerkonten durch AppContainer ersetzt. Hierbei handelt es sich um eine Isolationstechnologie für Clientanwendungen, die unter Windows ausgeführt werden.

Aufgrund der Änderung sind für den Administrator keine bestimmten Aktionselemente vorhanden. Auf einem neuen oder aktualisierten Server gehorchen alle externen Skripts und Codes, die über sp_execute_external_script ausgeführt werden, automatisch dem neuen Isolationsmodell.

Die wichtigsten Änderungen in diesem Release:

  • Lokale Benutzerkonten unter SQL Restricted User Group (SQLRUserGroup) (unter SQL eingeschränkte Benutzergruppe) werden nicht mehr erstellt oder zum Ausführen externer Prozesse verwendet. Diese werden durch AppContainer ersetzt.
  • Die Mitgliedschaft in SQLRUserGroup wurde geändert. Eine Mitgliedschaft besteht nun nicht mehr aus mehreren lokalen Benutzerkonten, sondern nur noch aus dem SQL Server-Launchpad-Dienstkonto. R- und Python-Prozesse werden nun isoliert durch AppContainer unter der Launchpad-Dienstidentität ausgeführt.

Obwohl sich das Isolationsmodell geändert hat, bleiben Installations-Assistent und Befehlszeilenparameter im Vergleich zu älteren Versionen von SQL Server unverändert. Weitere Informationen zur Installation finden Sie unter Installieren von SQL Server 2016-2019 Machine Learning Services oder Installieren von SQL Server 2022 Machine Learning Services (Python und R) unter Windows.

Informationen zur AppContainer-Isolation

In früheren Releases enthielt SQLRUserGroup einen Pool mit lokalen Windows-Benutzerkonten (MSSQLSERVER00-MSSQLSERVER20), die zum Isolieren und Ausführen externer Prozesse verwendet wurden. Wenn ein externer Prozess ausgeführt werden musste, hat der SQL Server-Launchpad-Dienst dazu ein verfügbares Konto verwendet.

Ab SQL Server 2019 werden vom SQL-Setup keine lokalen Workerkonten mehr erstellt. Stattdessen wird die Isolation durch AppContainer erreicht. Wenn zur Laufzeit in einer gespeicherten Prozedur oder Abfrage eingebettete Skripts oder Codes erkannt werden, ruft SQL Server Launchpad mit der Anforderung eines erweiterungsspezifischen Startprogramms auf. Launchpad ruft die entsprechende Laufzeitumgebung in einem Prozess unter seiner Identität auf und instanziiert einen AppContainer, um ihn aufzunehmen. Diese Änderung hat den Vorteil, dass keine lokalen Konten und Kennwörter mehr verwaltet werden müssen. Zudem kann dank dem Wegfall der Abhängigkeit von lokalen Benutzerkonten dieses Feature nun in Installationen verwendet werden, bei denen lokale Benutzerkonten nicht zulässig sind.

Gemäß der Implementierung durch SQL Server handelt es sich bei AppContainern um einen internen Mechanismus. Obwohl sich AppContainer im Prozessmonitor physisch nicht nachweisen lassen, sind sie dennoch in Firewallregeln für ausgehenden Datenverkehr zu finden, die beim Setup erstellt werden, um zu verhindern, dass Prozesse Netzwerkaufrufe ausführen.

Von Setup erstellte Firewallregeln

Standardmäßig werden ausgehende Verbindungen von SQL Server durch Erstellen von Firewallregeln deaktiviert. Bisher haben diese Regeln auf lokalen Benutzerkonten basiert, bei denen im Rahmen des Setups eine Ausgangsregel für SQLRUserGroup erstellt wurde, die für die Mitglieder den Netzwerkzugriff verweigert hat (jedes Workerkonto wurde gemäß der Regel als lokales Prinzip aufgeführt).

Aufgrund des Wechsels zu AppContainer gibt es nun neue Firewallregeln, die auf AppContainer-SIDs basieren: jeweils eine Regel für jede der 20 von SQL Server-Setup erstellten AppContainer. Die Namenskonvention für den Namen der Firewallregel lautet Netzwerkzugriff für AppContainer-00 in SQL Server-Instanz MSSQLSERVER blockieren, wobei 00 für die Nummer des AppContainers (standardmäßig 00-20) steht und MSSQLSERVER der Name der SQL Server-Instanz ist.

Hinweis

Wenn Netzwerkaufrufe erforderlich sind, können Sie die Ausgangsregeln in der Windows-Firewall deaktivieren.

Dateiberechtigungen

Standardmäßig haben externe Python- und R-Skripts nur eine Berechtigung in Form von Lesezugriff auf ihre Arbeitsverzeichnisse.

Wenn Ihre Python- oder R-Skripts auf andere Verzeichnisse zugreifen müssen, müssen Sie dem Dienstbenutzerkonto NT Service\MSSQLLaunchpad und ALLEN ANWENDUNGSPAKETEN in diesem Verzeichnis entweder Lesen und Ausführen- und/oder Schreib-Berechtigungen erteilen.

Befolgen Sie die untenstehenden Schritte, um Zugriff zu gewähren.

  1. Klicken Sie im Datei-Explorer mit der rechten Maustaste auf den Ordner, den Sie als Arbeitsverzeichnis verwenden möchten, und wählen Sie Eigenschaften aus.
  2. Klicken Sie auf Sicherheit, und klicken Sie auf Bearbeiten… , um die Berechtigungen zu ändern.
  3. Klicken Sie auf Hinzufügen… .
  4. Stellen Sie sicher, dass es sich bei Suchpfad: um den Namen des lokalen Computers handelt.
  5. Geben Sie ALLE ANWENDUNGSPAKETE unter Geben Sie die Namen der auszuwählenden Objekte ein ein, und klicken Sie auf Namen überprüfen. Klicken Sie auf OK.
  6. Klicken Sie unter der Spalte Zulassen auf die Option Lesen und Ausführen.
  7. Klicken Sie unter der Spalte Zulassen auf die Option Schreiben, wenn Sie Leseberechtigungen gewähren möchten.
  8. Klicken Sie auf OK und dann noch mal auf OK.

Berechtigungen für Programmdateien

Wie bei früheren Releases stellt SQLRUserGroup weiterhin die Berechtigungen zum Lesen und Ausführen von ausführbaren Dateien in den SQL Server-Verzeichnissen Binn, R_SERVICES und PYTHON_SERVICES bereit. In diesem Release enthält SQLRUserGroup als einziges Mitglied das SQL Server-Launchpad-Dienstkonto. Wenn durch den Launchpad-Dienst eine R- oder Python-Ausführungsumgebung aufgerufen wird, wird der Prozess als LaunchPad-Dienst ausgeführt.

Implizite Authentifizierung

Für die implizite Authentifizierung ist wie bisher eine zusätzliche Konfiguration erforderlich, wenn das Skript oder der Code zum Abrufen von Daten oder Ressourcen erneut eine Verbindung mit SQL Server über eine vertrauenswürdige Authentifizierung herstellen muss. Im Rahmen der zusätzlichen Konfiguration muss für SQLRUserGroup eine Datenbankanmeldung erstellt werden. Diese Gruppe enthält nun nicht mehr mehrere Workerkonten, sondern nur noch das SQL Server-Launchpad-Dienstkonto. Weitere Informationen zu diesem Task finden Sie unter Hinzufügen von SQLRUserGroup als Datenbankbenutzer.

Im Rahmen des SQL Server-Setups wird für die aktuellen Standardverzeichnisse R_SERVICES und PYTHON_SERVICES eine symbolische Verknüpfung erstellt. Wenn Sie nicht möchten, dass diese Verknüpfung erstellt wird, können Sie „allen Anwendungspaketen“ eine Leseberechtigung für den Ordner in der Hierarchie weiter oben gewähren.

Weitere Informationen: