Junos デバイスで Python 自動化スクリプトを実行するための要件
Python スクリプトを実行するための要件
Python を使用して、Junos OS のコミット、イベント、運用、SNMP 自動化スクリプトを作成できます。不正な Python コードの実行を防止するために、Junos デバイスはデフォルトで符号なし Python スクリプトの実行を許可しません。符号なしPythonスクリプトを実行するには、オンボックス自動化スクリプトの通常の要件に加えて、以下の要件を満たす必要があります。
-
ファイル所有者は、Junos OS
super-user
ログイン クラスの root またはユーザーのいずれかです。 -
ファイルの所有者のみが、ファイルの書き込み権限を持っています。
-
符号なしPythonスクリプトの実行は、 階層レベルで または
language python3
ステートメントをlanguage python
[edit system scripts]
設定することで有効になります。メモ:ステートメントを
language python3
設定すると、デバイスはこのPythonバージョンをサポートするスクリプトを実行するためにPython 3を使用し、特定のJunos OSリリースでPython 3をサポートしていないスクリプトを実行するためにPython 2.7を使用します。詳細については、「 Junos デバイスの Python 自動化スクリプトについて」を参照してください。メモ:Junos OS Evolved リリース 21.2R1 以降、
junos-defaults
設定グループにはデフォルトで ステートメントがlanguage python
含まれています。メモ:ファイルのユーザーまたはグループクラスに属していないユーザーが符号なしPython自動化スクリプトを実行できるようにするには、スクリプトのファイル権限に他のユーザーの読み取り権限を含める必要があります。
SLAX および XSLT 自動化スクリプトと同様に、Python 自動化スクリプトをデバイスの適切なディレクトリに格納する必要があります。また、構成内のスクリプト タイプに適した階層レベルでスクリプト ファイル名を設定し、個々のスクリプトを有効にする必要があります。自動化スクリプトの格納と有効化の詳細については、「 Junos 自動化スクリプトの保存と有効化」を参照してください。
Python スクリプトの整合性を検証するチェックサムを構成することをお勧めします。ローカル スクリプトのチェックサムを指定するには、特定のタイプの checksum
スクリプトに対して [file filename]
、 階層の ステートメントの下に ステートメントを設定します。リモート op スクリプトのチェックサムを指定するには、 コマンドを使用してスクリプトを 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 以降、コミット スクリプトや op スクリプトなどのインタラクティブな Python スクリプトは、スクリプトを呼び出すコマンドまたは操作を実行するユーザーのアクセス権限を使用して実行されます。イベントや SNMP スクリプトなどの非インタラクティブ Python スクリプトは、デフォルトでユーザーとグループnobody
の権限で実行されます。特定のユーザーのアクセス権限を使用してイベントまたはSNMPスクリプトを実行するには、イベントスクリプトの階層レベルまたは[edit system scripts snmp file filename]
SNMPスクリプトの階層レベルで [edit event-options event-script file filename]
ステートメントを設定python-script-user username
し、 階層レベルで設定されたユーザーを指定する[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スクリプトを設定することはできません。
リリース別の要件変更の概要
Junos OS リリース 16.1R3 以降、一部の符号なし Python スクリプトの所有権およびアクセス権限の要件が変更されました。Junos OS リリース 16.1R2 以前のリリースでは、符号なし Python コミット、イベント、op、SNMP スクリプトは root ユーザーが所有する必要があります。Junos OS は、一般的で恵まれないシステム アカウントである *nix ユーザーおよびグループ nobody
のアクセス権限を使用してスクリプトを実行します。Junos OSリリース16.1R3以降、署名されていないPython自動化スクリプトは、ルートユーザーまたはJunos OS super-user
ログインクラスのユーザーが所有する必要があり、ファイルの書き込み権限を持つことができるのはファイル所有者だけです。さらに、Python 自動化スクリプトは、認証済みユーザーのアクセス権限を使用して実行できます。
表 1 は、Veriexec 対応の Junos OS の異なるバージョンで符号なし Python 自動化スクリプトを実行するための要件を概説しています。
要件/制限 |
Junos OS リリース 16.1R2 以前のリリース |
Junos OS リリース 16.1R3 以降のリリース |
---|---|---|
ファイルの所有者 |
Root ユーザー |
Junos OS |
ファイル書き込み権限 |
任意 |
ファイルの所有者のみ |
メモ:
Python 3は、Junos OSリリース19.4R1以降のリリースでサポートされています。 |
はい |
はい |
スクリプトは、そのスクリプト タイプに適した 階層の下の設定で有効にする必要があります。 |
はい |
はい |
アクセス権限 |
Python 自動化スクリプトはすべて、ユーザーとグループのアクセス権限を使用して実行されます。 |
Python コミットおよび op スクリプトは、スクリプトを呼び出したユーザーのアクセス権限を使用して実行されます。 Python イベントおよび SNMP スクリプトは、 ステートメントで設定されたユーザーのアクセス権限で |
language python
ステートメントは設定グループでデフォルトで
junos-defaults
設定されます。