Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

ユーザーアクセス権限の Junos OS

Junos OS を使用すると、コマンドと構成階層レベルおよびステートメントにアクセス権限を付与できます。これにより、ユーザーはこれらのコマンドだけを実行し、アクセス権限を持つステートメントのみを設定して表示できます。拡張正規表現を使用して、ユーザーに対して許可または禁止される運用モードコマンド、構成ステートメント、階層を指定できます。これにより、不正なユーザーがネットワークに損害を与える可能性がある、機密性の高いコマンドや文を実行または構成することを防止できます。詳細については、このトピックをお読みください。

Junos OS アクセス権限レベルについて

各トップレベル CLI コマンドと各構成文には、それぞれアクセス権限レベルが割り当てられています。ユーザーは、これらのコマンドのみを実行し、アクセス権限を持つステートメントのみを設定および表示できます。各ログインクラスのアクセス権限は、1つ以上の権限フラグによって定義されます。

各ログインクラスについて、 permissionsステートメントで指定された権限レベルによって許可または禁止されている運用モードコマンドや設定オプションの使用を明示的に拒否または許可することができます。

以下のセクションでは、権限の詳細について説明します。

Junos OS ログインクラス権限フラグ

アクセス許可フラグを使用して、ユーザーに運用モードコマンドと構成階層レベルおよびステートメントへのアクセスを許可します。階層レベルでユーザーのログイン クラスに特定の権限フラグを指定すると、対応するコマンドおよび設定階層レベルおよびステートメントへのアクセス権がユーザーに [edit system login class] 付与されます。すべてのコマンドと設定ステートメントにアクセス権を付与するallには、権限フラグを使用します。

注:

表示された各コマンドは、そのコマンドをプレフィクスとして使用しています。リストされている各構成文は、そのフラグがアクセスを許可する構成階層の最上位を表しています。

ステートメントpermissionsは、に表 1示されている1つ以上のアクセス許可フラグを指定します。権限フラグは累積ではないため、情報を表示しviewconfigure 、設定モードにするなど、各クラスで必要なすべての権限フラグをリストしておく必要があります。次の2つの形態の権限制御が構成の各部分に対応します。

  • 「プレーン」形式 :その権限タイプに読み取り専用機能を提供します。その例をinterface示します。

  • 最後の形式 -control — 許可タイプの読み取りおよび書き込み機能を提供します。その例をinterface-control示します。

構成階層レベルとステートメントへのアクセス権を付与する許可フラグについては、フラグによってその構成に読み取り専用権限が付与されます。たとえば、 interface権限フラグによって、 [edit interfaces]階層レベルへの読み取り専用アクセスが許可されます。この-controlフラグの形式により、その構成への読み取り書き込みアクセスが許可されます。上記の例を使用interface-controlして、 [edit interfaces]階層レベルへの読み取り/書き込みアクセス権を付与します。

表 1[edit system login class class-name]階層レベルでステートメントをpermissions含めることによって設定できる Junos OS ログインクラスアクセス許可フラグを示します。

権限フラグによって、特定のアクセス権限セットが付与されます。各権限フラグは、そのフラグがアクセスを付与する運用モードコマンドと構成階層レベルおよび文とともに表示されます。

表 1: ログインクラス権限フラグ

権限フラグ

説明

設定モードでアクセス構成を表示し、 show configuration 運用モードコマンドで参照できます。

アクセスコントロール

[edit access]階層レベルでアクセス情報を表示および設定できます。

administration

設定モードでユーザーアカウント情報を表示したり、 show configuration運用モードコマンドを使用したりできます。

管理制御

ユーザーアカウント情報を表示し、 [edit system]階層レベルで設定できます。

オールコントロール

ユーザーアカウントを表示して、 [edit system login]階層レベルで構成できます。

all

すべての運用モードコマンドと設定モードコマンドにアクセスできます。すべての構成階層レベルで設定を変更できます。

透明

clearコマンドを使用して、さまざまなネットワークデータベースに格納されているネットワークから学習した情報をクリア (削除) できます。

configure

configureコマンドを使用して設定モードに入ることができます。

細かく

すべての制御レベルの操作を実行できます。権限フラグを使用して設定 -control された操作すべて。

]

フィールドデバッグコマンドを表示できます。デバッグサポート用に予約されています。

ファイア

構成モードでファイアウォールフィルタの構成を表示できます。

ファイアウォールコントロール

[edit firewall]階層レベルでファイアウォールフィルタ情報を表示および設定できます。

fdd

リムーバブルメディアの読み取りと書き込みが可能です。

フロータップ

設定モードでフロータップ構成を表示できます。

フロータップ制御

設定モードでフロータップの構成を表示して、フロータップの[edit services flow-tap]構成情報を階層レベルで設定できます。

フロータップ操作

ルーターまたはスイッチへのフロータップ要求を行うことができます。たとえば、動的なマルチタスキングコントロールプロトコル (DTCP) クライアントは、 flow-tap-operation管理ユーザーとして Junos OS に対して自身を認証する権限を持っている必要があります。

注:

このflow-tap-operationオプションは、 all-control権限フラグには含まれていません。

idp-プロファイラー-運用

プロファイラーデータを表示できます。

インターフェース

構成モードでインターフェイスの構成とshow configuration運用モードコマンドを表示できます。

インターフェイスコントロール

シャーシ、サービスクラス(CoS)、グループ、転送オプション、インターフェイス構成情報を表示できます。以下の階層レベルで設定を編集できます。

  • [edit chassis]

  • [edit class-of-service]

  • [edit groups]

  • [edit forwarding-options]

  • [edit interfaces]

maintenance

ルーターやスイッチ上でローカルシェルを開始し、 su rootコマンドを使用してシェルでスーパーユーザーになり、コマンドを使用してrequest systemルーターまたはスイッチを停止して再起動するなど、システムの保守を実行できます。

ネットワーク

ping、、およびsshtelnettracerouteコマンドを使用してネットワークにアクセスできます。

pgcp-セッションミラーリング

セッションミラーリングのpgcp構成を見ることができます。

pgcp-セッションミラーリング制御

セッションミラーリングのpgcp構成を変更できます。

変更

restartコマンドを使用してソフトウェアプロセスを再起動することができ、 [edit system processes]階層レベルでソフトウェアプロセスを有効にするか無効にするかを設定できます。

取り消す

このrollbackコマンドを使用して、最後にコミットされたもの以外の、以前にコミットされた構成に戻すことができます。

ルーティング

構成および運用モードで、一般的なルーティング、ルーティングプロトコル、ルーティングポリシー構成情報を表示できます。

ルーティングコントロール

ルーティング、ルーティングプロトコル、ルーティングポリシーの一般的な構成情報を表示して、階層レベルで[edit routing-options]の一般的なルーティング、階層レベル[edit protocols]でのルーティングプロトコル、階層レベルで[edit policy-options]のルーティングポリシーを構成できます。

当然

構成内のパスワードとその他の認証キーを表示できます。

秘匿制御

構成でパスワードやその他の認証キーを表示し、設定モードで変更することができます。

セキュリティ

設定モードでセキュリティ構成を表示したり、 show configuration運用モードコマンドを使用したりできます。

セキュリティ制御

[edit security]階層レベルでセキュリティ情報を表示および設定できます。

シェル

start shellコマンドを使用して、ルーターまたはスイッチ上でローカルシェルを開始できます。

snmp

構成および運用モードで簡易ネットワーク管理プロトコル (SNMP) 構成情報を表示できます。

snmp 制御

SNMP 構成情報を表示し、 [edit snmp]階層レベルで snmp 構成を変更できます。

bios

構成および運用モードでシステムレベルの情報を表示できます。

システム制御

システムレベルの[edit system]構成情報を表示して、階層レベルで構成できます。

trace

トレースファイルの設定を表示し、トレースファイルのプロパティを構成できます。

トレースコントロール

トレースファイルの設定を変更し、トレースファイルのプロパティを構成できます。

'95'5c

さまざまなコマンドを使用して、現在のシステム全体、ルーティングテーブル、およびプロトコル固有の値と統計を表示できます。シークレット構成を表示できません。

ビュー構成

シークレット、システムスクリプト、イベントオプションを除くすべての構成を表示できます。

注:

maintenance権限を持つユーザーだけが、コミットスクリプト、op スクリプト、またはイベントスクリプト構成を表示できます。

Junos OS ログインクラスの個々のコマンドを許可または拒否する

デフォルトでは、すべてのトップレベル CLI コマンドは、アクセス権限レベルに関連付けられています。ユーザーは、これらのコマンドのみを実行し、アクセス権限を持つステートメントのみを表示できます。各ログインクラスについて、 permissionsステートメントで指定された権限レベルによって許可または禁止されている運用モードコマンドや設定オプションの使用を明示的に拒否または許可することができます。

アクセス許可フラグを使用して、ユーザーに運用モードコマンドと構成階層レベルおよびステートメントへのアクセスを許可します。階層レベルでユーザーのログイン クラスに特定の権限フラグを指定すると、対応するコマンドおよび設定階層レベルおよびステートメントへのアクセス権がユーザーに [edit system login class] 付与されます。すべてのコマンドと設定ステートメントにアクセス権を付与するallには、権限フラグを使用します。構成階層レベルとステートメントへのアクセス権を付与する許可フラグについては、フラグによってその構成に読み取り専用権限が付与されます。たとえば、 interface権限フラグによって、 [edit interfaces]階層レベルへの読み取り専用アクセスが許可されます。この-controlフラグの形式により、その構成への読み取り書き込みアクセスが許可されます。上記の例を使用interface-controlして、 [edit interfaces]階層レベルへの読み取り/書き込みアクセス権を付与します。

  • ログインallクラスのアクセス許可は、ユーザーが許可フラグをrollback有効にしrollbackたコマンドを発行したときに、拡張された正規表現よりも優先されます。

  • RADIUS と TACACS + サーバー上のユーザーに対してコマンドを許可または拒否するために使用される式が簡素化されました。複数のコマンド (allow-commands=cmd1 cmd2 ... cmdn) を使用した単一の long 式の代わりに、各コマンドを個別の式として指定できます。allow-configurationこの新しい構文は、 deny-configurationallow-commands、、、 deny-commands、すべてのユーザー権限ビットに対して有効です。

  • 拡張正規表現をload override指定している場合、ユーザーはこのコマンドを発行できません。ユーザーは、、、 mergepatch設定replaceコマンドのみ発行できます。

  • 同じコマンドを許可して拒否すると、 allow-commandsによって指定されるアクセス許可よりdeny-commandsも、アクセス許可が優先します。たとえば、とallow-commands "request system software add"deny-commands "request system software add"を含む場合、login クラスのユーザーは、 request system software addこのコマンドを使用してソフトウェアをインストールできます。

  • の正規表現allow-commandsdeny-commandscommitloadrollbacksave、、、、、 status、およびupdateを含めることもできます。

  • コマンドの2つの異なるバリエーションallow-commandsdeny-commands対して正規表現を指定すると、最も一致するものが常に実行されます。

    たとえばallow-commandscommit-synchronizeコマンドに正規表現deny-commandsと正規commit表現を指定した場合、このようなログインクラスに割り当てられたユーザーはコマンドを発行commit synchronizeできますが、コマンドを使用することはcommitできません。これは、 commit-synchronize "and commitcommit-synchronize " と "-" の間にallow-commands最も長い一致があるためです。

    同様allow-commandsに、 commitコマンドに正規表現と正規deny-commandscommit-synchronize表現を指定した場合、そのようなログインクラスに割り当てられたユーザーはコマンドを発行できますがcommit 、コマンドを実行するcommit-synchronizeことはできません。これは、 commit-synchronize "and commitcommit-synchronize " と "-" の間にdeny-commands最も長い一致があるためです。

例:アクセス権限レベルによるユーザー権限の設定

この例では、ユーザーアカウントの権限を表示し、ログインクラスのアクセス権限を使用してユーザー権限を設定する方法を示します。これにより、ユーザーはこれらのコマンドだけを実行し、アクセス権限を持つステートメントのみを設定して表示できます。これにより、不正なユーザーがネットワークに損害を与える可能性がある、機密性の高いコマンドや文を実行または構成することを防止できます。

要件

この例では、以下のハードウェアとソフトウェアのコンポーネントを使用しています。

  • 1つのジュニパーネットワークスデバイス

  • 1台の TACACS + (RADIUS) サーバー

  • ジュニパーネットワークスデバイスで実行されている Junos OS ビルド

開始する前に:

  • デバイスと TACACS + サーバー間の接続を確立します。

    TACACS + サーバーの設定の詳細については、 tacacs + 認証の構成を参照してください。

  • ジュニパーネットワークスデバイスで、ログインクラスに割り当てられたユーザーを少なくとも1人設定します。複数のログインクラスがあり、それぞれに異なる権限が設定されていて、デバイス上に複数のユーザーが存在することがあります。

概要

各トップレベルコマンドラインインターフェース (CLI) コマンドと Junos OS の各設定文には、アクセス権限レベルが関連付けられています。各ログインクラスに対して、権限レベルによって許可または禁止される、運用モードコマンドと設定オプションの使用を明示的に拒否または許可することができます。ユーザーは、これらのコマンドのみを実行し、アクセス権限を持つステートメントのみを設定および表示できます。アクセス権限レベルを設定するにはpermissions 、階層レベル[edit system login class class-name]のステートメントを追加します。

各ログインクラスのアクセス権限は、そのpermissionsステートメントで指定された1つ以上の権限フラグによって定義されます。アクセス許可フラグは、ユーザーに運用モードのコマンド、ステートメント、および構成階層へのアクセスを許可するために使用されます。権限フラグは累積的なものではないため、各ログインクラスで、情報の表示やviewconfigure設定モードの入力など、必要なすべての権限フラグをリストしなければなりません。ユーザーのログイン クラスに特定の権限フラグを指定すると、対応するコマンド、ステートメント、構成階層へのアクセス権がユーザーに付与されます。すべてのコマンドと設定ステートメントにアクセス権を付与するallには、権限フラグを使用します。権限フラグは、許可タイプの読み取り専用(「プレーン」フォーム)と読み取りおよび書き込み(-controlで終わるフォーム)機能を提供します。

注:

ログインallクラスのアクセス許可は、ロールバック権限フラグが有効になっている rollback コマンドをユーザーが発行したときに、拡張正規表現よりも優先されます。

ユーザーアクセス権限レベルを設定するには、次のようにします。

  1. ユーザーアカウントの権限を表示します。

    ユーザーアカウントの権限を確認してから、アクセス権限を設定することができます。

    ユーザー権限を表示するには? 、次[edit]のように階層レベルで入力します。

  2. アクセス権限を使用してユーザー権限を設定します。

    デバイスにログインできるすべてのユーザーは、ログインクラスに存在する必要があります。各ログインクラスについて、関連するユーザーがデバイスにログインしたときにアクセス権限を設定できます。

    ユーザー権限のアクセス権限レベルを設定するにはpermissions[edit system login class class-name]階層レベルにステートメントを追加し、その後にユーザー permissions権限、オプション、および必要な権限フラグを指定します。

構成

アクセス権限レベルによるユーザー権限の設定

順を追った手順

アクセス権限を設定するには

  1. デバイスから、そのユーザーアカウントに対して利用可能な権限のリストを表示します。この例では、ユーザーアカウント名がホストになっています。

    この出力には、ユーザーホストの権限が表示されます。ユーザー権限のさまざまなアクセス権限を設定することによって、カスタマイズされたログインクラスを作成できます。

  2. アクセス権限クラスを設定して、ユーザーのホストが SNMP パラメーターのみを構成および表示できるようにします。この例では、このログインクラスはネットワーク管理と呼ばれています。ネットワーク管理ログインクラスをカスタマイズするには、SNMP 権限フラグをconfigureユーザー権限に追加します。

    ここでは、設定された権限フラグが SNMP の読み取り (snmp) 機能と読み取り/書き込み (snmp コントロール) 能力の両方を提供しています。これは、ネットワーク管理ログインクラスに対して許可されている唯一のアクセス権限です。つまり、SNMP パラメーターの設定と表示以外のアクセス権限はすべて拒否されます。

結果

設定モードから、 show system loginコマンドを入力して設定を確認します。出力に意図した構成が表示されない場合は、この例の手順を繰り返して設定を修正します。

検証

新しいログインクラスで割り当てられたユーザー名としてログインし、設定が適切に機能していることを確認します。

SNMP 構成の確認

目的

SNMP 構成が実行可能であることを確認します。

アクション

設定モードから、 [edit snmp]階層レベルで基本的な SNMP コマンドを実行します。

このクラスに指定されている権限フラグには snmp (読み取り機能) と snmp 制御 (読み取りおよび書き込み機能) の両方の権限ビットが含まれるため、ネットワーク管理ログインクラスに割り当てられたユーザーホストは SNMP パラメーターを設定することができます。

非 SNMP 構成の確認

目的

非 SNMP 構成がネットワーク管理ログインクラスに対して拒否されていることを確認します。

アクション

設定モードから、非 SNMP 構成 (たとえば、インターフェイス構成) を実行します。

Junos OS の運用モードコマンド、構成ステートメント、階層を許可または拒否する正規表現

このトピックは、以下のセクションで構成されています。

正規表現について

拡張正規表現を使用して、拒否または許可される運用モードコマンド、構成ステートメント、階層を指定できます。これらの正規表現は、 階層レベルでローカルに、またはリモートで指定するには、認証サーバーの設定で ジュニパーネットワークス ベンダー固有の allow/deny-commandsallow/deny-configuration,allow/deny-commands-regexpsallow/deny-configuration-regexp[edit system login class class-name] TACACS+ または RADIUS 属性を指定します。

注:

Junos OS リリース18.1 から開始allow-commands-regexpsします。 deny-commands-regexpsおよびステートメントは、TACACS + 認証でサポートされています。

ローカルおよびリモートの承認構成の違いは、正規表現のステートメントが実行されるパターンです。ローカル承認設定で文字列を使用して複数の正規表現を指定することもできますが、リモート構成では正規表現ステートメントを分割し、個々の文字列で指定する必要があります。認証パラメーターがリモートとローカルの両方で設定されている場合、TACACS + または RADIUS 認証で受信した正規表現は、ローカルデバイスで利用可能な正規表現とマージされます。

、、 allow-commands、またはdeny-commandsステートメントを使用してallow-configurationdeny-configurationローカル構成に複数の正規表現を指定する場合、正規表現はかっこ内で区切り、パイプ記号を使用して区切られます。完全な正規表現は、二重引用符で囲まれています。たとえば、次の構文を使用allow-commandsして複数のパラメーターを指定できます。

承認サーバー上でリモートに設定された同じ条件は、次の構文を使用します。

、、 allow-commands-regexps、またはdeny-commands-regexpsステートメントを使用してallow-configuration-regexpsdeny-configuration-regexpsローカル構成に複数の正規表現を指定する場合、正規表現は二重引用符で囲んで構成し、space 演算子を使用して区切ります。完全な式は角括弧で囲まれています。たとえば、次の構文を使用して、複数の allow commands パラメーターを指定できます。

承認サーバー上でリモートに設定された同じ条件は、次の構文を使用します。

表 2正規表現を使用してローカルおよびリモートの承認設定を区別します。

表 2: 正規表現を使用したローカルおよびリモートの承認構成例

ローカル構成

リモート構成

login {
    class local {
        permissions configure;
        allow-commands "(ping .*)|(traceroute .*)|(show .*)|(configure .*)|(edit)|(exit)|(commit)|(rollback .*)";
        deny-commands .*;
        allow-configuration "(interfaces .* unit 0 family ethernet-switching vlan mem.* .*)|(interfaces .* native.* .*)|(interfaces .* unit 0 family ethernet-switching interface-mo.* .*)|(interfaces .* unit .*)|(interfaces .* disable)|(interfaces .* description .*)|(vlans .* vlan-.* .*)"
        deny-configuration .*;
    }
}
user = remote {
    login = username
    service = junos-exec {
        allow-commands1 = "ping .*"
        allow-commands2 = "traceroute .*"
        allow-commands3 = "show .*"
        allow-commands4 = "configure"
        allow-commands5 = "edit"
        allow-commands6 = "exit"
        allow-commands7 = "commit"
        allow-commands8 = ".*xml-mode" <<<<<
        allow-commands9 = ".*netconf" <<<<<
        allow-commands10 = ".*need-trailer" <<<<<
        allow-commands11 = "rollback.*"
        deny-commands1 = ".*"
        allow-configuration1 = "interfaces .* unit 0 family ethernet-switching vlan mem.* .*"
        allow-configuration2 = "interfaces .* native.* .*"
        allow-configuration3 = "interfaces .* unit 0 family ethernet-switching interface-mo.* .*"
        allow-configuration4 = "interfaces .* unit .*"
        allow-configuration5 = "interfaces .* disable"
        allow-configuration6 = "interfaces .* description .*"
        allow-configuration7 = "interfaces .*"
        allow-configuration8 = "vlans .* vlan-.* .*"
        deny-configuration1 = ".*"
        local-user-name = local-username
        user-permissions = "configure"
    }
}
注:
  • NETCONF mode へのアクセスは、ローカルまたはリモートから、次の3つのコマンドを発行することによって、明示的に許可する必要があります。xml-modenetconf、およびneed-trailerです。

  • deny-configuration = “.*”ステートメントを使用する場合は、そのallow-configurationステートメントを使用して、その他のすべての必要な設定を許可する必要があります。これは、 allow-configurationステートメントで許可される正規表現バッファー制限に影響を与える可能性があります。この制限を超えると、許可された構成が機能しなくなる可能性があります。この正規表現バッファーサイズの制限は Junos OS リリース14.1 の x53-D40、15.1、16.1 で増加しています。

正規表現の指定

警告:

コマンドと構成ステートメントに正規表現を指定する場合は、次の例に注意してください。たとえば、無効な構文を使用する正規表現は、構成がコミットされない場合でも望ましい結果が得られないことがあります。です.

コマンドと設定ステートメントの正規表現は、完全な command またはステートメントを実行するのと同じ方法で指定する必要があります。表 3は、 [edit interfaces] and [edit vlans]ステートメント階層のアクセス権を設定する正規表現と、そのdelete interfacesコマンドについて示しています。

表 3: 正規表現の指定

エフェクティビティステートメント

正規表現

構成に関する注意事項

[edit interfaces]

インターフェイスsetのコマンドは次のように実行されます。

[edit]
user@host# set interfaces interface-name unit interface-unit-number

set interfacesステートメントが完全には完了していないunitため、ステートメントを実行するためのオプションが必要です。

結果として、 set interfaces設定を拒否するために必要な正規表現は、ステートメント変数の.*代わりに、演算子を使用して実行可能文字列全体を指定する必要があります。

[edit system login class class-name]
user@host# set permissions configure
user@host# set deny-configuration "interfaces .* unit .*"
  • この.*演算子は、その特定のコマンドまたはステートメントの指定されたポイントからのすべてを示します。この例では、任意のユニット値を持つすべてのインターフェイス名を示しています。

  • deny-configuration "interfaces .*"ステートメントのみを指定しても不適切な指定で、特定のログインクラスのインターフェイス構成へのアクセスが拒否されることはありません。

  • その他の有効なオプションは、次のように正規表現に含めることができます。

    [edit system login class class-name]
    user@host# set permissions configure
    user@host# set deny-configuration "interfaces .* description .*"
    
    [edit system login class class-name]
    user@host# set permissions configure
    user@host# set allow-configuration-regexps [ "interfaces .* description .*” “interfaces .* unit .* description .*” “interfaces .* unit .* family inet address .*” “interfaces.* disable" ]
    
    [edit system login class class-name]
    user@host# set permissions configure
    user@host# set allow-configuration "interfaces .* unit 0 family ethernet-switching vlan mem.* .*"
    

    Note:この例の正規表現は、memキーワードで始まる複数の文字列が指定された正規表現に含まれる予定である mem.* 場合に使用されます。 1つmemberの文字列だけが含まれることが予想member .*される場合は、正規表現を使用します。

delete interfaces

インターフェイスdeleteのコマンドは次のように実行されます。

[edit]
user@host# delete interfaces interface-name

delete interfacesステートメントを単独で実行して、追加のステートメントを完成させる必要はありません。

結果として、 delete interfacesステートメントを拒否するために必要な正規表現には、以下の内容を指定する必要があります。

[edit system login class class-name]
user@host# set permissions configure
user@host# set allow-configuration "interfaces .*"
user@host# set deny-configuration "interfaces .*"
  • この.*演算子は、その特定のコマンドまたはステートメントの指定されたポイントからのすべてを示します。この例では、すべてのインターフェイス名を示しています。

  • deny-configuration "interfaces .*"正規表現を有効にするには、指定されたログインクラスで、 allow-configuration "interfaces .*"正規表現を使用したインターフェイス階層の設定権限を許可する必要があります。

[edit vlans]

Vlan set用コマンドは次のように実行されます。

[edit]
user@host# set vlans vlan-name vlan-id vlan-id

ここではset vlans 、このステートメント自体は不完全であり、 vlan-idステートメントを実行するためのオプションが必要になります。

結果として、 set vlans設定を許可するために必要な正規表現は、ステートメント変数の.*代わりに、演算子を使用して実行可能文字列全体を指定する必要があります。

[edit system login class class-name]
user@host# set permissions configure
user@host# set allow-configuration "vlans .* vlan-id .*"
  • この.*演算子は、その特定のコマンドまたはステートメントの指定されたポイントからのすべてを示します。この例では、任意の vlan ID を持つすべての VLAN 名を示しています。

  • ステートメント階層の[edit vlans]下のその他の有効なオプションは、次のように正規表現に含めることができます。

    [edit system login class class-name]
    user@host# set permissions configure
    user@host# set allow-configuration-regexps [ "vlans .* vlan-id .*" "vlans .* vlan-id .* description .*" "vlans .* vlan-id .* filter .*" ]
    

正規表現の演算子

表 4では、運用モードと設定機能を許可または拒否するために使用できる一般的な正規表現演算子を示しています。

コマンド正規表現は、POSIX 1003.2 で定義されているように、拡張 (最新) 正規表現を実装しています。

表 4: 一般的な正規表現の演算子

オペレーター

照会

サンプル

|

パイプで区切られた2つ以上の条件の1つです。各用語は、かっこ () で囲まれた完全なスタンドアロン式であり、パイプと隣接するかっこの間にスペースを入れません。

[edit system login class test]
user@host# set permissions configure
user@host# set allow-commands "(ping)|(traceroute)|(show system alarms)|(show system software)"
user@host# set deny-configuration "(access)|(access-profile)|(accounting-options)|(applications)|(apply-groups)|
(bridge-domains)|(chassis)|(class-of-service)"

上記の設定では、テストログインクラスに割り当てられたユーザーは、 allow-commandsステートメントで指定されたコマンドのみに機能を制限し、 deny-configurationステートメントで指定されている階層レベルを除いて、その設定モードにアクセスできるようになっています。

^

式の先頭で、コマンドがどこにあるかを示すために使用されます。これはあいまいなものがあるかもしれません。

[edit system login class test]
user@host# set permissions interface
user@host# set permissions interface-control
user@host# set allow-commands "(^show) (log|interfaces|policer))|(^monitor)"

上記の構成では、テストログインクラスに割り当てられたユーザーは、運用および設定モードから、インターフェイス構成を構成および表示するためのアクセス権を持つことができます。ステートメントallow-commandsは、and showmonitorキーワードで始まるコマンドへのアクセスを指定します。

最初のフィルターの場合、指定したコマンドshow logshow interfacesは、 show policer 、、およびコマンドが含まれます。2つ目のフィルターでmonitormonitor interfacesmonitor traffic 、コマンドなど、キーワードで始まるすべてのコマンドが指定されています。

$

コマンドの最後に文字があります。そのポイントに完全に一致する必要があるコマンドを示すために使用されます。

[edit system login class test]
user@host# set permissions interface
user@host# set allow-commands "(show interfaces$)"

上記の設定では、テストログインクラスに割り当てられたユーザーは、設定モードでインターフェイス構成を表示しshow configurationたり、インターフェイスユーザー権限を使用して運用モードコマンドを使用したりできます。ただし、 allow-commands文で指定されている正規表現は、ユーザーがshow interfacesコマンドだけを実行するよう制限し、 show interfaces detailまたはshow interfaces extensiveなどのコマンド拡張機能へのアクセスを拒否します。

[ ]

文字または数字の範囲。範囲の開始および終了を分離するには、ハイフン( - )を使用   します。

[edit system login class test]
user@host# set permissions clear
user@host# set permissions configure
user@host# set permissions network
user@host# set permissions trace
user@host# set permissions view
user@host# set allow-configuration-regexps [ "interfaces [gx]e-.* unit [0-9]* description .*" ]

上記の設定では、テストログインクラスに割り当てられたユーザーは、オペレータレベルのユーザー権限を持ち、指定された範囲のインターフェイス名およびユニット番号 (0 ~ 9) 内のインターフェイスを構成するアクセス権を持つことになります。

( )

完全に評価される単独の式を示すコマンドのグループ。その後、結果は式全体の一部として評価されます。説明に従って、括弧をパイプ演算子と組み合わせて使用する必要があります。

[edit system login class test]
user@host# set permissions all
user@host# set allow-commands "(clear)|(configure)"
user@host# deny-commands "(mtrace)|(start)|(delete)"

上記の設定では、テストログインクラスに割り当てられたユーザーは、スーパーユーザーレベルの権限を持ち、 allow-commands文で指定されたコマンドにアクセスできます。

*

0個以上の用語。

[edit system login class test]
user@host# set permissions configure
user@host# set deny-configuration "(system login class m*)"

上記の設定では、ログインユーザー名を持つテストログインクラスにユーザー mが割り当てた場合、設定アクセスが拒否されます。

+

1つ以上の用語

[edit system login class test]
user@host# set permissions configure
user@host# set deny-configuration "(system login class m+)"

上記の設定では、ログインユーザー名を持つテストログインクラスにユーザー mが割り当てた場合、設定アクセスが拒否されます。

.

スペース "" 以外の任意の文字。

[edit system login class test]
user@host# set permissions configure
user@host# set deny-configuration "(system login class m.)"

上記の設定では、ログインユーザー名を持つテストログインクラスにユーザー mが割り当てた場合、設定アクセスが拒否されます。

.*

指定されたポイントからのすべてを網羅しています。

[edit system login class test]
user@host# set permissions configure
user@host# set deny-configuration "(system login class m .*)"

上記の設定では、ログインユーザー名を持つテストログインクラスにユーザー mが割り当てた場合、設定アクセスが拒否されます。

同様に、 deny-configuration "protocols .*"ステートメントはすべての[edit protocols]構成アクセスを階層レベルで拒否します。

注:
  • 、、および.運用は、を使用.*して実現できます。 *+

  • およびdeny-commands .*deny-configuration .*ステートメントは、すべての運用モードコマンドと構成階層へのアクセスを拒否します。

注:

Junos OS は正規表現演算子!をサポートしていません。

正規表現の例

表 5 は、2 つの構成階層の下で設定オプションを許可する場合に使用する正規表現を示しています。正規表現を指定する例として [edit system ntp server][edit protocols rip] 使用します。

注:

表 5すべての構成ステートメントと階層の正規表現とキーワードの包括的なリストを提供しているわけではありません。表に記載されている正規表現は Junos OS リリース16.1 でサポートされており、 [edit system ntp server] and [edit protocols rip]ステートメント階層でのみ検証されています。

表 5: 正規表現の例

ステートメント階層

正規表現

許可された構成

構成の拒否

[edit system ntp server]

     

鍵番号

[edit system login class test]
set permissions configure
set allow-configuration-regexps [ "system ntp server .*" "system ntp server .* key .*" ]
set deny-configuration-regexps [ "system ntp server .* version .*" "system ntp server .* prefer" ]
  • サーバーの IP

  • サーバー IP およびキー

  • バージョン

  • 望ま

バージョン 番号

[edit system login class test]
set permissions configure
set allow-configuration-regexps [ "system ntp server .*" "system ntp server .* version .*" ]
set deny-configuration-regexps [ "system ntp server .* key .*" "system ntp server .* prefer" ]
  • サーバーの IP

  • サーバーの IP およびバージョン

  • key

  • 望ま

望ま

[edit system login class test]
set permissions configure
set allow-configuration-regexps [ "system ntp server .*" "system ntp server .* prefer" ];
set deny-configuration-regexps [ "system ntp server .* key .*" "system ntp server .* version .*" ]
  • サーバーの IP

  • サーバーの IP と優先

  • key

  • バージョン

[edit protocols rip]

     

message-size message-size

[edit system login class test]
set permissions configure
set allow-configuration-regexps "protocols rip message-size .*"
set deny-configuration-regexps [ "protocols rip metric-in .*" "protocols rip route-timeout .*" "protocols rip update-interval .*" ]
  • メッセージサイズ

  • メトリックイン

  • ルート-タイムアウト

  • 更新間隔

Metric-in Metric-in

[edit system login class test]
set permissions configure
set  allow-configuration-regexps "protocols rip metric-in .*"
set  deny-configuration-regexps [ "protocols rip message-size .*" "protocols rip route-timeout .*" "protocols rip update-interval .*" ]
  • メトリックイン

  • メッセージサイズ

  • ルート-タイムアウト

  • 更新間隔

ルート タイムアウト ルート タイムアウト

[edit system login class test]
set permissions configure
set allow-configuration-regexps "protocols rip route-timeout .*"
set deny-configuration-regexps [ "protocols rip metric-in .*" "protocols rip message-size .*" "protocols rip update-interval .*" ]
  • ルート-タイムアウト

  • メッセージサイズ

  • メトリックイン

  • 更新間隔

update-interval update-interval(更新間隔)

[edit system login class test]
set permissions configure
set allow-configuration-regexps "protocols rip update-interval .*"
set deny-configuration-regexps [ "protocols rip metric-in .*" "protocols rip route-timeout .*" "protocols rip message-size .*" ]
  • 更新間隔

  • メッセージサイズ

  • メトリックイン

  • ルート-タイムアウト

Allow configuration および deny configuration ステートメントを使用したアクセス権限の定義例

アクセス権限は、次のような文のタイプを組み合わせて定義できます。

  • 権限フラグ

  • allow-configurationおよびdeny-configurationステートメント

権限フラグによって、個人またはログインクラスがアクセスして制御するための、より大きな境界が定義されます。And allow-configurationdeny-configurationステートメントは権限フラグよりも優先されるため、管理者はユーザーがアクセスできる内容を細かく制御できます。

このトピックでは、and allow-configurationdeny-configurationステートメントを使用してアクセス権限を定義する方法について説明します。これらのステートメントを使用してログインクラス構成の一連の例を示します。例 1 ~ 3 は、アクセス許可フラグdeny-configurationとステートメントの両方を使用して、ユーザーが何もアクセスできないようにするログインクラスを作成します。各allow-configuration or deny-configurationステートメントは、許可または拒否される1つ以上の正規表現を使用して設定されます。

アクセス許可のビットアクセス許可フラグが同義で使用されていることに注意してください。

例1

Telnet パラメーターを除くすべての設定を許可するログインクラスを作成するには、以下のようにします。

  1. ユーザーのログイン クラス権限ビットを に設定します all
  2. deny-configurationのステートメントが含まれています。

例2

ユーザーが「m」で始まるログイン クラス内以外のすべてを設定できるログイン クラスを作成するには、次の手順に示します。

  1. ユーザーのログイン クラス権限ビットを に設定します all

  2. deny-configurationのステートメントが含まれています。

例3

この次の例は、ユーザーが設定を編集しallたり、 commit[edit system login class]または[edit system services]階層レベルでコマンドを発行したりできないように、アクセス許可ビットを持つ login クラスを作成する方法を示しています。

ユーザーがまたは階層レベル以外のすべてを設定できるログインクラスを[edit system login class]作成[edit system services]するには、次のようにします。

  1. ユーザーのログイン クラス権限ビットを に設定します all

  2. deny-configurationのステートメントが含まれています。

次の2つの例は、 allow-configuration and deny-configurationステートメントを使用して[edit system services]階層レベルのアクセス許可を互いに逆に決定する方法を示しています。

例4

ユーザーが[edit system services]階層レベルと[edit system services]階層レベルのみでフル構成権限を持つことができるようにするログインクラスを作成するには、以下のようにします。

  1. ユーザーのログイン クラス権限ビットを に設定します configure

  2. allow-configurationのステートメントが含まれています。

例5

ユーザーが[edit system services]階層レベル以外のすべての設定モード階層でフルアクセス権を持つようにするログインクラスを作成するには、次のようにします。

  1. ユーザーのログイン クラス権限ビットを に設定します all

  2. deny-configuration のステートメントが含まれています。

例:正規表現で加法ロジックを使用してアクセス権限を指定する

この例では、正規表現を使用して設定アクセス権限を設定する際に加法ロジックを使用する方法を示します。

構成

順を追った手順

正規表現の加法ロジックを有効にするには、次のようにします。

  1. 1つ以上の個別の構成モード階層を明示的にallow-configuration-regexps許可するに[edit system login class class-name]は、許可される正規表現を使用して構成された、階層レベルのステートメントを含めます。

  2. ログインクラスを1人または複数のユーザーに割り当てます。

  3. 正規表現の加法ロジックを有効にします。

  4. 変更をコミットします。

    このログインクラスを割り当てられているユーザーは、 allow-configuration-regexpsステートメントに含まれている設定階層にはアクセスできますが、その他の権限は付与されていません。

要件

この例では、以下のハードウェアとソフトウェアのコンポーネントを使用しています。

  • 1つのジュニパーネットワークス J シリーズ、M Series、MX シリーズ、T Series デバイス

  • Junos OS リリース16.1 以降

    • 少なくとも1人のユーザーがログインクラスに割り当てられている必要があります。

    • 複数のログインクラスがあり、それぞれに異なる権限が設定されていて、デバイス上に複数のユーザーが存在することがあります。

概要

システムに設定変更を加えることができるユーザーと、特に変更可能なものを制御するには、名前付きユーザークラスのユーザーがアクセスを許可されている構成階層の特定部分を示す正規表現を作成します。たとえば、ユーザーによる変更を許可するルーティングインスタンスのグループを指定する正規表現を作成し、ユーザーがその他のルーティングインスタンスやその他の設定レベルに変更を加えることを禁止することができます。

allow-configuration-regexps And deny-configuration-regexpsステートメントを使用して正規表現を設定します。デフォルトではdeny-configuration-regexps 、ステートメントは適用allow-configuration-regexpsされる名前付きユーザークラスのユーザーに対するステートメントよりも優先されます。

名前付きのユーザークラスのdeny-configuration-regexpsステートメントで設定階層が表示されている場合は、 allow-configuration-regexpsステートメントの内容に関係なく、ユーザーには表示されません。構成階層がdeny-configuration-regexps文に表示されない場合は、 allow-configuration-regexps文に含まれている場合、またはユーザークラスに設定allow-configuration-regexpsされている文がない場合に表示されます。.

必要に応じて、このデフォルトの動作を変更して、標準式で使用される付加ロジック (デフォルトではすべてを拒否/指定した処理が許可される) を実行することもできます。加法ロジックが有効になっている場合、既存の正規表現の動作は、名前付きユーザークラスのallow-configuration-regexpsステートメントに含まれない限り、すべての構成階層が拒否されるように変化します。

加法ロジックによる正規表現の使用

目的

このセクションでは、加法ロジックを使用した正規表現の例として、お使いのシステムに適した構成を作成するためのアイデアを提供します。

特定のルーティングインスタンスを許可

次のログインクラスの例には、名前がでCUST-VRF-始まるルーティングインスタンスの設定を可能にする正規表現が含まれています。たとえばCUST-VRF-1CUST-VRF-25、、、などがあります。 CUST-VRF-100

次のステートメントが構成に含まれている場合、ユーザーは他のルーティングインスタンスを構成できず、ルーティングされていないインスタンスの構成階層へのアクセスが拒否されます。

BGP ピア構成のみを許可

次のログインクラスの例には、BGP ピアの設定を可能にする正規表現が含まれています。

次のステートメントが設定に含まれている場合、ユーザーは BGP ステートメントの削除や無効化など、その他の変更を行うことはできません。

検証

アクセス権限が正しく設定されていることを確認するには、以下のようにします。

  1. ログインクラスを設定し、変更をコミットします。

  2. ユーザー名にログイン クラスを割り 当てる

  3. 新しいログイン クラス で割り当 てられたユーザー名としてログインします。

  4. 許可された設定を実行しようとしています。

    • 許可された階層レベルと正規表現への設定変更を実行できるようにする必要があります。

    • その他すべての階層は表示されません。

    • 許可または拒否された式は、 permissionsステートメントによって与えられた権限よりも優先する必要があります。

例:運用モードコマンドのアクセス権限によるユーザー権限の設定

この例では、カスタムログインクラスを設定し、運用モードコマンドのアクセス権限を割り当てる方法を示しています。これにより、カスタマイズしたログインクラスのユーザーは、アクセス権限が指定されている運用コマンドのみを実行できます。これにより、不正ユーザーがネットワークに損害を与える可能性がある重要なコマンドを実行できないようにします。

要件

この例では、以下のハードウェアとソフトウェアのコンポーネントを使用しています。

  • 1つのジュニパーネットワークスデバイス

  • 1台の TACACS + (RADIUS) サーバー

  • ジュニパーネットワークスデバイスで実行されている Junos OS ビルド

開始する前に:

  • デバイスと TACACS + サーバー間の TCP 接続を確立します。RADIUS サーバーの場合は、デバイスと RADIUS サーバー間の UDP 接続を確立します。

    TACACS + サーバーの設定の詳細については、 tacacs + 認証の構成を参照してください。

  • ジュニパーネットワークスデバイスで、ログインクラスに割り当てられたユーザーを少なくとも1人設定します。複数のログインクラスがあり、それぞれに異なる権限が設定されていて、デバイス上に複数のユーザーが存在することがあります。

概要とトポロジー

各トップレベルコマンドラインインターフェース (CLI) コマンドと Junos OS の各設定文には、アクセス権限レベルが関連付けられています。各ログインクラスに対して、権限レベルによって許可または禁止される、運用モードコマンドと設定オプションの使用を明示的に拒否または許可することができます。ユーザーは、これらのコマンドのみを実行し、アクセス権限を持つステートメントのみを設定および表示できます。アクセス権限レベルを設定するにはpermissions 、階層レベル[edit system login class class-name]のステートメントを追加します。

各ログインクラスのアクセス権限は、そのpermissionsステートメントで指定された1つ以上の権限フラグによって定義されます。さらに、次のステートメントを使用して拡張正規表現を指定することもできます。

  • allow-commands および deny-commands — 動作モード コマンドへのアクセスを許可または拒否のみ。

  • allow-configuration および deny-configuration — 特定の設定階層へのアクセスを許可または拒否のみ。

  • allow-configuration-regexps および deny-configuration-regexps — 正規表現の文字列を使用して、特定の設定階層へのアクセスを許可または拒否します。

  • allow-commands-regexpsdeny-commands-regexpsおよび —(TACACS+ 許可のみ) 正規表現の文字列を使用して、特定のコマンドへのアクセスを許可または拒否します。

上記のステートメントは、個々の動作モード コマンド、設定ステートメント、階層に対するユーザーのアクセス権限を定義します。これらの文は、ユーザーに対して設定されたログインクラスの権限よりも優先されます。

Configuration Notes

allow-commandsdeny-commandsallow-configuration、およびdeny-configurationステートメントをアクセス権限で設定する場合は、以下の点に注意してください。

  • 各ログインクラスに allow/deny ステートメントを1回だけ含めることができます。

  • And allow-commandsdeny-commandsステートメントの両方または両方allow-configurationdeny-configurationで同じコマンドが設定されている場合は、deny ステートメントよりも allow (許可) 操作の方が優先します。

    たとえば、次のように設定すると、ログインクラステストに割り当てられたユーザーはrequest system software addコマンドを使用してソフトウェアdeny-commandsをインストールできますが、ステートメントにはそれも含まれています。

    たとえば、次のように設定すると、ログインクラステストに割り当てられたユーザーが[edit system services]設定階層にアクセスできdeny-configurationます。そのステートメントには、その内容も含まれています。

  • 2つの異なるバリエーションを持つallow-commands and deny-commandsステートメントを正規表現として指定すると、最も一致するものが常に実行されます。

    たとえば、次の設定では、テストログインクラスに割り当てられたユーザーがコマンドをcommit synchronize実行することはcommitできません。これは、 commit-synchronize最も長いマッチがcommit and commit-synchronizeで指定されているためallow-commandsです。

  • And allow-commandsdeny-commandsステートメントのcommit正規表現にはloadrollbacksave、、、、、 status、およびupdateコマンドを含めることもできます。

  • allow-configuration文を使用して設定モード階層または正規表現を明示的に許可するとpermissions 、文を使用して標準の権限セットに追加されます。同様に、設定モード階層や正規表現を明示的deny-configurationに拒否するステートメントを使用して、指定された設定モード階層のpermissions権限をステートメントが提供するデフォルト権限から削除します。

    たとえば、以下の設定では、login クラスのユーザーは、 [edit system services]階層レベルで設定を編集して設定モードのコマンド (などcommit) を実行できます。さらに、configure 権限フラグconfigureによって指定されたコマンドを使用して設定モードを入力するだけではありません。

    同様に、次の設定では、ログイン クラス ユーザーは、設定モード コマンド(など)の発行や階層レベルでの設定の変更を除き、すべての許可フラグで許可されるすべての操作を実行 commit[edit system services] できます。

  • allow/deny-configurationステートメントはステートメントとallow/deny-configuration-regexpsallow-deny-commandsは相互に排他的で、ステートメントはallow/deny-commands-regexpsステートメントと相互に排他的になっています。たとえば、同じログインクラスallow-configurationallow-configuration-regexps内で両方を設定することはできません。

  • allow/deny-configuration Or allow/deny-commandsステートメントを使用して既存の構成がある場合は、 allow/deny-configuration-regexps or allow/deny-commands-regexpsステートメントで同じ設定オプションを使用すると、これらのステートメントの2つの形式の検索と照合の方法が異なるため、同じ結果が得られないことがあります。

  • 構成階層の一部に対するアクセス権限を定義するには、 allow-configuration and deny-configurationステートメントを使用して、拡張正規表現で完全パスを指定します。2つ以上の式をパイプ (|) 記号に接続する拡張正規表現をかっこで囲んで使用します。

    たとえば、以下のように記述します。

  • 正規表現にスペース、演算子、ワイルドカード文字が含まれている場合は、式を引用符で囲みます。正規表現では、大文字小文字は区別されません。たとえば、 allow-commands "show interfaces"のようになります。

  • セット、ログ、カウントなどの形式変更は、正規表現文字列内で一致する必要があります。修飾子が使用されている場合は、何も照合されません。

    不適切な構成:

    正しい設定:

  • allow-commandsステートメントで複雑な正規表現を指定するときは、アンカーが必要です。

    たとえば、以下のように記述します。

  • allow/deny-commands And allow/deny-configurationステートメントを使用して拡張正規表現を指定する場合、パイプ (|) 記号によって区切られた各式は、完全なスタンドアロン式である必要があり、かっこ () で囲む必要があります。正規表現とかっこで区切り、パイプ (|) 記号で接続する場合は、スペースを使用しないでください。

    たとえば、以下のように記述します。

  • allow/deny-configuration-regexps Or allow/deny-commands-regexpsステートメントを使用して拡張正規表現を指定する場合、引用符 (") 内に囲まれてスペースで区切られる各式は、角かっこ [] で囲む必要があります。

    たとえば、以下のように記述します。

  • 正規表現を表すには、* ワイルドカード文字を使用できます。ただし、正規表現の一部として使用する必要があります。[ * ] または [ .* ] 単独 では使用 できません。

  • ステートメントを( インターフェイス allow-configuration (説明 (インターフェイス)で設定|。*)正規表現 と評価される正規表現 allow-configuration = .*

  • 許可または拒否するために必要な数の正規表現を構成できます。拒否される正規表現は、許可されるように設定に優先します。

Topology

図 1: TACACS + サーバー認証の構成TACACS + サーバー認証の構成

図 1は、ルーター R1 がジュニパーネットワークスデバイスであり、TACACS + サーバーとともに TCP 接続を確立している、シンプルなトポロジーを示しています。

この例では、R1 は、 と ステートメントを異なる方法で使用して拡張正規表現を使用してアクセス権限を指定するように、3 つのカスタマイズされたログイン クラス(Class1、Class2、Class3)で設定されています。 allow-commandsdeny-commands

各ログインクラスの目的は次のとおりです。

  • Class1—ステートメントのみを使用してユーザーのアクセス権限 allow-commands を定義します。このログインクラスは、オペレータレベルのユーザー権限を提供し、デバイスの再起動のみを許可する必要があります。

  • Class2—ステートメントのみを使用してユーザーのアクセス権限 deny-commands を定義します。このログインクラスは、オペレータレベルのユーザー権限を提供し、コマンドsetへのアクセスを拒否する必要があります。

  • Class3—および と の両方のステートメントを使用して、ユーザーのアクセス権限 allow-commandsdeny-commands を定義します。このログインクラスはスーパーユーザーレベルでの権限を提供し、インターフェイスへのアクセスやデバイス情報の表示のための権限を提供する必要があります。また、 editconfigureコマンドへのアクセスも拒否する必要があります。

ルーター R1 には、それぞれ異なるユーザー、User1、User2、User3 が3つあり、それぞれが Class1、Class2、および Class3 の各ログインクラスに割り当てられています。

構成

CLI クイック構成

この例を簡単に構成するには、以下のコマンドをコピーしてテキストファイルに貼り付け、改行を削除し、ネットワーク設定に一致する必要がある詳細を変更し、コマンドを[edit]階層レベルで CLI にコピー & ペーストしてから設定commitモードから開始します。

R1

ルーター R1 用の認証パラメーターの設定

順を追った手順

次の例では、構成階層のさまざまなレベルを移動する必要があります。Cli のナビゲートの詳細については、『 Cli ユーザーガイド』の「 Cli エディターを設定モードで使用する」を参照してください。

ルーター R1 認証を構成するには、次のようにします。

  1. R1 の認証を実行する順序を設定します。この例では、TACACS + サーバー認証が最初に行われ、その後で RADIUS サーバー認証、ローカルパスワードの順になります。

  2. TACACS + サーバーとの R1 接続を確立します。

  3. サーバーの認証パラメーターを構成 RADIUS ます。

  4. R1 アカウンティング構成パラメーターを構成します。

Allow commands ステートメントのみを使用してアクセス権限を設定する (Class1)

順を追った手順

ステートメントのみを使用してallow-commands正規表現を指定するには、以下のようにします。

  1. Class1 のカスタムログインクラスを設定し、オペレーターレベルのユーザー権限を割り当てます。事前定義されたシステムログインクラスの詳細については、「 Junos OS ログインクラスの概要」を参照してください。

  2. allow-commands文で R1 の再起動を有効にするためのコマンドを指定します。

  3. Class1 ログインクラスのユーザーアカウントを設定します。

Deny コマンドステートメントのみを使用してアクセス権限を設定する (Class2)

順を追った手順

ステートメントのみを使用してdeny-commands正規表現を指定するには、以下のようにします。

  1. Class2 カスタムログインクラスを設定し、オペレーターレベルのユーザー権限を割り当てます。事前定義されたシステムログインクラスの詳細については、「 Junos OS ログインクラスの概要」を参照してください。

  2. deny-commandsステートメントで set コマンドの実行を無効にします。

  3. Class2 ログインクラスのユーザーアカウントを設定します。

Allow コマンドと deny コマンドの両方を使用したアクセス権限の設定 (Class3)

順を追った手順

And allow-commandsステートメントの両方を使用しdeny-commandsて正規表現を指定するには、以下のようにします。

  1. Class3 カスタムログインクラスを設定し、スーパーユーザレベルのユーザー権限を割り当てます。事前定義されたシステムログインクラスの詳細については、「 Junos OS ログインクラスの概要」を参照してください。

  2. allow-commandsステートメントで設定コマンドのみを有効にするためのコマンドを指定します。

  3. deny-commandsステートメントですべてのコマンドの実行を無効にします。

  4. Class1 ログインクラスのユーザーアカウントを設定します。

結果

設定モードから、 show systemコマンドを入力して設定を確認します。出力に意図した構成が表示されない場合は、この例の手順を繰り返して設定を修正します。

検証

新しいログインクラスで割り当てられたユーザー名としてログインし、設定が適切に機能していることを確認します。

Class1 構成を検証しています

目的

Class1 ログインクラスで許可されている権限とコマンドが機能していることを確認します。

アクション

動作モードから、 show system usersコマンドを実行します。

動作モードから、 request system rebootコマンドを実行します。

User1 が割り当てられている Class1 ログインクラスは、オペレータレベルのユーザー権限を持ち、そのrequest system rebootコマンドを実行することができます。

定義済みのオペレータログインクラスには、以下の権限フラグが指定されています。

  • clear—コマンドを使用して、さまざまなネットワーク データベースに保存されているネットワークから学習した情報を消去(削除 clear )できます。

  • network— 、および ping のコマンド ssh を使用 telnet してネットワークにアクセス traceroute できます。

  • reset— コマンドを使用してソフトウェア プロセスを再起動し、階層レベルでソフトウェア プロセスを有効 restart または無効にするかどうかを [edit system processes] 構成できます。

  • trace:トレース ファイル設定を表示し、トレース ファイルのプロパティを設定できます。

  • view:さまざまなコマンドを使用して、現在のシステム全体、プロトコル固有ルーティング テーブルと統計情報を表示できます。シークレット構成を表示できません。

Class1 のログインクラスについては、前述のユーザー権限に加え、User1 がrequest system rebootコマンドを実行できます。最初の出力ではビューの権限が演算子として表示され、2つrequest目の出力ではrequest system rebootコマンドとして、User1 が演算子として実行できる唯一のコマンドが表示されていることがわかります。

Class2 構成を検証する

目的

Class2 ログインクラスに対して許可されている権限とコマンドが機能していることを確認します。

アクション

動作モードから、 pingコマンドを実行します。

CLI プロンプトから、使用可能な権限を確認します。

CLI プロンプトから任意の set コマンドを実行します。

User2 が割り当てられている Class2 ログインクラスは、オペレータレベルのユーザー権限を持ち、すべてsetのコマンドへのアクセスが拒否されます。これは、コマンド出力に表示されます。

定義済みの operator ログインクラスに対して指定された権限フラグは、Class1 と同じです。

Class3 構成の確認

目的

Class3 のログインクラスに許可されている権限とコマンドが動作していることを確認します。

アクション

CLI プロンプトから、使用可能な権限を確認します。

運用モードから、設定モードに入ります。

User3 が割り当てられている Class3 ログインクラスは、スーパーユーザー (all) 権限を持っていますがconfigure 、コマンドのみを実行することができ、その他の運用モードコマンドへのアクセスは拒否されます。allow/deny-commandsステートメントに指定されている正規表現はユーザー権限よりも優先度が高いため、R1 の User3 は設定モードのみにアクセスし、その他のすべての運用モードコマンドへのアクセスは拒否されます。

例:構成ステートメントと階層のアクセス権を使用したユーザー権限の設定

この例では、カスタムログインクラスを設定し、構成階層の一部にアクセス権限を割り当てる方法を示しています。これにより、カスタマイズしたログインクラスのユーザーは、アクセス権限が指定されている構成ステートメントと階層のみを実行できます。これにより、不正なユーザーがネットワークに損害を与える可能性があるデバイス構成にアクセスできなくなります。

要件

この例では、以下のハードウェアとソフトウェアのコンポーネントを使用しています。

  • 1つのジュニパーネットワークスデバイス

  • 1台の TACACS + (RADIUS) サーバー

  • ジュニパーネットワークスデバイスで実行されている Junos OS ビルド

開始する前に:

  • デバイスと TACACS + サーバー間の TCP 接続を確立します。RADIUS サーバーの場合は、デバイスと RADIUS サーバー間の UDP 接続を確立します。

    TACACS + サーバーの設定の詳細については、 tacacs + 認証の構成を参照してください。

  • ジュニパーネットワークスデバイスで、ログインクラスに割り当てられたユーザーを少なくとも1人設定します。複数のログインクラスがあり、それぞれに異なる権限が設定されていて、デバイス上に複数のユーザーが存在することがあります。

概要とトポロジー

各トップレベルコマンドラインインターフェース (CLI) コマンドと Junos OS の各設定文には、アクセス権限レベルが関連付けられています。各ログインクラスに対して、権限レベルによって許可または禁止される、運用モードコマンドと設定オプションの使用を明示的に拒否または許可することができます。ユーザーは、これらのコマンドのみを実行し、アクセス権限を持つステートメントのみを設定および表示できます。アクセス権限レベルを設定するにはpermissions 、階層レベル[edit system login class class-name]のステートメントを追加します。

各ログインクラスのアクセス権限は、そのpermissionsステートメントで指定された1つ以上の権限フラグによって定義されます。さらに、次のステートメントを使用して拡張正規表現を指定することもできます。

  • allow-commands および deny-commands — 動作モード コマンドへのアクセスを許可または拒否します。

  • allow-configuration および deny-configuration — 設定階層の一部へのアクセスを許可または拒否します。

    これらのステートメントは、より柔軟に、特にワイルドカードによるマッチングを実行します。しかし、多数のフルパス正規表現またはワイルドカード式が設定されていると、パフォーマンスに影響を与える可能性がある場合に、使用可能なすべてのステートメントを評価するのに非常に長い時間がかかることがあります。

  • allow-configuration-regexps および deny-configuration-regexps — 正規表現の文字列を使用して、特定の設定階層へのアクセスを許可または拒否します。これらのステートメントはallow-configuration and ステートメントdeny-configurationと似ていますがallow/deny-configuration-regexps 、文の最初のセットを使用した場合、文字列にスペースが含まれる文字列セットを設定できるという点が異なります。

上記のステートメントは、個々の動作モード コマンド、設定ステートメント、階層に対するユーザーのアクセス権限を定義します。これらのステートメントは、ユーザーのログインクラス権限ビットセットよりも優先されます。

Difference between allow/deny-configuration and allow/deny-configuration-regexps statements

およびallow-configurationdeny-configurationステートメントは Junos OS リリース7.4 よりも前に導入されました。およびallow-configuration-regexpsdeny-configuration-regexpsステートメントは Junos OS リリース11.2 で導入されました。Junos OS リリース11.4 では、 allow-configuration and deny-configuration文は推奨されませんでしたが、これらの文はシンプルな設定を実行するのには便利であるため、これらの文は Junos OS リリース 11.4 allow/deny-configurationの r6 allow/deny-configuration-regexpsから廃止されました。 11.4 r6 以降のリリースでは、と文の両方をサポートしています。

ステートメントでは正規表現が大小路に分割され、指定された設定のフル パスの各部に各部分が一致し、ステートメントは完全な文字列と allow/deny-configuration-regexpsallow/deny-configuration 一致します。文allow/deny-configuration-regexpsの場合は、文字列の条件の間にスペースを入れる正規表現で構成された文字列のセットを設定します。これにより、迅速なマッチングが可能になりますが、柔軟性が低下します。ワイルドカード式を指定するには、検索するスペース区切り文字列の各トークンに対してワイルドカードを設定する必要があります。これにより、これらのステートメントにワイルドカードを使用するのが面倒になります。

たとえば、以下のように記述します。

  • Allow configuration-regexps を使用して1つのトークンと一致する正規表現

    この例ではoptions 、ステートメントの最初のトークンに対して唯一一致する式があることを示しています。

    上記の設定は、以下の文と一致します。

    • set policy- options condition condition dynamic-db

    • set routing- options static route static-route next-hop next-hop

    • イベント生成 options イベントの 間隔(秒 ) を設定する

    上記の構成は、以下の文とは異なります。

    • システムホスト名ホスト-options

    • インターフェイス インターフェイス 名の 説明 options

  • Allow configuration を使用して3つのトークンを照合する正規表現-regexps

    この例ではssh 、ステートメントの3番目のトークンに対して唯一一致する式があることを示しています。

    上記の例では、3つの.*トークン.*には.*ssh、、、、それぞれが含まれています。

    上記の設定は、以下の文と一致します。

    • システムホスト名 hostname-ssh

    • システムサービス ssh

    • システムサービス送信-ssh

    上記の構成は、以下の文とは異なります。

    • インターフェイス インターフェイス 名の 説明 ssh

ステートメントを使用deny-configurationする場合と比較しdeny-configuration-regexpsて、ステートメントを使用して設定アクセスを簡単に制限できます。表 6は、特定の構成へdeny-configurationdeny-configuration-regexpsアクセスを制限するという、異なる設定での and ステートメントの使用について説明しています。

表 6: 拒否設定と拒否構成を使用して設定アクセスを制限する regexps ステートメント

構成拒否

使っ拒否-設定

使っ拒否設定-regexps

生じる

xnm-ssl

[edit system]
login {
    class test {
        permissions configure;
         allow-configuration .*;
        deny-configuration .*xnm-ssl;
    }
}
[edit system]
login {
    class test {
        permissions configure;
         allow-configuration .*;
        deny-configuration-regexps ".* .* .*-ssl"";
    }
}

以下の構成文が拒否されています。

  • システムサービス xnm-ssl

ssh

[edit system]
login {
    class test {
        permissions configure;
         allow-configuration .*;
        deny-configuration ".*ssh";
    }
}
[edit system]
login {
    class test {
        permissions configure;
         allow-configuration .*;
        deny-configuration-regexps ".*ssh";
        deny-configuration-regexps ".* .*ssh";
        deny-configuration-regexps ".* .* .*ssh";
    }
}

以下の構成文が拒否されています。

  • システムホスト名 hostname-ssh

  • システムサービス ssh

  • システムサービス送信-ssh

  • セキュリティー ssh の既知のホスト

allow/deny-configurationこのステートメントは、シンプルな設定が求めallow/deny-configuration-regexpsられるときにも役立ちますが、ステートメントを使用すると、パフォーマンスが向上し、 allow/deny-configurationステートメントに設定された式を組み合わせるときに存在したあいまいさが解消されます。

注:

allow/deny-configuration And allow/deny-configuration-regexpsステートメントは相互に排他的であり、ログインクラスに対して同時に設定することはできません。ログインクラスには、指定された時点でステートメントまたはallow/deny-configurationallow/deny-configuration-regexpsステートメントのいずれかを含めることができます。allow/deny-configurationステートメントを使用している既存の構成がある場合、これらのステートメントallow/deny-configuration-regexpsと同じ設定オプションを使用しても、検索と match の方法によって2つの形式が異なるため、同じ結果が得られないことがあります。

Configuration Notes

allow-configurationdeny-configurationallow-configuration-regexps、およびdeny-configuration-regexpsステートメントをアクセス権限で設定する場合は、以下の点に注意してください。

  • 各ログインクラスにdeny-configuration 1 つallow-configurationのステートメントと1つの文を含めることができます。

  • allow/deny-configuration And allow/deny-configuration-regexpsステートメントは相互に排他的であり、ログインクラスに対して同時に設定することはできません。ログインクラスには、指定された時点でステートメントまたはallow/deny-configurationallow/deny-configuration-regexpsステートメントのいずれかを含めることができます。allow/deny-configurationステートメントを使用している既存の構成がある場合、これらのステートメントallow/deny-configuration-regexpsと同じ設定オプションを使用しても、検索と match の方法によって2つの形式が異なるため、同じ結果が得られないことがあります。

  • allow-configuration文を使用して設定モード階層または正規表現を明示的に許可するとpermissions 、文を使用して標準の権限セットに追加されます。同様に、設定モード階層や正規表現を明示的deny-configurationに拒否するステートメントを使用して、指定された設定モード階層のpermissions権限をステートメントが提供するデフォルト権限から削除します。

    たとえば、以下の設定では、login クラスのユーザーは、 [edit system services]階層レベルで設定を編集して設定モードのコマンド (などcommit) を実行できます。さらに、configure 権限フラグconfigureによって指定されたコマンドを使用して設定モードを入力するだけではありません。

    同様に、次の設定では、ログイン クラス ユーザーは、設定モード コマンド(など)の発行や階層レベルでの設定の変更を除き、すべての許可フラグで許可されるすべての操作を実行 commit[edit system services] できます。

  • 構成階層の一部に対するアクセス権限を定義するには、 allow-configuration and deny-configurationステートメントを使用して、拡張正規表現で完全パスを指定します。2つ以上の式をパイプ (|) 記号に接続する拡張正規表現をかっこで囲んで使用します。

    たとえば、以下のように記述します。

  • allow/deny-commands And allow/deny-configurationステートメントを使用して拡張正規表現を指定する場合、パイプ (|) 記号によって区切られた各式は、完全なスタンドアロン式である必要があり、かっこ () で囲む必要があります。正規表現とかっこで区切り、パイプ (|) 記号で接続する場合は、スペースを使用しないでください。

    たとえば、以下のように記述します。

  • allow-deny-configuration-regexpsステートメントを使用して拡張正規表現を指定するときは、引用符 (「) 内に含まれる各式は角かっこ [] で囲む必要があります。

    たとえば、以下のように記述します。

  • Both とallow-configurationdeny-configurationステートメントの両方で同じコマンドが設定されている場合は、deny ステートメントよりも allow (許可) 操作の方が優先します。

    たとえば、次のように設定すると、ログインクラステストに割り当てられたユーザーが[edit system services]設定階層にアクセスできdeny-configurationます。そのステートメントには、その内容も含まれています。

    たとえば、権限すべて使用など特定のコマンドや設定が許可されている場合、 コマンドを使用して特定の階層へのアクセス deny-configuration を拒否できます。

  • セット、ログ、カウントなどの形式変更は、正規表現文字列内で一致する必要があります。修飾子が使用されている場合は、何も照合されません。

    不適切な構成:

    正しい設定:

  • 正規表現を表すには、* ワイルドカード文字を使用できます。ただし、正規表現の一部として使用する必要があります。[ * ] または [ .* ] 単独 では使用 できません。

  • ステートメントを( インターフェイス allow-configuration (説明 (インターフェイス)で設定|。*)正規表現 と評価される正規表現 allow-configuration = .*

  • 許可または拒否するために必要な数の正規表現を構成できます。拒否される正規表現は、許可されるように設定に優先します。

Topology

図 2: TACACS + サーバー認証の構成TACACS + サーバー認証の構成

図 2は、ルーター R1 がジュニパーネットワークスデバイスであり、TACACS + サーバーとともに TCP 接続を確立している、シンプルなトポロジーを示しています。

この例では、 、 、および のステートメントを使用して拡張正規表現を使用してアクセス権限を指定するように、クラス1とクラス2という2つのカスタマイズされたログイン クラスを使用してR1を allow-configurationdeny-configurationallow-configuration-regexpsdeny-configuration-regexps 設定します。

ログインクラスの目的は次のとおりです。

  • Class1— および ステートメントを使用してユーザーのアクセス権限 allow-configurationdeny-configuration を定義します。このログインクラスは、インターフェイス階層のみを構成するためのアクセスを提供し、デバイス上のその他のすべてのアクセスを拒否する必要があります。これを行うには、ユーザーの権限に、設定アクセス を提供する設定 を含める必要があります。さらに、このallow-configurationステートメントはインターフェイスの設定を許可する必要がdeny-configurationあり、ステートメントは他のすべての構成へのアクセスを拒否する必要があります。Allow ステートメントは deny ステートメントよりも優先されるため、Class1 のログインクラスに割り当てられているユーザー [edit interfaces]は、階層レベルのみにアクセスできます。

  • Class2— および ステートメントを使用してユーザーのアクセス権限 allow-configuration-regexpsdeny-configuration-regexps を定義します。このログインクラスはスーパーユーザーレベルでの権限を提供します。さらに、インターフェイスに対して複数の階層レベルの設定を明示的に許可します。また、および[edit system]階層レベルへの[edit protocols]構成のアクセスも拒否されます。

ルーター R1 は、User1 と User2 の2人を持ち、それぞれが Class1 および Class2 ログインクラスに割り当てられています。

構成

CLI クイック構成

この例を簡単に構成するには、以下のコマンドをコピーしてテキストファイルに貼り付け、改行を削除し、ネットワーク設定に一致する必要がある詳細を変更し、コマンドを[edit]階層レベルで CLI にコピー & ペーストしてから設定commitモードから開始します。

R1

ルーター R1 用の認証パラメーターの設定

順を追った手順

次の例では、構成階層のさまざまなレベルを移動する必要があります。Cli のナビゲートの詳細については、『 Cli ユーザーガイド』の「 Cli エディターを設定モードで使用する」を参照してください。

ルーター R1 認証を構成するには、次のようにします。

  1. R1 の認証を実行する順序を設定します。この例では、TACACS + サーバー認証が最初に行われ、その後で RADIUS サーバー認証、ローカルパスワードの順になります。

  2. TACACS + サーバーとの R1 接続を確立します。

  3. サーバーの認証パラメーターを構成 RADIUS ます。

  4. R1 アカウンティング構成パラメーターを構成します。

Allow configuration および deny configuration ステートメントによるアクセス権限の設定 (Class1)

順を追った手順

And allow-configurationステートメントを使用してdeny-configuration正規表現を指定するには、以下のようにします。

  1. Class1 のカスタムログインクラスを設定し、設定ユーザーの権限を割り当てます。

  2. 階層レベルでの設定をallow-configuration許可するように、ステートメントの正規表現を指定します。 [edit interfaces] 階層レベルsetでコマンドを実行できるようにするために、 [edit interfaces]使用される正規表現はとなります。 interfaces .* unit .*

  3. deny-configurationステートメントの正規表現を指定して、すべての設定アクセスを無効にします。すべての設定アクセスを拒否するために使用.*される正規表現はです。

  4. Class1 ログインクラスのユーザーアカウントを設定します。

Allow configuration-regexps および deny configuration によるアクセス権限の設定-regexps ステートメント (Class2)

順を追った手順

And allow-configuration-regexpsステートメントを使用してdeny-configuration-regexps正規表現を指定するには、以下のようにします。

  1. Class2 カスタムログインクラスを設定し、スーパーユーザー (すべて) の権限を割り当てます。事前定義されたシステムログインクラスの詳細については、「 Junos OS ログインクラスの概要」を参照してください。

  2. 階層レベル以下の[edit interfaces]複数の階層へのアクセスを許可する正規表現を指定します。

  3. [edit system]階層レベルでの[edit protocols]設定を拒否する正規表現を指定します。

  4. Class2 ログインクラスのユーザーアカウントを設定します。

結果

設定モードから、 show systemコマンドを入力して設定を確認します。出力に意図した構成が表示されない場合は、この例の手順を繰り返して設定を修正します。

検証

新しいログインクラスで割り当てられたユーザー名としてログインし、設定が適切に機能していることを確認します。

Class1 構成を検証しています

目的

Class1 ログインクラスで許可されている権限が機能していることを確認します。

アクション

CLI プロンプトから、使用可能な権限を確認します。

設定モードから、使用可能な構成権限を確認します。

User1 は 最初 の出力で見られるユーザー権限を設定し、User1 に対して許可される設定アクセスはインターフェイス階層レベルのみです。2つ目の出力で見られるように、その他すべての構成が拒否されます。

Class2 構成を検証する

目的

Class2 構成が機能していることを確認します。

アクション

設定モードから、インターフェイス構成にアクセスします。

構成モードから、システムおよびプロトコルの構成階層にアクセスします。

User2 は R1 のインターフェースを構成する権限を持っ[edit system][edit protocols]いますが、出力に見られるように、および階層レベルはアクセスが拒否されています。