Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

ユーザーアクセス権限

システム管理者は、ユーザーにコマンドや、設定の階層レベルおよびステートメントへのアクセスまたは権限を付与します。ユーザーは、アクセス権限のあるコマンドのみを実行し、アクセス権限のあるステートメントのみを表示および設定できます。拡張正規表現を使用すれば、ユーザーに許可または拒否する動作モードコマンド、設定ステートメント、階層を指定することもできます。これは、権限のないユーザーが、注意が必要なコマンドを実行したり、ネットワークに損害を与えうるステートメントを設定したりすることを防ぐための措置です。

アクセス権限レベルの概要

最上位の CLI コマンドと 構成ステートメント には、それぞれに関連するアクセス権限レベルがあります。ユーザーは、アクセス権限のあるコマンドのみを実行し、アクセス権限のあるステートメントのみを設定および表示できます。1 つ以上のパーミッション フラグが、各ログイン クラスのアクセス権限を定義します。

ログイン クラスごとに、 permissions ステートメントで指定した権限レベルによって許可または拒否される動作モードおよび設定モードのコマンドおよびステートメント階層の使用を明示的に許可または拒否することもできます。

ログインクラスのパーミッション フラグ

パーミッション フラグを使用して、動作モードのコマンドや、構成階層レベルおよび構成ステートメントへのアクセス権限をユーザーに付与します。ユーザーのログイン クラスのパーミッション フラグは、 [edit system login class] 階層レベルで設定します。特定のパーミッション フラグを指定すると、ユーザーはそのフラグに対応するコマンドと、構成階層レベルおよび構成ステートメントへのアクセス権限を取得します。すべてのコマンドと構成ステートメントへのアクセス権限を付与するには、 all パーミッション フラグを使用します。

手記:

リストされている各コマンドは、そのコマンドと、コマンドのプレフィックスのサブコマンドを表しています。リストされている各 構成ステートメント は、そのフラグがアクセスを許可する構成階層の最上位を表しています。

permissions ステートメントでは、表 1 に示すパーミッション フラグを 1 つ以上指定します。パーミッション フラグは累積されません。情報を表示するviewや設定モードに入るconfigureなど、必要なすべてのパーミッションフラグをクラスごとにリストする必要があります。2 種類のパーミッション フォームが、構成の個別部分に対するユーザー アクセスを制御します。

  • 「プレーン」フォーム - パーミッション タイプに読み取り専用機能のみ提供します。例は interfaceです。

  • -control フォーム - パーミッション タイプに読み取りと書き込み機能を提供します。例は interface-controlです。

構成階層レベルと構成ステートメントへの権限を許可するパーミッション フラグの場合、プレーン フォーム フラグはその構成への読み取り専用権限を付与します。たとえば、 interface パーミッション フラグは、 [edit interfaces] 階層レベルへの読み取り専用権限を付与します。 -control 形式の フラグは、その構成への読み取りおよび書き込み権限を付与します。たとえば、 interface-control フラグは、 [edit interfaces] 階層レベルでの読み取りおよび書き込み権限を付与します。

表 1 は、[edit system login class class-name] 階層レベルに permissions ステートメントを含めることで設定できるログイン クラスのパーミッション フラグを示しています。

このパーミッション フラグによって、特定のアクセス権限セットが付与されます。各パーミッション フラグと、動作モードや設定モードのコマンド、およびそのフラグがアクセスを許可する構成階層レベルや構成ステートメントを併記します。

表 1: ログイン クラスのパーミッション フラグ

パーミッション フラグ

形容

access

動作モードまたは構成モードでアクセス構成を表示できます。

access-control

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

admin

動作モードまたは構成モードでユーザー アカウント情報を表示できます。

admin-control

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

all

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

clear

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

configure

構成モード( configure コマンドを使用)およびコミット構成( commit コマンドを使用)に移行できます。

control

すべての制御レベルの操作( -control パーミッション フラグが設定されたすべての操作)を実行できます。

field

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

firewall

ファイアウォール フィルターの設定を動作モードまたは構成モードで表示できます。

firewall-control

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

floppy

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

flow-tap

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

flow-tap-control

[edit services flow-tap]階層レベルでのフロータップ情報を表示および設定できます。

flow-tap-operation

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

手記:

flow-tap-operation オプションは、all-control アクセス許可フラグには含まれていません。

idp-profiler-operation

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

interface

インターフェイスの設定を動作モードまたは構成モードで表示できます。

interface-control

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

  • [edit chassis]

  • [edit class-of-service]

  • [edit groups]

  • [edit forwarding-options]

  • [edit interfaces]

maintenance

デバイス上でのローカル シェルの起動、シェル内でのスーパーユーザーへの切り替え( su root コマンドを使用)、デバイスの停止および再起動( request system コマンドを使用)など、システム保守を実行できます。

network

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

pgcp-session-mirroring

pgcpセッション ミラーリングの設定を表示できます。

pgcp-session-mirroring-control

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

reset

restart コマンドを使用してソフトウェア プロセスを再開できます。

rollback

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

routing

構成モードおよび運用モードにおいて、通常のルーティング、ルーティング プロトコル、ルーティング ポリシーの設定情報を表示できます。

routing-control

[edit routing-options]階層レベルでの通常のルーティング、[edit protocols]階層レベルでのルーティング プロトコル、[edit policy-options]階層レベルでのルーティング ポリシーの情報を表示および構成できます。

secret

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

secret-control

構成内のパスワードやその他の認証キーを表示および変更できます。

security

運用モードおよび構成モードでセキュリティ設定情報を表示できます。

security-control

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

shell

start shell コマンドを使用してルーターまたはスイッチ上のローカル シェルを起動でき、start shell user root コマンドを使用してシェルの root ユーザーになることができます。

snmp

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

snmp-control

[edit snmp]階層レベルでの SNMP の設定情報を表示できます。

storage

ファイバー チャネル ストレージ構成情報を [edit fc-fabrics] 階層レベルで表示できます。

storage-control

[edit fc-fabrics]階層レベルでファイバーチャネルストレージ構成情報を変更できます。

system

動作モードまたは構成モードでシステム レベルの情報を表示できます。

system-control

[edit system]階層レベルでのシステム レベルの設定情報を表示できます。

trace

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

trace-control

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

unified-edge

[edit unified-edge] 階層での統合エッジ構成を表示できます。

unified-edge

[edit unified-edge]階層で統合型エッジ関連の構成を変更できます。

view

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

view-configuration

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

手記:

maintenanceパーミッションを持つユーザーだけが、コミット スクリプト、運用スクリプト、イベント スクリプトの構成を表示できます。

ログイン クラスに対する個々のコマンドとステートメント階層の許可および拒否

デフォルトでは、最上位の CLI コマンドおよび構成階層レベルは、関連するアクセス権限レベルを有しています。ユーザーは、アクセス権限のあるコマンドのみを実行し、アクセス権限のあるステートメントのみを表示および設定できます。ログイン クラスごとに、 permissions ステートメントで指定した権限レベルによって許可または拒否される動作モードおよび設定モードのコマンドおよびステートメント階層の使用を明示的に許可または拒否できます。

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

ログイン クラスに allow-commandsdeny-commandsallow-configuration、および deny-configuration ステートメントを設定することで、コマンドおよびステートメントの使用を明示的に許可または拒否できます。ステートメントでは、拡張正規表現を使用して、クラスに割り当てられたユーザーに対して許可または拒否するコマンドとステートメントを定義します。

例:アクセス権限レベルを使用したユーザー許可の設定

この例では、ログインクラスのユーザー許可を設定します。ユーザーが許可されていないアクションをネットワークで実行するのを防ぐため、ログインクラスのユーザー許可を設定します。ユーザーは、アクセス権限のあるコマンドのみを実行し、アクセス権限のあるステートメントのみを表示および変更できます。この制限により、権限のないユーザーが機密性の高いコマンドを実行したり、ネットワークに損害を与えうるステートメントを設定したりすることを防ぐことができます。

必要条件

この例を設定する前に、デバイス初期化以外の特別な設定を行う必要はありません。

概要

各トップレベルのCLIコマンドと各設定ステートメントには、それぞれに関連付けられたアクセス権限レベルがあります。ログインクラスを設定すると、操作モードおよび設定モードコマンドおよび設定ステートメントの使用を明示的に許可または拒否できます。ユーザーは、アクセス権限のあるコマンドのみを実行し、アクセス権限のあるステートメントのみを表示および設定できます。

permissions ステートメントで 1 つ以上のパーミッション フラグを指定することで、各ログインクラスのアクセス権を定義します。パーミッションフラグは、コマンド、ステートメント、階層へのアクセスをユーザーに付与します。パーミッション フラグは累積されません。各ログインクラスには、情報を表示するviewや設定モードに移行するconfigureなど、必要なすべてのパーミッションフラグをクラスごとに記述する必要があります。ユーザーのログインクラスに特定のパーミッションフラグを指定することで、対応するコマンド、ステートメント、階層へのアクセス権限をユーザーに付与します。すべてのコマンドと構成ステートメントへのアクセス権限を付与するには、all パーミッション フラグを使用します。パーミッションフラグは、パーミッションタイプに読み取り専用(「プレーン」形式)と 読み書き(末尾に-controlが付く形式)機能を提供します。

手記:

ユーザーが rollback パーミッションフラグを有効にして rollback コマンドを発行すると、all ログインクラスのパーッションビットが、拡張された正規表現よりも優先されます。

ログインクラスのユーザーアクセス権限レベルを設定するには、[edit system login class class-name]階層レベルに permissions ステートメント、その後にパーミッションフラグを含めます。複数のパーミッションを、角括弧で囲まれたスペース区切りのリストとして設定します。

先端:

利用可能なパーミッションを表示するには、CLIのコンテキストに応じたヘルプを使用し、 permissions ステートメントの後に疑問符(?)を入力します。

構成

この例では、 snmp-admin ログインクラスを設定します。 このログインクラスのユーザーは、SNMPパラメーターのみを設定および表示できます。

アクセス権限レベルを使用したユーザー許可の設定

手順

ログインクラスのアクセス権限を設定するには:

  1. snmp-adminログインクラスに、configuresnmpsnmp-controlのパーミッションフラグを設定します。

    設定されたパーミッションフラグは、SNMP の読み取り(snmp)機能と読み取りおよび書き込み(snmp-control)機能の両方を提供し、このログインクラスに許可されるアクセス権限はこれだけです。その他のアクセス権限はすべて拒否されます。

  2. snmp-adminログインクラスに割り当てられたユーザーアカウントを作成します。

業績

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

デバイスの設定後、コンフィギュレーションモードで commit を入力します。

検証

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

SNMP設定の確認

目的

snmp-adminログインクラスのユーザーがSNMPを構成できることを確認します。

アクション

設定モードで、 [edit snmp] 階層レベルでSNMPステートメントを設定します。

意味

snmp-adminログインクラスのユーザーは、SNMPパラメーターを設定できます。このクラスに指定されたパーミッションフラグに、snmp(読み取り機能)とsnmp-control(読み取りおよび書き込み機能)の両方が含まれているため、ユーザーはこれらのパラメーターを設定できます。

SNMP以外の設定を確認

目的

snmp-adminログインクラスのユーザーがSNMP以外の設定ステートメントを変更できないことを確認します。

アクション

設定モードで、 interfaces 階層にあるステートメントのようなSNMP以外のステートメントを設定します。

意味

snmp-admin ログイン クラスのユーザーは、このクラスに指定されたパーミッションフラグで許可されていないため、[edit interfaces] 階層を設定できません。この場合、CLIからエラーメッセージが発行されます。

操作モードのコマンド、設定ステートメント、および階層を許可または拒否するための正規表現

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

許可と拒否のステートメントを理解する。

最上位のCLIコマンドおよび設定ステートメントの各階層には、それぞれに関連付けられたアクセス権限レベルがあります。各ログインクラスでは、操作モードや設定モードのコマンド、および階層設定やステートメントの使用を、特権レベルによって明示的に許可または拒否することができます。ユーザーは、アクセス権限のあるコマンドのみを実行し、アクセス権限のあるステートメントのみを表示および設定できます。

各ログインクラスのアクセス権限は、[edit system login class class-name]階層レベルの permissions ステートメントで指定された1つ以上のパーミッションフラグによって定義されます。さらに、拡張正規表現を定義することによって、特定のコマンドと設定階層の使用を許可または拒否することができます。ログインクラスの以下のステートメントを設定することで、正規表現を指定できます。

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

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

    手記:

    これらのステートメントは、ゆっくりマッチングを行いますが、特にワイルドカードマッチングにおいては、より柔軟性があります。しかし、フルパスの正規表現やワイルドカードの表現が多数設定されていると、可能性のあるすべての文を評価することに非常に時間がかかり、パフォーマンスに悪影響を及ぼす可能性があります。

  • allow-commands-regexps および deny-commands-regexps - 正規表現の文字列を使って、特定のコマンドへのアクセスを許可または拒否することができます。

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

手記:

既存の設定で allow/deny-commands または allow/deny-configuration ステートメントを使用している場合、 allow/deny-commands-regexps または allow/deny-configuration-regexps ステートメントで同じ設定オプションを使用すると、同じ結果にならない可能性があります。これらのステートメント2つの形式では、検索とマッチの方法が異なります。

allow/deny-*ステートメントを使用してコマンドや設定ステートメントの階層を明示的に許可すると、permissionsステートメントですでに定義されている権限が追加されます。同様に、allow/deny-*ステートメントを用いてコマンドや設定ステートメントの階層を明示的に拒否すると、permissionsステートメントで既に定義されている権限が削除されます。

例えば、以下の設定では、 configure 権限により、ログインクラスのユーザーが設定モードに入ることができます。さらに、 allow-configuration 式を使用すると、ユーザーは [edit system services] 階層レベルで設定を変更し、コミットすることができます。

同様に、以下の構成では、ログインクラスのユーザーは、[edit system services]階層レベルの構成を表示または変更できないことを除いて、all パーミッションフラグで許可されるすべての操作を実行できます。

許可と拒否ステートメントのシンタックスを理解する。

allow/deny-*ステートメントの設定は、各ログインクラスで1回のみ可能です。ステートメントを設定する場合:

  • 必要な数の正規表現を設定することができます。

  • 正規表現では大文字と小文字は区別されません

allow/deny-commands ステートメントは、allow/deny-commands-regexps ステートメントと相互に排他的であり、allow/deny-configurationステートメントは、allow/deny-configuration-regexpsステートメントと相互に排他的です。例えば、同じログインクラスにallow-configurationallow-configuration-regexpsの両方を設定することはできません。

コマンドへのアクセス権を定義するには、 allow-commands および deny-commands ステートメントを使用して拡張正規表現を指定します。独立した完全な式をそれぞれ括弧( )で囲み、パイプ( | )記号で式を区切ります。パイプ記号で結ばれた正規表現の間には、スペースを使用しないでください。完全な式は、二重引用符で囲まれています。

例えば:

allow-commands ステートメントで複雑な正規表現を指定する際に、アンカーを使用してください。例えば:

設定階層の一部にアクセス権限を定義するには、 allow-configuration および deny-configuration ステートメントで拡張正規表現を指定します。フルパスを括弧( )で囲み、パイプ( | )記号を使用して式を区切ります。パイプ記号で結ばれた正規表現の間には、スペースを使用しないでください。完全な式は、二重引用符で囲まれています。

例えば:

allow/deny-commands-regexpsまたはallow/deny-configuration-regexpsステートメントを使用して拡張正規表現を指定する場合、それぞれの式を引用符(" ")で囲み、スペースで区切ってください。複数の式を亀甲括弧[ ]で囲みます。例えば:

setlogcount などの修飾子は、マッチさせる正規表現文字列内ではサポートされていません。修飾子を使用した場合は、何もマッチしません。

正しい設定:

誤った設定:

許可と拒否ステートメントの優先とマッチングを理解する

デフォルトでは、 allow-commands および allow-configuration 正規表現が、 deny-commands および deny-configuration 表現よりも優先されます。そのため、 allow-commands ステートメントと deny-commands ステートメントの両方に同じコマンドを設定すると、許可の操作が拒否の操作よりも優先されます。同様に、 allow-configuration ステートメントと deny-configuration ステートメントの両方に同じステートメントを設定すると、許可の操作が拒否の操作よりも優先されます。

例えば、以下の設定では、deny-commands ステートメントに同じコマンドが含まれていても、test ログインクラスのユーザーが request system software add コマンドを使用してソフトウェアをインストールすることができます。

同様に、以下の設定では、deny-configuration ステートメントに同じ設定階層が含まれていても、test ログインクラステストのユーザーが、[edit system services]設定階層を表示および変更することができます。

allow-commands ステートメントと deny-commands ステートメントに 2 つの異なるバリエーションのコマンドがある場合は、最も長くマッチしたものが常に実行されます。以下の設定では、test ログインクラスのユーザーが commit synchronize コマンドを実行できますが、commit コマンドは実行できません。これは、commit synchronizecommitcommit synchronize の最長一致であり、allow-commands に指定されているためです。

以下の設定では、 test ログインクラスのユーザーが commit コマンドを実行できますが、 commit synchronize コマンドは実行できません。これは、 commit synchronizecommitcommit synchronize の最長一致であり、 deny-commands に指定されているためです。

他のステートメントとは対照的に、*-regexps ステートメントのデフォルト動作は、deny-commands-regexps正規表現とdeny-configuration-regexps正規表現がallow-commands-regexps表現とallow-configuration-regexps表現よりも優先されます。[edit system]階層レベルで regex-additive-logic ステートメントを設定すると、allow-configuration-regexps正規表現が deny-configuration-regexps ステートメントよりも優先されるようになります。ステートメントを設定することで、上位の設定階層を拒否した上で、特定のサブ階層へのアクセスのみをユーザーに許可することができます。

許可と拒否ステートメントルールを理解する。

allow/deny-commandsallow/deny-configurationallow/deny-commands-regexps、および allow/deny-configuration-regexps ステートメントは、ログインクラスのパーミッションよりも優先されます。これらのステートメントを設定する場合、以下のルールが適用されます。

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

  • ユーザーがrollbackパーミッションフラグを有効にしてrollbackコマンドを発行すると、allログインクラスのパーッションビットが、拡張された正規表現よりも優先されます。

  • 拡張正規表現を指定した場合、ユーザーは load override コマンドを発行できません。ユーザーが発行できるのは、 mergereplace、および patch 設定コマンドのみです。

  • 正規表現を表す際には、ワイルドカード文字*を使用することができます。ただし、正規表現の一部として使用する必要があります。[ * ] または [ .* ] を唯一の式として使用することはできません。また、allow-configuration ステートメントに allow-configuration .* と評価されるため、(interfaces (description (|.*)) などの式を設定することはできません。

*-正規表現ステートメントの違いを理解する。

このセクションでは、 allow/deny-configuration ステートメントと allow/deny-configuration-regexps ステートメントの違いについて説明します。

allow/deny-configuration-regexps ステートメントは、正規表現をトークンに分割し、それぞれを指定された設定のフルパスの各部分にマッチさせますが、allow/deny-configuration ステートメントは完全な文字列とマッチさせます。allow/deny-configuration-regexps ステートメントでは、各文字列が正規表現である一連の文字列を設定し、文字列の用語の間にはスペースが入ります。このシンタックスは、非常に高速なマッチングを実現しますが、柔軟性に欠けます。ワイルドカード式を指定するには、マッチさせたいスペース区切りの文字列の各トークンに対してワイルドカードを設定する必要があります。そのため、これらのステートメントにワイルドカード式を使用が難しくなります。

例えば:

  • allow-configuration-regexpsで1つのトークンにマッチする正規表現

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

    前述の設定は、以下のステートメントとマッチします。

    • ポリシーオプション 条件の設定 condition dynamic-db

    • ルーティングオプション 静的ルート static-route ネクストホップの設定 next-hop

    • セットイベントオプション イベントを生成 event 時間間隔 seconds

    前述の設定は、以下のステートメントと一致しません。

    • システム ホスト-ネーム ホストオプション

    • インターフェイス interface-name 記述 オプション

  • allow-configuration-regexpsで3つのトークンにマッチする正規表現

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

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

    前述の設定は、以下のステートメントとマッチします。

    • システム ホスト-ネーム ホスト-ネームssh

    • システムサービス ssh

    • システムサービス アウトバウンド-ssh

    前述の設定は、以下のステートメントと一致しません。

    • インターフェイス interface-name 説明 SSH

設定アクセスを制限するために deny-configuration ステートメントを使用する方が、 deny-configuration-regexps ステートメントを使用するよりも簡単です。 表 2 は、異なる設定で deny-configuration ステートメントと deny-configuration-regexps ステートメントの両方を使用して、特定の設定へのアクセスを制限するという同じ結果を達成する方法を示しています。

表 2: deny-configuration および deny-configuration-regexps ステートメントを使用した設定アクセスの制限

設定拒否

使用: deny-configuration

使用: deny-configuration-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";
    }
}

以下の設定ステートメントは拒否されます。

  • システム ホスト-ネーム ホスト-ネームssh

  • システムサービスssh

  • システムサービス アウトバウンド-ssh

  • セキュリティ ssh-known-host

シンプルな設定を必要とする場合、 allow/deny-configuration ステートメントも有効ですが、 allow/deny-configuration-regexps ステートメントの方がパフォーマンスが高く、 allow/deny-configuration ステートメントで式を組み合わせる際にあった曖昧さを解消できます。

リモート認証サーバーでの正規表現の使用

拡張正規表現を使って、特定のユーザーに許可または拒否される運用モードや設定モードのコマンドや設定文、階層を指定することができます。これらの正規表現は、[edit system login class class-name]階層レベルの allow/deny-commandsallow/deny-configurationallow/deny-commands-regexps、および allow/deny-configuration-regexps ステートメントでローカルで指定します。認証サーバーの設定でジュニパーネットワークスベンダー固有のTACACS+またはRADIUS属性を指定することで、これらの正規表現をリモートで指定します。ローカルとリモートの両方で認証パラメータを設定する場合、デバイスは、TACACS+RADIUS認証時に受け取った正規表現と、ローカルデバイスで定義された正規表現をマージします。

allow-commandsdeny-commandsallow-configuration、または deny-configuration ステートメントを使用してローカル設定で複数の正規表現を指定する場合、正規表現を括弧内に設定し、パイプ記号で区切ります。完全な式を二重引用符で囲みます。例えば、以下のシンタックスで複数の allow-commands パラメーターを指定できます。

RADIUS認証サーバーは、以下の属性とシンタックスを使用します。

TACACS+ 認証サーバーは、以下の属性とシンタックスを使用します。

allow-commands-regexpsdeny-commands-regexpsallow-configuration-regexps、または deny-configuration-regexps ステートメントを使用してローカル構成で複数の正規表現を指定する場合は、正規表現を二重引用符で囲み、スペース演算子で区切って設定します。完全な式を正方形で囲みます。例えば、以下のシンタックスで複数の許可コマンドパラメーターを指定することができます。

RADIUS認証サーバーは、以下の属性とシンタックスを使用します。

TACACS+ 認証サーバーは、以下の属性とシンタックスを使用します。

RADIUSおよびTACACS+サーバーは、個々の表現を別の行で指定する簡略化されたシンタックスもサポートしています。例えば、RADIUSサーバーのシンプルなシンタックスは次のとおりです。

同様に、TACACS+ サーバーのシンプルなシンタックスは次のとおりです。

表 3 は、ローカル認証設定と TACACS+ サーバー認証設定を正規表現を使用して区別しています。

表 3: 正規表現を使用したローカルおよびリモート認証の設定例

ローカル設定

リモートTACACS+ 設定

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.*"
        allow-commands12 = "junoscript"
        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"
    }
}
手記:
  • 次の 3 つのコマンドを発行して、ローカルまたはリモートで NETCONF モードへのアクセスを明示的に許可する必要があります: xml-modenetconf、および need-trailer

  • deny-configuration = ".*" ステートメントを使用する場合、allow-configuration ステートメントを使用して、希望するすべての設定を許可する必要があります。ただし、この設定は、allow-configuration ステートメントで許可される正規表現のバッファ制限に影響を与える可能性があります。この制限を超えた場合、許可された設定が動作しない可能性があります。

正規表現の指定

警告:

コマンドや設定ステートメントで正規表現を指定する場合、以下の例に注意してください。無効なシンタックスの正規表現では、設定がエラーなくコミットされたとしても、望ましい結果が得られない場合があります。

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

表 4: 正規表現の指定

陳述

正規表現

設定ノート

[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.* .*"
    

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

[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 .*" ]
    

正規表現演算子

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

コマンド正規表現はPOSIX 1003.2で定義された拡張(最新)正規表現を実装します。

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

演算子

マッチ

|

パイプで区切られた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 ステートメントは、 show キーワードと monitor キーワードで始まるコマンドへのアクセスを許可します。

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

$

コマンドの末尾の文字。そのポイントまで正しくマッチする必要があるコマンドを示すために使用します。

[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 detailshow 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 ステートメントで指定されたコマンドへのアクセスをできます。

*

ゼロまたはそれ以上の条件。

[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 .* ステートメントは、すべての運用モードコマンドと設定階層へのアクセスを拒否します。

手記:

! 正規表現の演算子はサポートされていません。

正規表現の例

表 6 に、正規表現を指定する例として、2 つの設定階層([edit system ntp server][edit protocols rip])の設定オプションを許可するために使用される正規表現を示します。

手記:

表6 は、すべての設定ステートメントと階層のすべての正規表現とキーワードの包括的なリストを提供するわけではありません。テーブルに示されている正規表現は、 [edit system ntp server] および [edit protocols rip] ステートメント階層でのみ有効です。

表 6: 正規表現の例

ステートメント階層

正規表現

許可された設定

拒否された設定

[edit system ntp server]

     

key-number

[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とカギ

  • バージョン

  • 好む

バージョン version-number

[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とバージョン

  • 好む

好む

[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と推奨

  • バージョン

[edit protocols rip]

     

メッセージサイズ 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

[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 .*" ]
  • メトリックイン

  • メッセージサイズ

  • ルート-タイムアウト

  • アップデート-インターバル

ルート-タイムアウト route-timeout

[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

[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 ステートメントには、特定の設定階層とステートメントを許可または拒否する正規表現が 1 つ以上含まれます。 allow-configuration ステートメントと deny-configuration ステートメントはパーミッション フラグよりも優先され、ユーザーが表示および構成できる正確な階層とステートメントに対して、管理者は詳細に制御できます。

このトピックでは、 allow-configuration および deny-configuration ステートメントを使用するログインクラス設定の例を示しながら、これらのステートメントを使用してアクセス権限を定義する方法を説明します。例 1 から例 3 では、 deny-configuration ステートメントで定義されているものを除くすべてのコマンドおよびステートメントにユーザーがアクセスできるログインクラスを作成しています。

パーミッションビットパーミッションフラグは同じ意味で使用されていることに注意してください。

例1

ユーザーがすべてのコマンドを実行し、telnetパラメーター以外のすべてを設定できるログインクラスを作成するには、以下を行います。

  1. ユーザーのログインクラスの許可を all に設定します。
  2. 以下の deny-configuration ステートメントをインクルードします。

例2

ユーザーがすべてのコマンドを実行し、「m」で始まる名前のログインクラスにあるステートメント以外のすべてを設定できるログインクラスを作成するには、以下を行います。

  1. ユーザーのログインクラスの許可を all に設定します。

  2. 以下の deny-configuration ステートメントをインクルードします。

例3

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

  1. ユーザーのログインクラスの許可を all に設定します。

  2. 以下の deny-configuration ステートメントを含めます。

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

例4

ユーザーが [edit system services] 階層レベルでのみ完全な設定権限を持つことができるログインクラスを作成するには、以下を行います。

  1. ユーザーのログインクラスの許可を configure に設定します。

  2. 以下の allow-configuration ステートメントをインクルードします。

例5

すべてのコマンドと、 [edit system services] 階層レベル以外のすべての設定階層の完全な権限をユーザーに許可するログインクラスを作成するには、以下を行います。

  1. ユーザーのログインクラスの許可を all に設定します。

  2. 次の deny-configuration ステートメントを含めます。

例: 正規表現による追加論理を使用したアクセス権限の指定

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

必要条件

この例を設定する前に、デバイス初期化以外の特別な設定を行う必要はありません。

概要

正規表現を定義して、誰がどの設定を変更できるかを制御できます。これらの正規表現は、ログイン クラスのユーザーがアクセスできる特定の設定階層を示しています。例えば、ユーザーがルーティング インスタンスのグループを変更できる正規表現を定義したり、ユーザーが他のルーティング インスタンスやその他の設定レベルを変更できなくする正規表現を定義したりできます。ログインクラスの allow-configuration-regexps および deny-configuration-regexps ステートメントを設定することで、正規表現を定義します。

デフォルトでは、 deny-configuration-regexps ステートメントが allow-configuration-regexps ステートメントよりも優先されます。設定階層がログイン クラスの deny-configuration-regexps ステートメントに表示された場合、 allow-configuration-regexps ステート メントの内容に関係なく、そのクラスのユーザーには表示されません。設定階層が deny-configuration-regexps ステートメントに表示されない場合、 allow-configuration-regexps ステートメントに表示されるとそのクラスのユーザーに表示されます。

このデフォルト動作を変更するには、 *-configuration-regexps ステートメントの追加論理を有効にします。追加論理を有効にすると、 allow-configuration-regexps ステートメントが deny-configuration-regexps ステートメントよりも優先されます。

そのため、 deny-configuration-regexps ステートメントが特定のレベル(プロトコル .*)のすべての設定階層へのアクセスを拒否するが、 allow-configuration-regexps ステートメントは 1 つの下位の階層(プロトコル bgp .*)へのアクセスを許可する場合、デフォルトでは、 deny-configuration-regexps ステートメントが優先されるため、デバイスはそのログイン クラスのユーザーの階層へのアクセスを拒否します。ただし、追加論理を有効にした場合、 allow-configuration-regexps が優先されるため、デバイスはそのログイン クラスのユーザーの指定されたサブ階層へのアクセスを許可します。

構成

手順

追加論理が、1つ以上の個別の設定階層への特定のログインクラスのユーザーのアクセスを明示的に許可できるようにするには:

  1. deny-configuration-regexps ステートメントを含め、設定階層へのアクセスを明示的に拒否します。

    例えば:

  2. allow-configuration-regexps ステートメントを含め、許可する特定の階層の正規表現を定義します。

    例えば:

  3. allow-configuration-regexpsおよびdeny-configuration-regexps正規表現の追加論理を有効にします。

  4. 1 人以上のユーザーにログインクラスを割り当てます。

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

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

手記:

regex-additive-logic ステートメントを設定する場合、すべてのログイン クラスに存在するすべての allow-configuration-regexps および deny-configuration-regexps ステートメントに動作変更が適用されます。追加論理を有効にした場合、インパクトの既存のステートメントを評価し、必要に応じて正規表現を更新する必要があります。

追加論理による正規表現の使用

目的

このセクションでは、システムに適した設定を作成するためのアイデアを提供するため、追加論理を使用した正規表現の例を示します。

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

以下の例のログイン クラスには、CUST-VRF-1CUST-VRF-25CUST-VRF-100など、名前が CUST-VRF- で始まるルーティング インスタンスの設定を許可する正規表現が含まれています。この例には、任意のルーティング インスタンスの設定を防ぐ正規表現も含まれています。

デフォルトでは、 deny-configuration-regexps ステートメントが優先され、名前に関係なく、ログイン クラスのユーザーはルーティング インスタンスを設定できません。

ただし、以下のステートメントを設定した場合、 allow-configuration-regexps ステートメントが優先されます。そのため、ユーザーは、名前が CUST-VRF- で始まるルーティング インスタンスを設定できますが、他のルーティング インスタンスは設定できません。

BGP ピア設定のみの許可

以下のログイン クラスの例には、 [edit protocols] 階層レベルでの設定を防止するが BGP ピアの設定を許可する正規表現が含まれています。

デフォルトでは、以前の設定によって、ログイン クラスのユーザーは [edit protocols] の下の階層を変更できなくなっています。

ただし、以下のステートメントを設定した場合、ログイン クラスのユーザーは BGP ピアを変更できますが、許可された階層レベル以外の他のプロトコルまたは他の BGP ステートメントを設定することはできません。

検証

アクセス権限を正しく設定したことを確認するには:

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

  2. ログインクラスを usernameに割り当てます。

  3. 新しいログイン クラスで割り当てられた username でログインします。

  4. 許可された階層レベルを設定するように試みます。

    • 許可された階層レベルでステートメントを設定できる必要があります。

    • 拒否された階層レベルは表示されません。

    • 許可された式または拒否された式は、 permissions ステートメントで付与された権限よりも優先されます。

例:動作モード コマンドのアクセス権限を使用したユーザー権限の設定

カスタムログインクラスを設定し、運用モードコマンドに対するアクセス権限を割り当てる方法を示しています。ログインクラスのユーザーは、アクセス権を持つコマンドのみを実行できます。これにより、権限のないユーザーが慎重に扱うべきコマンドを実行してネットワークに損害を及ぼす可能性を防ぎます。

必要条件

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

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

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

開始する前に、デバイスと TACACS+ サーバーの間の TCP 接続を確立します。RADIUS サーバーの場合、デバイスと RADIUS サーバーの間で UDP 接続を確立します。

概要とトポロジー

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

図 1: トポロジTopology

この例では、R1 に 3 つのカスタマイズされたログイン クラス(クラス 1、クラス 2、およびクラス 3)を設定します。各クラスは、 permissions ステートメントを設定し、拡張正規表現を定義することで、 allow-commands および deny-commands ステートメントを使用して、ユーザーのアクセス権限を定義します。

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

  • Class1- allow-commands ステートメントのみでユーザーのアクセス権限を定義します。このログイン クラスは、デバイスの再起動のためのオペレーターレベル ユーザー権限と認証を提供します。

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

  • Class3- allow-commands ステートメントと deny-commands ステートメントの両方でユーザーのアクセス権限を定義します。このログイン クラスは、インターフェイスへのアクセスとデバイス情報の表示のためのスーパーユーザーレベル ユーザー権限と認証を提供します。また、 edit コマンドと configure コマンドへのアクセスも拒否します。

ルーター R1 には、それぞれクラス 1、クラス 2、およびクラス 3 ログイン クラスに割り当てられたユーザー 1、ユーザー 2、およびユーザー 3 という 3 つのユーザーがあります。

構成

CLIクイック構成

この例を迅速に設定するには、以下のコマンドをコピーして、テキスト ファイルに貼り付け、改行を削除し、ネットワーク設定に一致させる必要がある詳細情報を変更し、コマンドを [edit] 階層レベルで CLI にコピー アンド ペーストして、設定モードで commit を入力します。

R1

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

手順

ルーター R1 の認証を設定するには:

  1. R1がユーザーの認証を試みる順序を設定します。この例では、TACACS+ サーバ認証が最初に、RADIUS サーバ認証が続いて、ローカルパスワードが続くものです。

  2. TACACS+サーバーを設定します。

  3. RADIUS サーバーを設定します。

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

許可コマンド ステートメント(クラス 1)によるアクセス権限の設定

手順

allow-commands ステートメントを使用して正規表現を指定するには:

  1. クラス1 ログイン クラスを設定し、オペレーターレベル ユーザー権限を割り当てます。

  2. クラス内のユーザーがデバイスを再起動できるように、 allow-commands 正規表現を設定します。

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

拒否コマンド ステートメント(クラス 2)によるアクセス権限の設定

手順

deny-commands ステートメントを使用して正規表現を指定するには:

  1. クラス 2 ログイン クラスを設定し、オペレーターレベル ユーザー権限を割り当てます。

  2. クラス内のユーザーが set コマンドを実行できなくするために、deny-commands 正規表現を設定します。

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

許可コマンドおよび拒否コマンド ステートメント(クラス 3)によるアクセス権限の設定

手順

allow-commands ステートメントと deny-commands ステートメントの両方を使用して正規表現を指定するには:

  1. クラス3ログインクラスを設定し、スーパーユーザーレベル権限を割り当てます。

  2. クラス内のユーザーが コマンドを実行できなくするために、 deny-commands 正規表現を設定します。

  3. ユーザが設定モードに入ることができるように、 allow-commands 正規表現を設定します。

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

業績

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

検証

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

クラス1の設定の確認

目的

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

アクション

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

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

意味

ユーザー1が割り当てられたクラス1ログインクラスは、オペレーターレベルのユーザー権限を有しており、クラス内のユーザーは request system reboot コマンドを実行できます。

定義済みのオペレーター ログイン クラスには、指定された以下のパーミッション フラグがあります。

  • clear- clear コマンドを使用して、デバイスがネットワークから学習し、さまざまなネットワーク データベースに保存した情報をクリア(削除)できます。

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

  • reset- restart コマンドを使用してソフトウェアプロセスを再開できます。

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

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

クラス1ログインクラスでは、上記のユーザー権限に加えて、ユーザー1は request system reboot コマンドを実行できます。最初の出力はオペレーターとしての表示権限を表しており、2 番目の出力は、ユーザー1がオペレーターとして実行できる唯一の request system コマンドが request system reboot コマンドであることを示しています。

クラス2設定の確認

目的

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

アクション

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

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

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

意味

ユーザー2が割り当てられたクラス2ログインクラスは、オペレーターレベルのユーザー権限を有しており、すべての set コマンドへのアクセスを拒否します。

定義済みのオペレーターログインクラスに指定されている権限フラグは、クラス1に指定されたものと同じです。

クラス 3 設定の確認

目的

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

アクション

運用モードで、使用可能なコマンドを確認します。

構成モードにします。

意味

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

例: 設定ステートメントと階層のアクセス権限を持つユーザーパーミッションの設定

カスタムログインクラスを設定し、特定の設定階層にアクセス権限を割り当てる方法を示しています。ログインクラスのユーザーは、アクセス権を持つ設定文と階層のみを表示および変更することができます。これにより、不正ユーザーがデバイス設定を変更してネットワークに損害を及ぼす可能性があることを防ぎます。

必要条件

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

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

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

開始する前に、デバイスと TACACS+ サーバーの間の TCP 接続を確立します。RADIUS サーバーの場合、デバイスと RADIUS サーバーの間で UDP 接続を確立します。

概要とトポロジー

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

図2: トポロジTopology

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

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

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

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

ルータR1には、ログインクラスがクラス1、クラス2の2人のユーザUser1、User2が割り当てられています。

構成

CLIクイック構成

この例を迅速に設定するには、以下のコマンドをコピーして、テキスト ファイルに貼り付け、改行を削除し、ネットワーク設定に一致させる必要がある詳細情報を変更し、コマンドを [edit] 階層レベルで CLI にコピー アンド ペーストして、設定モードで commit を入力します。

R1

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

手順

ルーター R1 の認証を設定するには:

  1. R1がユーザーの認証を試みる順序を設定します。この例では、TACACS+ サーバ認証が最初に、RADIUS サーバ認証が続いて、ローカルパスワードが続くものです。

  2. TACACS+サーバーを設定します。

  3. RADIUS サーバーを設定します。

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

許可設定および拒否設定ステートメント(クラス1)でアクセス権を設定します。

手順

allow-configurationおよびdeny-configurationステートメントを使用して正規表現を指定するには:

  1. Class1 ログインクラスに configure パーミッションを設定します。

  2. allow-configuration 正規表現を設定して、クラス内のユーザーが [edit interfaces] 階層レベルの一部を表示および変更できるようにします。

  3. すべての設定階層へのアクセスを拒否する deny-configuration 正規表現を設定します。

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

許可設定特権の設定ステートメント(クラス2)で、アクセス権限を設定します。

手順

allow-configuration-regexpsおよびdeny-configuration-regexpsステートメントを使用して正規表現を指定するには:

  1. クラス2 ログインクラスを設定し、スーパーユーザー(all)パーミッションを割り当てます。

  2. クラス内のユーザーが [edit interfaces]階層レベルの下で複数の階層にアクセスできるように、allow-configuration-regexps 正規表現を設定します。

  3. deny-configuration-regexps正規表現を設定して、クラス内のユーザーが[edit system]および[edit protocols]階層レベルで設定を表示または変更できないようにします。

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

業績

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

検証

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

クラス1の設定を確認する

目的

クラス1 ログインクラスで許可されたパーミッションが機能していることを確認します。

アクション

運用モードで、使用可能なコマンドを確認します。

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

意味

最初の出力に見るように、User1 には configure 人のユーザー権限があります。さらに、設定モードでは、User1は interfaces 階層レベルにアクセスできますが、2番目の出力に見られるように、その階層レベルのみにアクセスできます。

クラス2の設定を確認する

目的

クラス2の設定が想定どおりに機能していることを確認します。

アクション

設定モードで、 interfaces 設定にアクセスします。

設定モードで、 system 階層と protocols 設定階層にアクセスします。

意味

User2はR1でインターフェイスを設定するパーミッションを取得しますが、 [edit system] または [edit protocols] 階層レベルの表示または変更をユーザーに許可されていません。