Migrieren Sie SystemLink Jupyter-Notebooks in den Modus "Least-Privilege", indem Sie Berechtigungsbeschränkungen, API-Zugriff und Änderungen am Profilpfad beachten.

SystemLink kann Zugriffsbeschränkungen für Notebooks festlegen, die vor der Implementierung des Modus mit den geringsten Berechtigungen erstellt wurden.

Die folgenden Benutzertypen sind am wahrscheinlichsten von diesen Einschränkungen betroffen:

  • Benutzer, die von SystemLink 2026 Q2 oder älteren Versionen aktualisieren.
  • Benutzer mit Notebooks, die einen breiteren Zugriff erfordern.

Notebooks, die auf Berechtigungen des LOCAL SERVICE angewiesen sind, können im Modus "Least-Privilege" fehlschlagen. In der folgenden Tabelle werden alle betroffenen Leistungsmerkmale und die empfohlenen Maßnahmen aufgeführt.

Tabelle 18. Von der Umstellung auf den Modus mit den niedrigsten Berechtigungen betroffene Funktionen
Eigenschaft Grund blockiert Migration
Lesen von Dienstkonfigurationsdateien unter %ProgramData%\National Instruments\Skyline\Config\ Allen ACE verweigern Verwenden Sie die SystemLink Python API. Der Session-Schlüssel für den Kernel ist in der Umgebungsvariablen SYSTEMLINK_API_KEY verfügbar.
Lesen oder Schreiben in Skyline-Datenbanken wie NoSqlDatabase, PostgreSQLDatabase, KeyValueDatabase Allen ACE verweigern Verwenden Sie die entsprechende SystemLink Python API.
Lesen von RabbitMQ-Zugangsdaten oder Salt-Zugangsdaten Allen ACE verweigern
Schreiben in %ProgramData%\National Instruments\Skyline\Data\ Verweigerungs-ACE für Schreibzugriff Notebooks benötigen diese Funktion nicht. Verwenden Sie die HTTP-API zur Interaktion mit Skyline-Diensten.
Installieren von Python-Paketen mit pip install

Lese- und Ausführungsrechte sind nur auf dem folgenden Pfad vorhanden.

%ProgramFiles%\National
              Instruments\Shared\Skyline\Python\<version>\

Außerdem gibt es ein Verweigerungs-ACE für Schreibzugriff auf dem folgenden Pfad.

%ProgramData%\National
              Instruments\Skyline\JupyterHub\profile\AppData\Roaming\Python
Installieren Sie Paketanforderungen mit Hilfe eines Administrators. Weitere Informationen finden Sie unter Python Package Installer Behavior for Least-Privilege Mode.
Lesen oder Schreiben in gemeinsam genutzte oder benutzerdefinierte Dateisystempfade SystemLinkNotebooks hat kein explizites ACE. Der Zugriff hängt von den Berechtigungen ab, die der Pfad der Gruppe Benutzer bereits erteilt. Weitere Informationen finden Sie in der Dokumentation zum Provisioning Tool. Wenn SystemLink den Zugriff verweigert, müssen Sie SystemLinkNotebooks ausdrücklich Zugriff gewähren. Weitere Informationen finden Sie unter Entschärfung der Berechtigungen für den Modus mit geringsten Rechten. Persönliche Benutzerprofilpfade unter C:\Users\ sind nicht zugänglich.
Ausführen von privilegierten Befehlen wie Restart-Computer oder Stop-Service Ein eingeschränktes Token entfernt erhöhte Berechtigungen. Verschieben Sie die privilegierte Operation in einen geplanten Task oder Windows-Dienst, der unter einem Konto mit den richtigen Rechten ausgeführt wird.
Andere Benutzer ausgeben oder auf die SAM-Datenbank zugreifen Es gibt ein eingeschränktes Token.
Senden von HTTP-Anfragen über die nisystemlink.*-Clientbibliothek Das Standardbibliotheks-CA-Bundle vertraut dem Serverzertifikat nicht. Geben Sie das Serverzertifikat an. Weitere Informationen finden Sie unter Certificate Errors for NI SystemLink Clients.

Führen Sie folgende Schritte aus, um Ihre vorhandenen Notebooks in den Modus mit den niedrigsten Berechtigungen zu migrieren:

  1. Identifizieren Sie die Notebooks, die im Modus "Least-Privilege" fehlschlagen können.
    Hinweis NI empfiehlt, diese Notebooks präventiv zu identifizieren, bevor Benutzer auf Fehler stoßen.
    1. Legen Sie LimitJupyterPrivileges in der folgenden Konfigurationsdatei vorübergehend auf false fest.
      %PROGRAMDATA%\National Instruments\Skyline\Config\JupyterHub.json
    2. Starten Sie in der Anwendung SystemLink Server Configuration die SystemLink-Dienste neu.
    3. Navigieren Sie in der SystemLink Weboberfläche zu Utilities » Jupyter und starten Sie jedes Notebook interaktiv in JupyterHub.
    4. Notieren Sie die Ergebnisse.
      Die Zellenausgabe ist direkt in der Weboberfläche sichtbar. Per Voreinstellung zeigt der Notebook-Ausführungsdienst diese Ausgabe nicht an.
    5. Legen Sie in der Konfigurationsdatei LimitJupyterPrivileges wieder auf true fest.
    6. Starten Sie die Dienste neu und führen Sie sie erneut aus.
      Die folgenden Notebooks sind Kandidaten für die Migration.
      • Zellen, die PermissionError nur unter true ausgeben.
      • Zellen, die Zugriff verweigert nur unter true ausgeben.
      • Zellen mit einer Ausnahme von SystemExit.
      • Exit-Code ungleich 0.
  2. Ersetzen Sie den direkten Dateizugriff durch HTTP-API-Aufrufe.
    • Notebooks, die SystemLink-Konfigurationsdateien oder Datenbankdateien direkt lesen, müssen die SystemLink-Python-API verwenden.
    • Die Bibliothek nisystemlink-clients konfiguriert die Authentifizierung automatisch, wenn sie in einer SystemLink Jupyter-Umgebung ausgeführt wird. Die Bibliothek muss keinen API-Schlüssel verarbeiten.
    • Verwenden Sie für unformatierte HTTP-Anfragen den folgenden Session-Schlüssel.
      import os
      api_key = os.environ.get("SYSTEMLINK_API_KEY")
    Hinweis Wenn Ihr SystemLink Server ein internes CA-Zertifikat verwendet, müssen Sie auch einen Zertifikatsfehler beheben, bevor die Bibliothek eine Verbindung herstellen kann. Weitere Informationen finden Sie unter Certificate Errors for NI SystemLink Clients. Wenn dazu eine explizite HttpConfiguration erforderlich ist, müssen Sie auch die Authentifizierungsparameter angeben. Die automatische Authentifizierung gilt nur, wenn Sie die HttpConfiguration nicht angeben.
  3. Prüfen Sie auf einen pfadsensitiven Zustand aus vorherigen Ausführungen.
    Wenn Sie den Modus der kleinsten Berechtigungen aktivieren, leitet der Spawner die folgenden Umgebungsvariablen in ein Jupyter-Profilverzeichnis um.
    Hinweis SystemLinkJupyterHub und SystemLinkNotebookEx teilen sich denselben Profilpfad.
    Tabelle 19. Umgebungsvariablen in Profilverzeichnisse
    Umgebungsvariablen Profilverzeichnis
    USERPROFILE, HOME %ProgramData%\National Instruments\Skyline\JupyterHub\profile
    APPDATA %USERPROFILE%\AppData\Roaming
    LOCALAPPDATA %USERPROFILE%\AppData\Local
    TEMP, TMP %USERPROFILE%\AppData\Local\Temp
    SKYLINE_NOTEBOOKS_SCRATCH_DIR %USERPROFILE%\ScratchDir

    Verwenden Sie die Umgebungsvariablen, um auf diese Pfade zu verweisen, anstatt durch fest kodierte Pfade. Die Variablen zeigen immer auf eine beschreibbare Position unter dem neuen Profil. Alle Dateien, die zuvor in diese Pfade geschrieben wurden, als Kernel als LOCAL SERVICE ausgeführt wurden, sind unter den neuen Pfaden nicht vorhanden. Bei LOCAL SERVICE verwiesen diese Pfade auf eine andere physische Position.

    Hinweis Bei Notebooks, die von einem vorherigen Zustand abhängig sind, kopieren Sie die Dateien manuell in den entsprechenden Pfad unter dem Jupyter-Profilverzeichnis.
  4. Ersetzen Sie In-Notebook-pip install-Aufrufe durch einen Windows-Administrator, der Pakete in die Python-Systemumgebung installiert.
    Weitere Informationen finden Sie unter Python Package Installer Behavior for Least-Privilege Mode.
  5. Gewähren Sie der Gruppe SystemLinkNotebooks Zugriff auf Verzeichnisse für Notebooks, die Datendateien außerhalb des Jupyter-Profilverzeichnisses lesen oder schreiben.
  6. Verschieben Sie die privilegierten Operationen aus Notebooks.
    Befehle, die Administratorrechte erfordern, können nicht in einem Kernel ausgeführt werden, der den Modus der geringsten Berechtigungen verwendet. Beispielbefehle sind der Neustart von Diensten und das Ändern der Systemkonfiguration. Führen Sie zur Einhaltung des Modus mit den geringsten Berechtigungen für diese Befehle folgende Schritte aus:
    • Planen Sie die Befehle als Windows-Tasks.
    • Triggern Sie die Befehle über einen Dienst, der die richtigen Rechte besitzt.
  7. Aktivieren Sie den Modus der kleinsten Berechtigungen erneut.
    1. Stellen Sie in der Konfigurationsdatei sicher, dass LimitJupyterPrivileges auf true zurückgesetzt ist.
    2. Dienste neu starten.