Requisitos para ejecutar scripts de automatización de Python en dispositivos Junos
Requisitos para ejecutar scripts de Python
Puede usar Python para crear scripts de confirmación, eventos, operación y automatización SNMP de Junos OS. Para evitar la ejecución de código Python no autorizado, los dispositivos Junos, de forma predeterminada, no permiten ejecutar scripts de Python sin signo. Para ejecutar una secuencia de comandos de Python sin signo, se deben cumplir los siguientes requisitos, que se suman a los requisitos normales de las secuencias de comandos de automatización onbox:
-
El propietario del archivo es raíz o usuario en la clase de inicio de sesión de Junos OS
super-user
. -
Solo el propietario del archivo tiene permiso de escritura para el archivo.
-
La ejecución de scripts de Python sin signo se habilita mediante la configuración de la
language python
instrucción olanguage python3
en el[edit system scripts]
nivel de jerarquía.Nota:Si configura la
language python3
instrucción, el dispositivo utiliza Python 3 para ejecutar scripts que admiten esta versión de Python y utiliza Python 2.7 para ejecutar scripts que no admiten Python 3 en la versión dada de Junos OS. Para obtener más información, consulte Descripción de scripts de automatización de Python para dispositivos Junos.Nota:A partir de Junos OS versión Evolved 21.2R1, el
junos-defaults
grupo de configuración incluye lalanguage python
instrucción de forma predeterminada.Nota:Para permitir que un usuario que no pertenece a la clase de usuario o grupo del archivo ejecute una secuencia de comandos de automatización de Python sin signo, los permisos de archivo de la secuencia de comandos deben incluir el permiso de lectura para otros.
Al igual que con las secuencias de comandos de automatización SLAX y XSLT, debe almacenar secuencias de comandos de automatización de Python en el directorio adecuado del dispositivo, y debe habilitar secuencias de comandos individuales mediante la configuración del nombre de archivo de secuencia de comandos en el nivel de jerarquía adecuado al tipo de secuencia de comandos en la configuración. Para obtener más información sobre cómo almacenar y habilitar scripts de automatización, consulte Almacenar y habilitar scripts de Junos Automation.
Le recomendamos que configure una suma de comprobación para comprobar la integridad de los scripts de Python. Para especificar una suma de comprobación para una secuencia de comandos local, configure la checksum
instrucción en la [file filename]
instrucción en la jerarquía para el tipo específico de secuencia de comandos. Para especificar una suma de comprobación para una secuencia de comandos de operación remota, incluya el key
argumento cuando ejecute la secuencia de comandos mediante el op url
comando. A partir de Junos OS versión 18.2R2 y 18.3R1, si ejecuta una secuencia de comandos de Python sin signo que no tiene configurada una suma de comprobación, los dispositivos Junos registran un mensaje de CSCRIPT_SECURITY_WARNING en el archivo de registro del sistema. Por ejemplo:
CSCRIPT_SECURITY_WARNING: unsigned python script '/var/db/scripts/op/sample.py' without checksum is executed
Configuración de privilegios de acceso para scripts de Python
A partir de Junos OS versión 16.1R3, los scripts de Python interactivos, como commit y op scripts, se ejecutan con los privilegios de acceso del usuario que ejecuta el comando o la operación que invoca la secuencia de comandos. Las secuencias de comandos de Python no interactivas, como secuencias de comandos SNMP y eventos, se ejecutan de forma predeterminada bajo los privilegios del usuario y del grupo nobody
. Para ejecutar scripts de eventos o SNMP mediante los privilegios de acceso de un usuario específico, debe configurar la python-script-user username
instrucción en el [edit event-options event-script file filename]
nivel de jerarquía para secuencias de comandos de eventos o el [edit system scripts snmp file filename]
nivel de jerarquía para scripts SNMP y especificar un usuario configurado en el [edit system login]
nivel de jerarquía.
Por ejemplo:
[edit event-options event-script] file filename { python-script-user username; }
[edit system scripts snmp] file filename { python-script-user username; }
No puede configurar secuencias de comandos SNMP y eventos de Python para que se ejecuten con privilegios de acceso raíz.
Resumen de los cambios de requisitos por versión
A partir de Junos OS versión 16.1R3, se modifican los requisitos de privilegios de propiedad y acceso para algunos scripts de Python sin signo. En la versión 16.1R2 y versiones anteriores de Junos OS, los scripts de confirmación, evento, operación y SNMP no firmados de Python deben ser propiedad del usuario raíz, y Junos OS ejecuta los scripts mediante los privilegios de acceso del usuario y el grupo nobody
*nix, que es la cuenta de sistema genérica y sin privilegios. A partir de Junos OS versión 16.1R3, los scripts de automatización de Python sin signo deben ser propiedad del usuario raíz o de un usuario en la clase de inicio de sesión de Junos OS super-user
, y solo el propietario del archivo puede tener permiso de escritura para el archivo. Además, los scripts de automatización de Python se pueden ejecutar con los privilegios de acceso de los usuarios autorizados.
La tabla 1 describe los requisitos para ejecutar scripts de automatización de Python sin signo en las diferentes versiones habilitadas para Veriexec de Junos OS.
Requisito/restricción |
Versión 16.1R2 o anterior de Junos OS |
Versión 16.1R3 o posterior de Junos OS |
---|---|---|
Propietario del archivo |
Usuario raíz |
Usuario raíz o un usuario en la clase de inicio de sesión de Junos OS |
Permisos de escritura de archivos |
Cualquier |
Solo el propietario del archivo |
Nota:
Python 3 es compatible con Junos OS versión 19.4R1 y versiones posteriores. |
Sí |
Sí |
La secuencia de comandos debe estar habilitada en la configuración bajo la jerarquía adecuada para ese tipo de secuencia de comandos |
Sí |
Sí |
Privilegios de acceso |
Todos los scripts de automatización de Python se ejecutan con los privilegios de acceso del usuario y del grupo |
Las secuencias de comandos de confirmación y operación de Python se ejecutan con los privilegios de acceso del usuario que invoca la secuencia de comandos. Los scripts snmp y de eventos de Python se ejecutan con los privilegios de acceso del usuario configurado en la |
language python
instrucción se configura de forma predeterminada en el grupo de
junos-defaults
configuración.