Requisitos para executar scripts de automação Python em dispositivos Junos
Requisitos para executar scripts Python
Você pode usar o Python para criar scripts de automação junos os commit, event, op e SNMP. Para evitar a execução do código Python não autorizado, os dispositivos Junos, por padrão, não permitem a execução de scripts Python não assinados. Para executar um script Python não assinado, os seguintes requisitos devem ser atendidos, além dos requisitos normais para scripts de automação na caixa:
-
O proprietário do arquivo é raiz ou um usuário na aula de login do Junos OS
super-user
. -
Apenas o proprietário do arquivo tem permissão de gravação para o arquivo.
-
A execução de scripts Python não assinados é habilitada configurando a ou
language python3
declaraçãolanguage python
no nível hierárquico[edit system scripts]
.Nota:Se você configurar a
language python3
declaração, o dispositivo usa o Python 3 para executar scripts que oferecem suporte a esta versão Python, e ele usa o Python 2.7 para executar scripts que não oferecem suporte ao Python 3 no lançamento do Junos OS. Para obter mais informações, consulte Entendendo os scripts de automação python para dispositivos Junos.Nota:A partir do Junos OS Evolved Release 21.2R1, o
junos-defaults
grupo de configuração inclui alanguage python
declaração por padrão.Nota:Para permitir que um usuário que não pertence ao usuário ou classe de grupo do arquivo execute um script de automação Python não assinado, as permissões de arquivo do script devem incluir a permissão de leitura para outros.
Assim como nos scripts de automação SLAX e XSLT, você deve armazenar scripts de automação Python no diretório apropriado no dispositivo, e você deve habilitar scripts individuais configurando o nome de arquivo de script sob o nível de hierarquia apropriado para o tipo de script na configuração. Para obter informações sobre o armazenamento e habilitação de scripts de automação, consulte o Store and Enable Junos Automation Scripts.
Recomendamos que você configure um checksum para verificar a integridade dos scripts Python. Para especificar um checksum para um script local, configure a checksum
declaração sob a [file filename]
declaração na hierarquia para o seu tipo específico de script. Para especificar um checksum para um script de operação remoto, inclua o key
argumento quando você executa o script usando o op url
comando. Começando no Junos OS Release 18.2R2 e 18.3R1, se você executar um script Python não assinado que não tenha um checksum configurado, os dispositivos Junos registram uma mensagem CSCRIPT_SECURITY_WARNING no arquivo de registro do sistema. Por exemplo:
CSCRIPT_SECURITY_WARNING: unsigned python script '/var/db/scripts/op/sample.py' without checksum is executed
Configuração de privilégios de acesso para scripts Python
A partir do Junos OS Release 16.1R3, scripts python interativos, como scripts de confirmação e operação, são executados com os privilégios de acesso do usuário que executa o comando ou operação que invoca o script. Scripts Python não interativos, como scripts de evento e SNMP, por padrão, executam sob os privilégios do usuário e do grupo nobody
. Para executar scripts de evento ou SNMP usando os privilégios de acesso de um usuário específico, você deve configurar a python-script-user username
declaração no nível de [edit event-options event-script file filename]
hierarquia para scripts de eventos ou o [edit system scripts snmp file filename]
nível de hierarquia para scripts SNMP e especificar um usuário configurado no nível de [edit system login]
hierarquia.
Por exemplo:
[edit event-options event-script] file filename { python-script-user username; }
[edit system scripts snmp] file filename { python-script-user username; }
Você não pode configurar scripts de evento Python e SNMP para executar com privilégios de acesso raiz.
Resumo das mudanças de requisitos por versão
A partir do Junos OS Release 16.1R3, os requisitos de privilégio de propriedade e acesso para alguns scripts Python não assinados são modificados. No Junos OS Release 16.1R2 e lançamentos anteriores, scripts python não assinados, eventos, op e SNMP devem ser propriedade do usuário raiz, e o Junos OS executa os scripts usando os privilégios de acesso do usuário e grupo nobody
*nix, que é a conta genérica e desprivilegiada do sistema. Começando no Junos OS Release 16.1R3, scripts de automação Python não assinados devem ser propriedade do usuário raiz ou de um usuário na classe de login do Junos OS super-user
, e apenas o proprietário do arquivo pode ter permissão de gravação para o arquivo. Além disso, os scripts de automação Python podem ser executados com os privilégios de acesso de usuários autorizados.
A Tabela 1 descreve os requisitos para a execução de scripts de automação Python não assinados nas diferentes versões habilitadas pelo Veriexec do Junos OS.
Exigência/restrição |
Versão do Junos OS 16.1R2 ou versão anterior |
Versão do Junos OS 16.1R3 ou posterior |
---|---|---|
Proprietário do arquivo |
Usuário raiz |
Usuário raiz ou usuário na aula de login do Junos OS |
Permissões de gravação de arquivos |
Qualquer |
Somente proprietário de arquivos |
Nota:
O Python 3 tem suporte para o Junos OS Release 19.4R1 e versões posteriores. |
Sim |
Sim |
O script deve ser habilitado na configuração sob a hierarquia apropriada a esse tipo de script |
Sim |
Sim |
Privilégios de acesso |
Todos os scripts de automação Python são executados com os privilégios de acesso do usuário e do grupo |
O Python confirma e executa scripts de operação com os privilégios de acesso do usuário que invoca o script. Evento Python e scripts SNMP são executados com os privilégios de acesso do usuário configurados na |
language python
declaração é configurada por padrão no grupo de
junos-defaults
configuração.