Anforderungen für die Ausführung von Python-Automatisierungsskripts auf Junos-Geräten
Anforderungen für die Ausführung von Python-Skripten
Sie können Python verwenden, um Junos OS-Commit-, Event-, Op- und SNMP-Automatisierungsskripte zu erstellen. Um die Ausführung von nicht autorisiertem Python-Code zu verhindern, lassen Junos-Geräte standardmäßig keine Ausführung nicht signierter Python-Skripts zu. Um ein unsigniertes Python-Skript auszuführen, müssen die folgenden Anforderungen erfüllt sein, die zusätzlich zu den normalen Anforderungen für Onbox-Automatisierungsskripte gelten:
-
Der Dateibesitzer ist entweder root oder ein Benutzer in der Junos OS-Anmeldeklasse
super-user
. -
Nur der Dateibesitzer hat Schreibrechte für die Datei.
-
Die Ausführung von nicht signierten Python-Skripten wird durch die Konfiguration der
language python
oder-Anweisunglanguage python3
auf Hierarchieebene[edit system scripts]
ermöglicht.Hinweis:Wenn Sie die
language python3
Anweisung konfigurieren, verwendet das Gerät Python 3 zum Ausführen von Skripts, die diese Python-Version unterstützen, und Python 2.7 zum Ausführen von Skripts, die Python 3 in der angegebenen Junos OS-Version nicht unterstützen. Weitere Informationen finden Sie unter Grundlegendes zu Python-Automatisierungsskripts für Junos-Geräte.Hinweis:Ab Junos OS Evolved Version 21.2R1 enthält die Konfigurationsgruppe standardmäßig die
junos-defaults
language python
Anweisung.Hinweis:Damit ein Benutzer, der nicht zur Benutzer- oder Gruppenklasse der Datei gehört, ein unsigniertes Python-Automatisierungsskript ausführen kann, müssen die Dateiberechtigungen des Skripts die Leseberechtigung für andere enthalten.
Wie bei SLAX- und XSLT-Automatisierungsskripten müssen Sie Python-Automatisierungsskripte im entsprechenden Verzeichnis auf dem Gerät speichern und einzelne Skripts aktivieren, indem Sie den Skriptdateinamen unter der Hierarchieebene konfigurieren, die dem Skripttyp in der Konfiguration entspricht. Weitere Informationen zum Speichern und Aktivieren von Automatisierungsskripts finden Sie unter Speichern und Aktivieren von Junos-Automatisierungsskripts.
Es wird empfohlen, eine Prüfsumme zu konfigurieren, um die Integrität von Python-Skripten zu überprüfen. Wenn Sie eine Prüfsumme für ein lokales Skript angeben möchten, konfigurieren Sie die checksum
Anweisung unter der Anweisung in der [file filename]
Hierarchie für Ihren spezifischen Skripttyp. Um eine Prüfsumme für ein Remote-Op-Skript anzugeben, schließen Sie das Argument ein, wenn Sie das key
Skript mit dem op url
Befehl ausführen. Wenn Sie ab Junos OS Version 18.2R2 und 18.3R1 ein unsigniertes Python-Skript ausführen, für das keine Prüfsumme konfiguriert ist, protokollieren Junos-Geräte eine CSCRIPT_SECURITY_WARNING Meldung in der Systemprotokolldatei. Zum Beispiel:
CSCRIPT_SECURITY_WARNING: unsigned python script '/var/db/scripts/op/sample.py' without checksum is executed
Konfigurieren von Zugriffsrechten für Python-Skripte
Ab Junos OS Version 16.1R3 werden interaktive Python-Skripts, z. B. Commit- und Op-Skripte, mit den Zugriffsrechten des Benutzers ausgeführt, der den Befehl oder Vorgang ausführt, der bzw. der das Skript aufruft. Nicht interaktive Python-Skripte, wie z. B. Ereignis- und SNMP-Skripte, werden standardmäßig mit den Rechten des Benutzers und der Gruppe nobody
ausgeführt. Um Ereignis- oder SNMP-Skripte mit den Zugriffsrechten eines bestimmten Benutzers auszuführen, müssen Sie die python-script-user username
Anweisung auf der Hierarchieebene für Ereignisskripte oder der Hierarchieebene für SNMP-Skripte konfigurieren und einen auf der [edit event-options event-script file filename]
[edit system scripts snmp file filename]
[edit system login]
Hierarchieebene konfigurierten Benutzer angeben.
Zum Beispiel:
[edit event-options event-script] file filename { python-script-user username; }
[edit system scripts snmp] file filename { python-script-user username; }
Sie können Python-Ereignis- und SNMP-Skripte nicht so konfigurieren, dass sie mit Root-Zugriffsrechten ausgeführt werden.
Zusammenfassung der Anforderungsänderungen nach Release
Ab Junos OS Version 16.1R3 wurden die Anforderungen an den Besitz und die Zugriffsrechte für einige nicht signierte Python-Skripts geändert. In Junos OS Version 16.1R2 und früheren Versionen müssen nicht signierte Python-Commit-, Event-, Op- und SNMP-Skripts dem Root-Benutzer gehören, und Junos OS führt die Skripts mit den Zugriffsrechten des *nix-Benutzers und der *nix-Gruppe nobody
aus, bei denen es sich um das generische, nicht privilegierte Systemkonto handelt. Ab Junos OS Version 16.1R3 müssen nicht signierte Python-Automatisierungsskripts entweder dem Root-Benutzer oder einem Benutzer in der Junos OS-Anmeldeklasse super-user
gehören, und nur der Dateibesitzer kann Schreibberechtigungen für die Datei haben. Darüber hinaus können Python-Automatisierungsskripte mit den Zugriffsrechten autorisierter Benutzer ausgeführt werden.
Tabelle 1 beschreibt die Anforderungen für die Ausführung nicht signierter Python-Automatisierungsskripts in den verschiedenen Veriexec-fähigen Versionen von Junos OS.
Anforderung/Einschränkung |
Junos OS Version 16.1R2 oder frühere Version |
Junos OS Version 16.1R3 oder höher |
---|---|---|
Eigentümer der Datei |
Root-Benutzer |
Root-Benutzer oder ein Benutzer in der Junos OS-Anmeldeklasse |
Schreibberechtigungen für Dateien |
Jegliche |
Nur für den Eigentümer der Datei |
Hinweis:
Python 3 wird in Junos OS Version 19.4R1 und höheren Versionen unterstützt. |
Ja |
Ja |
Das Skript muss in der Konfiguration unter der Hierarchie aktiviert sein, die diesem Skripttyp entspricht |
Ja |
Ja |
Zugriffsrechte |
Alle Python-Automatisierungsskripte werden mit den Zugriffsrechten des Benutzers und der Gruppe ausgeführt |
Python-Commit- und Op-Skripte werden mit den Zugriffsrechten des Benutzers ausgeführt, der das Skript aufruft. Python-Ereignis- und SNMP-Skripte werden mit den Zugriffsrechten des in der |
language python
Anweisung standardmäßig in der
junos-defaults
Konfigurationsgruppe konfiguriert.