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)クライアントは、自身を 管理者ユーザーJunos OSに認証するため、 パーミッションを持flow-tap-operationっている必要があります。

注:

この 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

pingsshtelnettraceroute コマンドを使ってネットワークにアクセスできます。

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 コマンドを使って、ルーターまたはスイッチ上のローカル シェルを起動できます。

snmp

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

snmp-control

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

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

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

system

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

system-control

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

trace

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

trace-control

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

[edit unified-edge] 階層で統一されたエッジ設定を表示できます。

[edit unified-edge]階層で統一されたエッジ関連設定を変更できます。

view

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

view-configuration

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

注:

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

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

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

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

ログイン クラスに allow-commandsdeny-commandsallow-configurationdeny-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ログインクラスをconfiguresnmp、およびsnmp-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]階層レベルで設定を変更し、コミットすることができます。

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

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

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

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

  • 正規表現は大文字と小文字を区別しません。

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

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

たとえば、以下のように表示されます。

allow-commandsステートメントで複雑な正規表現を指定する際に、アンカーを使用してください。たとえば、以下のように表示されます。

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

たとえば、以下のように表示されます。

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

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

正しい設定:

誤った設定:

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

デフォルトでは、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]の設定階層を閲覧および変更することができます。

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

以下の設定では、testログインクラスのユーザーがcommitコマンドを実行できますが、commit synchronizeのコマンドは実行することができません。これは、commit synchronizecommitcommit synchronizeの間で最も長くマッチし、deny-commandsに指定されているからです。

他のステートメントとは対照的に、 *-regexpsステートメントのデフォルト動作は、 および 正deny-configuration-regexps規表現deny-commands-regexpsが および 表allow-configuration-regexps現よりも優先allow-commands-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のコマンドも含めることができます。

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

  • 拡張正規表現を指定した場合、ユーザーは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が唯一マッチする式であることを示しています。

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

    • set policy-options condition condition dynamic-db

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

    • set event-options generate-event event time-interval seconds

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

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

    • インターフェイスinterface-name説明オプション

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

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

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

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

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

    • システムサービスssh

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

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

    • interfaces interface-name description 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の各レベルでステートメントでローカルで指定します。認証サーバーの設定でJジュニパーネットワークスベンダー固有のTACACS+またはRADIUS属性を指定することで、これらの正規表現をリモートで指定します。ローカルとリモートの両方で認証パラメータを設定する場合、デバイスは、TACACS+RADIUS認証時に受け取った正規表現と、ローカルデバイスで定義された正規表現をマージします。

注:

Junos OS Release 18.1より、TACACS+の認証にallow-commands-regexpsおよびdeny-commands-regexpsのステートメントがサポートされています。

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キーワードで始まるすべてのコマンドmonitor interfacesまたはmonitor 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ステートメントで指定されたコマンドへのアクセスをできます。

*

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

[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では、正規表現を指定する例として、[edit system ntp server][edit protocols rip]という2つの設定階層の設定オプションを許可するために使用される正規表現をリストアップしています。

注:

表 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-configurationdeny-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 のステートメントをインクルードします。

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

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

要件

この例では、Junos OS リリース 16.1 以降を実行するデバイスを使用します。

概要

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

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

*-configuration-regexpsステートメントの追加論理を有効にすることで、このデフォルト動作を変更できます。追加論理を有効にすると、 ステートメントが deny-configuration-regexpsステートallow-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がJuniper Networksのデバイスで、TACACS+サーバーとTCP接続を確立している場合のシンプルなトポロジーを示しています。

図 1: トポロジートポロジー

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

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

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

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

  • Class3allow-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)によるアクセス権限の設定

ステップバイステップでの手順

deny-commandsおよびallow-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ンドを使用して、デバイスがネットワークから学習した情報をクリア(削除)し、さまざまなネットワーク データベースに保存できます。

  • networksshtelnet—、ping、、 コマtracerouteンドを使ってネットワークにアクセスできます。

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

  • 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がJuniper Networksのデバイスで、TACACS+サーバーとTCP接続を確立している場合のシンプルなトポロジーを示しています。

図 2: トポロジートポロジー

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

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

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

  • Class2allow-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. クラス内のユーザーが [edit interfaces]階層レベルの一部を表示および変更できるように allow-configuration正規表現を設定します。

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

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

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

ステップバイステップでの手順

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

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

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

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

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

結果

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

検証

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

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

目的

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

対処

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

設定モードで、使用可能な設定パーミッションを確認します。

意味

最初の出力に見るように、User1 はconfigureのユーザーパーミッションを取得することができます。さらに、設定モードでは、User1はinterfacesの階層レベルにアクセスできますが、2番目の出力に見られるように、その階層レベルのみにアクセスできます。

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

目的

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

対処

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

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

意味

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

変更履歴

サポートされる機能は、使用しているプラットフォームとリリースによって決まります。 特定の機能がお使いのプラットフォームでサポートされているかどうかを確認するには、 Feature Explorer をご利用ください。

リリース
説明
18.1
Junos OS Release 18.1より、TACACS+の認証にallow-commands-regexpsおよびdeny-commands-regexpsのステートメントがサポートされています。