在 Junos 设备上执行 Python 自动化脚本的要求
执行 Python 脚本的要求
您可以使用 Python 编写 Junos OS 提交、事件、操作和 SNMP 自动化脚本。为防止未经授权的 Python 代码执行,默认情况下,Junos 设备不允许执行未签名的 Python 脚本。要执行未签名的 Python 脚本,除了对设备自动化脚本的正常要求外,还必须满足以下要求:
-
文件所有者在 Junos OS
super-user
登录类中为 root 或用户。 -
只有文件所有者才有为该文件写入许可。
-
通过在层次结构级别配置
language python
或language python3
语句来启用未签名 Python 脚本的[edit system scripts]
执行。注意:如果配置语
language python3
句,设备将使用 Python 3 执行支持此 Python 版本的脚本,并且在给定 Junos OS 版本中使用 Python 2.7 执行不支持 Python 3 的脚本。有关更多信息,请参阅 了解 Junos 设备的 Python 自动化脚本。注意:从 Junos OS Evolved 版本 21.2R1 开始,
junos-defaults
配置组默认包含语language python
句。注意:要使不属于该文件的用户或组类的用户执行未签名的 Python 自动化脚本,脚本的文件权限必须包括其他人的读取权限。
与 SLAX 和 XSLT 自动化脚本一样,您必须在设备的相应目录中存储 Python 自动化脚本,并且您必须通过在适合配置中的脚本类型的层次结构级别下配置脚本文件名来启用各个脚本。有关存储和支持自动化脚本的信息,请参阅 Store and Enable Junos Automation Scripts。
我们建议您配置校验和验证 Python 脚本的完整性。要为本地脚本指定校验和,请为特定类型的脚本在层次结构中的语句下[file filename]
配置 checksum
语句。要为远程操作脚本指定校验和,请在key
使用 命令执行脚本时包括该op url
参数。从 Junos OS 18.2R2 和 18.3R1 版开始,如果您执行未签名的 Python 脚本未配置校验和,Junos 设备会在系统日志文件中记录CSCRIPT_SECURITY_WARNING消息。例如:
CSCRIPT_SECURITY_WARNING: unsigned python script '/var/db/scripts/op/sample.py' without checksum is executed
为 Python 脚本配置访问权限
从 Junos OS 版本 16.1R3 开始,交互式 Python 脚本(如提交和操作脚本)利用执行调用脚本的命令或操作的用户的访问权限运行。非交互式 Python 脚本(例如事件和 SNMP 脚本)默认在用户和组nobody
的权限下执行。要使用特定用户的访问权限执行事件或 SNMP 脚本,必须在层级为事件脚本或 [edit system scripts snmp file filename]
SNMP 脚本的层次结构级别配置python-script-user username
语句[edit event-options event-script file filename]
,并指定在层次结构级别上配置的[edit system login]
用户。
例如:
[edit event-options event-script] file filename { python-script-user username; }
[edit system scripts snmp] file filename { python-script-user username; }
您无法配置 Python 事件和 SNMP 脚本以执行 root 访问权限。
按版本对要求更改的汇总
从 Junos OS 16.1R3 版开始,部分未签名 Python 脚本的所有权和访问权限要求将进行修改。在 Junos OS 版本 16.1R2 和早期版本中,未签名的 Python 提交、事件、操作和 SNMP 脚本必须归 root 用户所有,而 Junos OS 使用 *nix 用户和组 nobody
(即通用、无权限系统帐户)的访问权限执行脚本。从 Junos OS 版本 16.1R3 开始,未签名的 Python 自动化脚本必须归 Junos OS super-user
登录类中的 root 用户或用户所有,并且只有文件所有者才能为该文件写入许可。此外,Python 自动化脚本可通过授权用户的访问权限执行。
表 1 概述了在 Junos OS 支持 Veriexec 的不同版本中执行未签名的 Python 自动化脚本的要求。
要求/限制 |
Junos OS 版本 16.1R2 或更低版本 |
Junos OS 版本 16.1R3 或更高版本 |
---|---|---|
文件所有者 |
根用户 |
Junos OS |
文件编写权限 |
任何 |
仅文件所有者 |
注意:
Junos OS 19.4R1 和更高版本支持 Python 3。 |
是的 |
是的 |
脚本必须在适合该脚本类型的层次结构下的配置中启用 |
是的 |
是的 |
访问权限 |
所有 Python 自动化脚本均使用用户和组的访问权限执行 |
Python 提交和操作脚本使用调用脚本的用户的访问权限执行。 Python 事件和 SNMP 脚本使用语句中 |
language python
该语句默认配置在配置组中
junos-defaults
。