사용자 액세스 권한
시스템 관리자는 사용자에게 명령 및 구성 계층 수준과 문에 대한 액세스 또는 권한을 부여합니다. 사용자는 이러한 명령만 실행할 수 있으며 액세스 권한이 있는 명령문만 보고 구성할 수 있습니다. 또한 확장 정규 표현식을 사용하여 사용자에게 허용되거나 거부되는 운영 모드 명령, 구성 문 및 계층을 지정할 수 있습니다. 이렇게 하면 권한이 없는 사용자가 네트워크에 손상을 줄 수 있는 중요한 명령을 실행하거나 문을 구성하는 것을 방지할 수 있습니다.
Access Privilege Levels 개요
각 최상위 CLI 명령 및 구성 문 에는 관련 액세스 권한 수준이 있습니다. 사용자는 이러한 명령만 실행하고 액세스 권한이 있는 명령문만 구성하고 볼 수 있습니다. 하나 이상의 권한 플래그는 각 로그인 클래스에 대한 액세스 권한을 정의합니다.
각 로그인 클래스의 경우, 운영 모드 및 구성 모드 명령과 문에 지정된 권한 수준에 의해 허용되거나 거부될 수 있는 문 계층의 permissions
사용을 명시적으로 허용하거나 거부할 수도 있습니다.
로그인 클래스 권한 플래그
권한 플래그를 사용하여 사용자에게 운영 모드 명령 및 구성 계층 수준과 문에 대한 액세스 권한을 부여할 수 있습니다. 계층 수준에서 사용자의 로그인 클래스에 대한 권한 플래그를 [edit system login class]
구성합니다. 특정 권한 플래그를 지정할 때, 사용자는 명령과 구성 계층 수준 및 해당 플래그에 해당하는 문에 대한 액세스 권한을 얻습니다. 모든 명령 및 구성 문에 대한 액세스 권한을 부여하려면 권한 플래그를 all
사용합니다.
나열된 각 명령은 해당 명령과 해당 명령이 접두어로 있는 모든 하위 명령을 나타냅니다. 나열된 각 구성 문 은 해당 플래그가 액세스 권한을 부여하는 구성 계층의 상단을 나타냅니다.
문은 permissions
표 1에 나열된 권한 플래그 중 하나 이상을 지정합니다. 권한 플래그는 누적되지 않습니다. 각 클래스에 대해 정보를 configure
표시하고 구성 모드를 입력하는 것을 포함하여 view
필요한 모든 권한 플래그를 나열해야 합니다. 두 가지 형태의 권한이 구성의 개별 부분에 대한 사용자의 액세스를 제어합니다.
-
"일반" 형태 - 해당 권한 유형에 대한 읽기 전용 기능을 제공합니다. 예를 들면
interface
입니다. -
-control
form - 해당 권한 유형에 대한 읽기 및 쓰기 기능을 제공합니다. 예를 들면interface-control
입니다.
구성 계층 수준과 문에 대한 액세스를 부여하는 권한 플래그의 경우, 일반 형태 플래그는 해당 구성에 대한 읽기 전용 권한을 부여합니다. 예를 들어, 권한 플래그는 interface
계층 수준에 대한 읽기 전용 액세스 권한을 [edit interfaces]
부여합니다. -control
플래그 형식은 해당 구성에 대한 읽기-쓰기 액세스 권한을 부여합니다. 예를 들어, 플래그는 interface-control
계층 수준에 대한 [edit interfaces]
읽기-쓰기 액세스 권한을 부여합니다.
표 1 에는 계층 수준에서 문을 포함하여 permissions
구성할 수 있는 로그인 클래스 권한 플래그가 [edit system login class class-name]
나열되어 있습니다.
권한 플래그는 특정 액세스 권한 집합을 부여합니다. 각 권한 플래그는 운영 모드 또는 구성 모드 명령 및 플래그가 액세스 권한을 부여하는 구성 계층 수준과 문과 함께 나열됩니다.
권한 플래그 |
묘사 |
---|---|
|
운영 모드 또는 구성 모드에서 액세스 구성을 볼 수 있습니다. |
|
계층 수준에서 액세스 정보를 보고 구성할 수 있습니다 |
|
운영 모드 또는 구성 모드에서 사용자 계정 정보를 볼 수 있습니다. |
|
사용자 계정 정보를 보고 계층 수준에서 |
|
모든 운영 모드 명령 및 구성 모드 명령에 액세스할 수 있습니다. 모든 구성 계층 수준에서 구성을 수정할 수 있습니다. |
|
디바이스가 네트워크에서 학습하고 다양한 네트워크 데이터베이스에 저장하는 정보를 제거(삭제)할 |
|
구성 모드를 입력(명령 사용 |
|
모든 제어 수준 작업, 즉 권한 플래그로 구성된 모든 작업을 수행할 수 있습니다 |
|
필드 디버그 명령을 볼 수 있습니다. 디버깅 지원을 위해 예약되었습니다. |
|
운영 모드 또는 구성 모드에서 방화벽 필터 구성을 볼 수 있습니다. |
|
계층 수준에서 방화벽 필터 정보를 보고 구성할 수 있습니다 |
|
이동식 미디어에서 읽고 쓸 수 있습니다. |
|
운영 모드 또는 구성 모드에서 플로우 탭 구성을 볼 수 있습니다. |
|
계층 수준에서 플로우 탭 정보를 |
|
라우터 또는 스위치에 플로우 탭을 요청할 수 있습니다. 예를 들어, DTCP(Dynamic Tasking Control Protocol) 클라이언트는 관리 사용자로 Junos OS Evolved에 자신을 인증할 수 있는 권한이 있어야 합니다
메모:
이 |
|
프로파일러 데이터를 볼 수 있습니다. |
|
운영 모드 및 구성 모드에서 인터페이스 구성을 볼 수 있습니다. |
|
섀시, CoS(Class of Service ), 그룹, 포워딩 옵션 및 인터페이스 구성 정보를 볼 수 있습니다. 다음 계층 수준에서 구성을 수정할 수 있습니다.
|
|
디바이스에서 로컬 쉘을 시작하고 쉘에서 수퍼유저가 되고(명령 사용 |
|
, , , 및 명령을 사용하여 |
|
세션 미러링 구성을 볼 |
|
세션 미러링 구성을 수정할 |
|
명령을 사용하여 소프트웨어 프로세스를 다시 시작할 수 있습니다 |
|
명령을 사용하여 |
|
구성 모드 및 운영 모드에서 일반적인 라우팅, 라우팅 프로토콜 및 라우팅 정책 구성 정보를 볼 수 있습니다. |
|
계층 수준에서 일반 라우팅 |
|
구성에서 비밀번호 및 기타 인증 키를 볼 수 있습니다. |
|
구성에서 비밀번호 및 기타 인증 키를 보고 수정할 수 있습니다. |
|
운영 모드 및 구성 모드에서 보안 구성 정보를 볼 수 있습니다. |
|
계층 수준에서 보안 정보를 보고 구성할 수 있습니다 |
|
명령을 사용하여 |
|
운영 모드 또는 구성 모드에서 SNMP(Simple Network Management Protocol) 구성 정보를 볼 수 있습니다. |
|
계층 수준에서 SNMP 구성 정보를 보고 수정할 수 있습니다 |
|
계층 수준에서 파이버 채널 스토리지 구성 정보를 볼 수 있습니다 |
|
계층 수준에서 파이버 채널 스토리지 구성 정보를 수정할 수 있습니다 |
|
운영 모드 또는 구성 모드에서 시스템 수준 정보를 볼 수 있습니다. |
|
계층 수준에서 시스템 수준의 구성 정보를 보고 수정할 수 있습니다 |
|
추적 파일 설정을 보고 추적 파일 속성을 구성할 수 있습니다. |
|
추적 파일 설정을 수정하고 추적 파일 속성을 구성할 수 있습니다. |
|
계층에서 통합 에지 구성을 볼 수 있습니다 |
|
계층에서 통합 에지 관련 구성을 수정할 수 있습니다 |
|
다양한 명령을 사용하여 현재 시스템 전체, 라우팅 테이블 및 프로토콜별 값과 통계를 표시할 수 있습니다. 비밀 구성을 볼 수 없습니다. |
|
비밀, 시스템 스크립트 및 이벤트 옵션을 제외한 모든 구성을 볼 수 있습니다.
메모:
권한이 있는 |
로그인 클래스에 대한 개별 명령과 문 계층 허용 및 거부
기본적으로 모든 최상위 CLI 명령 및 구성 계층 수준에는 관련 액세스 권한 수준이 있습니다. 사용자는 이러한 명령만 실행할 수 있으며 액세스 권한이 있는 명령문만 보고 구성할 수 있습니다. 각 로그인 클래스에 대해 운영 모드 및 구성 모드 명령과 문에 지정된 권한 수준에 의해 허용되거나 거부될 수 있는 문 계층의 permissions
사용을 명시적으로 허용하거나 거부할 수 있습니다.
권한 플래그는 사용자에게 운영 모드 및 구성 모드 명령과 구성 계층 수준 및 문에 대한 액세스 권한을 부여합니다. 계층 수준에서 사용자의 로그인 클래스에 [edit system login class]
대한 특정 권한 플래그를 지정함으로써 해당 명령과 구성 계층 수준 및 문에 대한 사용자 액세스 권한을 부여할 수 있습니다. 모든 명령 및 구성 문에 대한 액세스 권한을 부여하려면 권한 플래그를 all
사용합니다.
로그인 클래스에 대해 , deny-commands
, allow-configuration
및 deny-configuration
문을 구성allow-commands
하여 명령과 문의 사용을 명시적으로 허용하거나 거부할 수 있습니다. 명령문에서는 확장 정규 표현식을 사용하여 클래스에 할당된 사용자에 대해 허용하거나 거부할 명령과 명령문을 정의합니다.
예: 액세스 권한 수준으로 사용자 권한 구성
이 예제에서는 로그인 클래스의 사용자 권한을 구성합니다. 로그인 클래스에 대한 사용자 권한을 구성하여 사용자가 무단 네트워크 동작을 수행하지 못하도록 합니다. 사용자는 이러한 명령만 실행하고 액세스 권한이 있는 명령문만 보고 수정할 수 있습니다. 이러한 제약으로 인해 권한이 없는 사용자가 네트워크에 손상을 줄 수 있는 민감한 명령을 실행하거나 문을 구성하지 못하도록 합니다.
요구 사항
이 예제를 구성하기 전에 디바이스 초기화 이외의 특별한 구성은 필요하지 않습니다.
개요
각 최상위 CLI 명령 및 각 구성 문에는 이와 관련된 액세스 권한 수준이 있습니다. 로그인 클래스를 구성할 때 운영 모드 및 구성 모드 명령과 구성 문의 사용을 명시적으로 허용하거나 거부할 수 있습니다. 사용자는 이러한 명령만 실행할 수 있으며 액세스 권한이 있는 명령문만 보고 구성할 수 있습니다.
문에서 permissions
하나 이상의 권한 플래그를 지정하여 각 로그인 클래스에 대한 액세스 권한을 정의합니다. 권한 플래그는 명령, 문 및 계층에 대한 사용자 액세스 권한을 부여합니다. 권한 플래그는 누적되지 않습니다. 각 로그인 클래스에 대해 정보를 configure
표시하고 구성 모드를 입력하는 것을 포함하여 view
필요한 모든 권한 플래그를 나열해야 합니다. 사용자의 로그인 클래스에 특정 권한 플래그를 지정하면 해당 명령, 문 및 계층에 대한 액세스 권한을 사용자에게 부여할 수 있습니다. 모든 명령 및 구성 문에 대한 액세스 권한을 부여하려면 권한 플래그를 all
사용합니다. 권한 플래그는 권한 유형에 대해 읽기 전용("일반" 형식) 및 읽고 쓰기(-control로 끝나는 형식) 기능을 제공합니다.
로그인 클래스 권한 비트는 all
사용자가 권한 플래그가 활성화된 명령을 실행할 rollback
때 확장 정규 표현보다 rollback
우선합니다.
로그인 클래스에 대한 사용자 액세스 권한 수준을 구성하려면 계층 수준에서 문을 [edit system login class class-name]
포함시킨 다음 권한 플래그를 포함합니다permissions
. 여러 권한을 대괄호로 묶인 공백으로 구분된 목록으로 구성합니다.
[edit system login] user@host# set class class-name permissions permission-flag user@host# set class class-name permissions [flag1 flag2 flag3]
사용 가능한 권한을 보려면 CLI의 컨텍스트에 민감한 도움말을 사용하고 문 다음에 물음표(?)를 입력합니다.permissions
[edit system login] user@host# set class class-name permissions ?
구성
이 예제에서는 로그인 클래스를 구성합니다 snmp-admin
. 이 로그인 클래스의 사용자는 SNMP 매개 변수만 구성하고 볼 수 있습니다.
액세스 권한 수준으로 사용자 권한 구성
단계별 절차
로그인 클래스에 대한 액세스 권한 구성 방법:
-
snmp-admin
,snmp
및snmp-control
권한 플래그를configure
사용하여 로그인 클래스를 구성합니다.[edit system login] user@host# set class snmp-admin permissions [configure snmp snmp-control]
구성된 권한 플래그는 SNMP에 대한 읽기(snmp) 및 읽고 쓰기(snmp-control) 기능을 모두 제공하며, 이는 이 로그인 클래스에 대해 허용된 유일한 액세스 권한입니다. 다른 모든 액세스 권한은 거부됩니다.
-
로그인 클래스에 할당된
snmp-admin
사용자 계정을 만듭니다.[edit system login] user@host# set user snmpuser class snmp-admin authentication plain-text-password New password: Retype new password:
결과
구성 모드에서 명령을 입력하여 show system login
구성을 확인합니다. 출력에 의도한 구성이 표시되지 않으면 이 예의 지침을 반복하여 구성을 수정하십시오.
user@host# show system login class snmp-admin { permissions [ configure snmp snmp-control ]; } user snmpuser { class snmp-admin; authentication { encrypted-password "$ABC123"; ## SECRET-DATA } }
디바이스를 구성한 후 구성 모드로 들어갑니다 commit
.
확인
새 로그인 클래스에 할당된 사용자 이름을 사용하여 로그인하고 구성이 제대로 작동하는지 확인합니다.
SNMP 구성 확인
목적
로그인 클래스의 사용자가 SNMP를 snmp-admin
구성할 수 있는지 확인합니다.
행동
구성 모드에서는 계층 수준에서 SNMP 문을 [edit snmp]
구성합니다.
[edit snmp] user@host# set name device1 user@host# set description switch1 user@host# set location Lab1 user@host# set contact example.com user@host# commit
의미
로그인 클래스의 사용자는 snmp-admin
SNMP 매개 변수를 구성할 수 있습니다. 사용자는 이러한 매개 변수를 구성할 수 있습니다. 이 클래스에 지정된 권한 플래그에는 snmp(읽기 기능) 및 snmp-control(읽기 및 쓰기 기능) 권한 비트가 모두 포함됩니다.
비SNMP 구성 확인
목적
로그인 클래스의 사용자가 snmp-admin
비SNMP 구성 문을 수정할 수 없는지 확인합니다.
행동
구성 모드에서 계층의 interfaces
문과 같은 비 SNMP 문을 구성하려고 시도합니다.
[edit] user@host# edit interfaces Syntax error, expecting <statement> or <identifier>.
의미
로그인 클래스의 사용자는 snmp-admin
계층을 [edit interfaces]
구성할 수 없는데, 이는 이 클래스에 대해 지정된 권한 플래그가 이를 허용하지 않기 때문입니다. 이 경우 CLI는 오류 메시지를 발행합니다.
작동 모드 명령, 구성 명령문 및 계층을 허용하거나 거부하는 정규 표현식
이 항목에는 다음 섹션이 포함되어 있습니다.
- 허용 및 거부 문 이해
- Allow 및 Deny 문 구문 이해
- 허용 및 거부 명령문 우선 순위 및 일치 이해
- 허용 및 거부 명령문 규칙 이해
- *-regexps 명령문의 차이점 이해
- 원격 인증 서버에서 정규 표현식 사용
- 정규 표현식 지정
- 정규 표현식 연산자
- 정규 표현식 예
허용 및 거부 문 이해
각 최상위 CLI 명령 및 구성 명령문 계층 구조는 이와 관련된 액세스 권한 수준을 갖습니다. 각 로그인 클래스는 운영 모드 및 구성 모드 명령과 구성 계층 및 명령문의 사용을 명시적으로 허용하거나 거부할 수 있습니다. 사용자는 이러한 명령만 실행할 수 있으며 액세스 권한이 있는 명령문만 보고 구성할 수 있습니다.
각 로그인 클래스에 대한 액세스 권한은 계층 수준에서 명령문에 permissions
지정된 하나 이상의 권한 플래그로 [edit system login class class-name]
정의됩니다. 또한 확장 정규 표현식을 정의하여 특정 명령 및 구성 계층 구조의 사용을 허용하거나 거부할 수 있습니다. 로그인 클래스에 대해 다음 명령문을 구성하여 정규 표현식을 지정할 수 있습니다.
-
allow-commands
및deny-commands
- 작동 모드 및 구성 모드 명령에 대한 액세스를 허용하거나 거부합니다. -
allow-configuration
및deny-configuration
- 특정 구성 계층에 대한 액세스를 허용하거나 거부합니다.메모:이러한 문은 특히 와일드카드 일치에서 더 유연하고 더 느린 일치를 수행합니다. 그러나 많은 수의 전체 경로 정규 표현식 또는 와일드카드 표현식이 구성된 경우 가능한 모든 명령문을 평가하는 데 매우 오랜 시간이 소요되어 성능에 부정적인 영향을 미칠 수 있습니다.
-
allow-commands-regexps
및deny-commands-regexps
- 정규 표현식 문자열을 사용하여 특정 명령에 대한 액세스를 허용하거나 거부합니다. -
allow-configuration-regexps
및deny-configuration-regexps
- 정규 표현식 문자열을 사용하여 특정 구성 계층에 대한 액세스를 허용하거나 거부합니다.
기존 구성에서 또는 allow/deny-configuration
명령문을 사용하는 allow/deny-commands
경우, 또는 allow/deny-configuration-regexps
명령문과 함께 allow/deny-commands-regexps
동일한 구성 옵션을 사용하면 동일한 결과가 생성되지 않을 수 있습니다. 검색 및 일치 방법은 이러한 명령문의 두 가지 형식에서 다릅니다.
명령문을 사용하여 명령 및 구성 명령문 계층을 allow/deny-*
명시적으로 허용하면 명령문이 이미 정의한 permissions
권한에 추가됩니다. 마찬가지로, 명령문을 사용하여 명령 및 구성 명령문 계층을 allow/deny-*
명시적으로 거부하면 명령문이 이미 정의한 permissions
권한이 제거됩니다.
예를 들어, 다음 구성 configure
에서 권한을 통해 로그인 클래스의 사용자가 구성 모드로 전환할 수 있습니다. 또한 표현식을 allow-configuration
통해 사용자는 계층 수준에서 구성을 [edit system services]
수정하고 커밋할 수 있습니다.
[edit system login class test] user@host# set permissions configure allow-configuration "system services"
마찬가지로, 다음 구성에서 로그인 클래스 사용자는 권한 플래그가 all
허용하는 모든 작업을 수행할 수 있습니다. 단, 사용자가 계층 수준에서 구성을 보거나 수정할 수 없다는 점은 예외입니다.[edit system services]
[edit system login class test] user@host# set permissions all deny-configuration "system services"
Allow 및 Deny 문 구문 이해
각 로그인 클래스에서 한 번만 명령문을 구성할 allow/deny-*
수 있습니다. 명령문을 구성할 때:
-
필요한 만큼 정규 표현식을 구성할 수 있습니다.
-
정규 표현식은 대소문자를 구분하지 않습니다
명령문은 allow/deny-commands
명령문과 allow/deny-commands-regexps
상호 배타적이며allow/deny-configuration
, 명령문은 명령문과 allow/deny-configuration-regexps
상호 배타적입니다. 예를 들어, 동일한 로그인 클래스에서 와(과) 를 allow-configuration-regexps
둘 다 allow-configuration
구성할 수 없습니다.
명령에 대한 액세스 권한을 정의하려면 및 deny-commands
명령문을 사용하여 확장 정규 표현식을 allow-commands
지정합니다. 각각의 완전한 독립형 식을 괄호( )로 묶고 파이프( | ) 기호를 사용하여 식을 구분합니다. 파이프 기호로 연결된 정규 표현식 사이에는 공백을 사용하지 마십시오. 완전한 표현식은 큰따옴표로 묶입니다.
allow-commands "(cmd1)|(cmd2)|(cmdn)" allow-configuration "(config1)|(config2)|(confign)"
예를 들어:
[edit system login class test] user@host# set allow-commands "(ping .*)|(traceroute .*)|(show .*)|(configure .*)|(edit)|(exit)|(commit)|(rollback .*)"
명령문으로 복잡한 정규 표현식을 지정할 때는 앵커를 allow-commands
사용해야 합니다. 예를 들어:
[edit system login] user@host# set class test allow-commands "(^monitor)|(^ping)|(^show)|(^exit)"
구성 계층의 일부에 대한 액세스 권한을 정의하려면, 및 deny-configuration
문에 allow-configuration
확장 정규 표현식을 지정합니다. 전체 경로를 괄호( )로 묶고 파이프( | ) 기호를 사용하여 식을 구분합니다. 파이프 기호로 연결된 정규 표현식 사이에는 공백을 사용하지 마십시오. 완전한 표현식은 큰따옴표로 묶입니다.
allow-configuration "(config1)|(config2)|(confign)"
예를 들어:
[edit system login class test] user@host# set deny-configuration "(system login class)|(system services)"
또는 allow/deny-configuration-regexps
명령문을 사용하여 확장 정규 표현식을 allow/deny-commands-regexps
지정하는 경우 각 식을 따옴표(" ")로 묶고 공백을 사용하여 식을 구분합니다. 여러 식은 대괄호 [ ]로 묶습니다. 예를 들어:
[edit system login class test] user@host# set allow-configuration-regexps ["interfaces .* description .*" "interfaces .* unit .* description .*" “interfaces .* unit .* family inet address .*" "interfaces.* disable"]
, log
, 등의 count
수정자는 set
일치시킬 정규 표현식 문자열 내에서 지원되지 않습니다. 수정자를 사용하면 아무 것도 일치하지 않습니다.
올바른 구성:
[edit system login class test] user@host# set deny-commands protocols
잘못된 구성:
[edit system login class test] user@host# set deny-commands "set protocols"
허용 및 거부 명령문 우선 순위 및 일치 이해
기본적으로 및 allow-configuration
정규 표현식은 allow-commands
및 deny-configuration
표현식보다 deny-commands
우선합니다. 따라서 및 deny-commands
명령문 모두에 allow-commands
대해 동일한 명령을 구성하면 허용 작업이 거부 작업보다 우선합니다. 마찬가지로 및 deny-configuration
명령문 모두에 allow-configuration
대해 동일한 명령문을 구성하는 경우 허용 작업이 거부 작업보다 우선합니다.
예를 들어, 다음 구성을 사용하면 명령문에 test
동일한 명령이 포함되어 있어 deny-commands
도 로그인 클래스의 사용자가 명령을 사용하여 request system software add
소프트웨어를 설치할 수 있습니다.
[edit system login class test] user@host# set allow-commands "request system software add" user@host# set deny-commands "request system software add"
마찬가지로, 다음 구성을 사용하면 로그인 클래스 테스트의 test
사용자가 명령문에 동일한 계층이 포함되어 있어 deny-configuration
도 구성 계층을 [edit system services]
보고 수정할 수 있습니다.
[edit system login class test] user@host# set allow-configuration "system services" user@host# set deny-configuration "system services"
및 deny-commands
문에 allow-commands
명령의 두 가지 변형이 있는 경우 가장 긴 일치 항목이 항상 실행됩니다. 다음 구성에서는 로그인 클래스의 사용자가 test
명령을 실행할 수 있지만 명령은 실행할 commit synchronize
수 없습니다commit
. 이는 가 와(과) 간의 commit synchronize
가장 긴 일치 항목 commit
이고 에 대해 allow-commands
지정되기 때문입니다commit synchronize
.
[edit system login class test] user@host# set allow-commands "commit synchronize" user@host# set deny-commands commit
다음 구성에서는 로그인 클래스의 사용자가 test
명령을 실행할 수 있지만 명령은 실행할 commit
수 없습니다commit synchronize
. 이는 가 와(과) 간의 commit synchronize
가장 긴 일치 항목 commit
이고 에 대해 deny-commands
지정되기 때문입니다commit synchronize
.
[edit system login class test] user@host# set allow-commands commit user@host# set deny-commands "commit synchronize"
다른 명령문과 달리, 명령문의 기본 동작 *-regexps
은 deny-commands-regexps
및 deny-configuration-regexps
정규 표현식이 및 allow-configuration-regexps
표현식보다 allow-commands-regexps
우선한다는 것입니다. 계층 수준에서 [edit system]
문을 구성 regex-additive-logic
하여 정규 표현식이 allow-configuration-regexps
명령문보다 deny-configuration-regexps
우선하도록 할 수 있습니다. 명령문을 구성하면 더 높은 수준의 구성 계층을 거부한 다음 특정 하위 계층에 대한 사용자 액세스만 허용할 수 있습니다.
허용 및 거부 명령문 규칙 이해
, allow/deny-configuration
, allow/deny-commands-regexps
및 allow/deny-configuration-regexps
명령allow/deny-commands
문은 로그인 클래스 권한보다 우선합니다. 이러한 명령문을 구성할 때 다음 규칙이 적용됩니다.
-
및
deny-commands
명령문의 정규 표현식에는allow-commands
,load
,rollback
,status
save
, 및update
명령도 포함될commit
수 있습니다. -
사용자가 권한 플래그가
all
활성화된 명령을 실행할rollback
때 로그인 클래스 권한 비트는 확장 정규 표현보다rollback
우선합니다. -
사용자는 확장 정규 표현식을
load override
지정할 때 명령을 실행할 수 없습니다. 사용자는,replace
및 구성 명령만 실행할merge
수 있습니다patch
. -
정규 표현식을 나타낼 때 * 와일드카드 문자를 사용할 수 있습니다. 그러나 정규식의 일부로 사용해야 합니다. 또는 을
[ .* ]
(를) 유일한 표현으로 사용할[ * ]
수 없습니다. 또한 로 평가되므로 와 같은(interfaces (description (|.*))
표현식을allow-configuration .*
사용하여 문을 구성할allow-configuration
수 없습니다.
*-regexps 명령문의 차이점 이해
이 섹션에서는 명령문과 명령문 간의 allow/deny-configuration
차이점을 간략하게 allow/deny-configuration-regexps
설명합니다.
문은 allow/deny-configuration-regexps
정규식을 토큰으로 분할하고 각 조각을 지정된 구성의 전체 경로의 각 부분과 일치시키는 반면, 문은 allow/deny-configuration
전체 문자열과 일치시킵니다. 명령문의 경우 allow/deny-configuration-regexps
, 각 문자열이 문자열 용어 사이에 공백이 있는 정규 표현식인 문자열 세트를 구성합니다. 이 구문은 매우 빠른 일치를 제공하지만 유연성이 떨어집니다. 와일드카드 표현식을 지정하려면 매치시키려는 공백으로 구분된 문자열의 각 토큰에 대해 와일드카드를 설정해야 합니다. 그러면 이러한 명령문에 와일드카드 표현식을 사용하기가 더 어려워집니다.
예를 들어:
-
allow-configuration-regexps를 사용하여 하나의 토큰과 일치하는 정규 표현식
이 예는 이(가
options
) 명령문의 첫 번째 토큰과 일치하는 유일한 표현식임을 보여줍니다.[edit system] login { class test { permissions configure; allow-configuration-regexps .*options; } }
앞의 구성은 다음 명령문과 일치합니다.
-
정책 옵션 조건 condition dynamic-db 설정
-
routing-options 고정 경로 static-route 다음 홉 설정next-hop
-
이벤트 옵션 생성 이벤트 event 시간 간격 설정 seconds
앞의 구성은 다음 명령문과 일치하지 않습니다.
-
시스템 호스트 이름 호스트 옵션
-
인터페이스 interface-name 설명 옵션
-
-
allow-configuration-regexps를 사용하여 3개의 토큰과 일치하는 정규 표현식
이 예는 이(가
ssh
) 명령문의 세 번째 토큰과 일치하는 유일한 표현식임을 보여줍니다.[edit system] login { class test { permissions configure; allow-configuration-regexps ".* .* .*ssh"; } }
앞의 예에서 세 개의 토큰에는 각각 ,
.*
, 이.*ssh
(가) 포함됩니다.*
.앞의 구성은 다음 명령문과 일치합니다.
-
시스템 호스트 이름 호스트 이름-ssh
-
시스템 서비스 ssh
-
시스템 서비스 아웃바운드-SSH
앞의 구성은 다음 명령문과 일치하지 않습니다.
-
인터페이스 interface-name 설명 ssh
-
명령문을 사용하는 것보다 명령문을 사용하여 deny-configuration
구성 액세스를 제한하는 것이 deny-configuration-regexps
더 쉽습니다. 표 2 는 특정 구성에 대한 액세스를 제한하는 동일한 결과를 얻기 위해 서로 다른 구성에서 및 deny-configuration-regexps
문을 모두 deny-configuration
사용하는 것을 보여줍니다.
구성 거부됨 |
사용: |
사용: |
결과 |
|
[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""; } } |
다음 구성 명령문은 거부됩니다.
|
|
[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"; } } |
다음 구성 명령문은 거부됩니다.
|
allow/deny-configuration
간단한 구성을 원할 때도 명령문이 유용하지만, 명령문은 allow/deny-configuration-regexps
더 나은 성능을 제공하고 명령문에서 표현식을 결합할 때 존재하는 모호성을 극복합니다allow/deny-configuration
.
원격 인증 서버에서 정규 표현식 사용
확장 정규 표현식을 사용하여 특정 사용자에 대해 허용되거나 거부되는 작동 모드 및 구성 모드 명령과 구성 명령문 및 계층을 지정할 수 있습니다. 계층 수준에서 , , 및 명령문에 allow/deny-commands
이러한 정규 표현식을 [edit system login class class-name]
로컬로 지정합니다.allow/deny-configuration-regexps
allow/deny-commands-regexps
allow/deny-configuration
인증 서버 구성에서 주니퍼 네트웍스 벤더별 TACACS+ 또는 RADIUS 속성을 지정하여 이러한 정규식을 원격으로 지정합니다. 로컬 및 원격으로 권한 부여 매개 변수를 구성하면 디바이스는 TACACS+ 또는 RADIUS 권한 부여 중에 수신된 정규식을 로컬 디바이스에 정의된 정규식과 병합합니다.
, deny-commands
, allow-configuration
또는 deny-configuration
문을 사용하여 allow-commands
로컬 구성에서 여러 정규 표현식을 지정하는 경우 괄호 안에 정규 표현식을 구성하고 파이프 기호를 사용하여 구분합니다. 완전한 식은 큰따옴표로 묶습니다. 예를 들어, 다음 구문을 사용하여 여러 allow-commands
매개 변수를 지정할 수 있습니다.
allow-commands "(cmd1)|(cmd2)|(cmdn)"
RADIUS 인증 서버는 다음 속성과 구문을 사용합니다.
Juniper-Allow-Commands += "(cmd1)|(cmd2)|(cmd3)", Juniper-Deny-Commands += "(cmd1)|(cmd2)", Juniper-Allow-Configuration += "(config1)|(config2)", Juniper-Deny-Configuration += "(config1)|(config2)",
TACACS+ 인증 서버는 다음 속성과 구문을 사용합니다.
allow-commands = "(cmd1)|(cmd2)|(cmdn)" deny-commands = "(cmd1)|(cmd2)|(cmdn)" allow-configuration = "(config1)|(config2)|(confign)" deny-configuration = "(config1)|(config2)|(confign)"
, deny-commands-regexps
, allow-configuration-regexps
또는 deny-configuration-regexps
를 사용하여 allow-commands-regexps
로컬 구성에서 여러 정규 표현식을 지정하는 경우 큰따옴표 안에 정규 표현식을 구성하고 공백 연산자를 사용하여 구분합니다. 완전한 표현식을 대괄호로 묶습니다. 예를 들어, 다음 구문을 사용하여 여러 allow-commands 매개 변수를 지정할 수 있습니다.
allow-commands-regexps [ "cmd1" "cmd2" "cmdn" ]
RADIUS 인증 서버는 다음 속성과 구문을 사용합니다.
Juniper-Allow-Configuration-Regexps += "(config1)|(config2)|(confign)", Juniper-Deny-Configuration-Regexps += "(config1)|(config2)|(confign)",
TACACS+ 인증 서버는 다음 속성과 구문을 사용합니다.
allow-commands-regexps = "(cmd1)|(cmd2)|(cmdn)" deny-commands-regexps = "(cmd1)|(cmd2)|(cmdn)" allow-configuration-regexps = "(config1)|(config2)|(confign)" deny-configuration-regexps = "(config1)|(config2)|(confign)"
RADIUS 및 TACACS+ 서버는 별도의 줄에 각 개별 표현식을 지정하는 단순화된 구문도 지원합니다. 예를 들어, RADIUS 서버의 간소화된 구문은 다음과 같습니다.
Juniper-Allow-Commands += "cmd1", Juniper-Allow-Commands += "cmd2", Juniper-Allow-Commands += "cmdn",
마찬가지로 TACACS+ 서버 Simplified 구문은 다음과 같습니다.
allow-commands-regexps1 = "cmd1" allow-commands-regexps2 = "cmd2" allow-commands-regexpsn = "cmdn"
표 3 은 정규식을 사용하여 로컬 인증 구성과 TACACS+ 서버 인증 구성을 구분합니다.
로컬 구성 |
원격 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" } } |
-
, , 및 의 세 가지 명령을
xml-mode
netconf
실행하여 로컬 또는 원격으로 NETCONF 모드에 대한 액세스를 명시적으로 허용해야 합니다need-trailer
. -
명령문을 사용할
deny-configuration = ".*"
때는 명령문을 사용하여allow-configuration
원하는 구성을 모두 허용해야 합니다. 그러나 이 구성은 명령문에 대해 허용되는 정규 표현식 버퍼 제한에 영향을 줄 수 있습니다allow-configuration
. 이 제한을 초과하면 허용된 구성이 작동하지 않을 수 있습니다.
정규 표현식 지정
명령 및 구성 명령문에 대한 정규식을 지정할 때 다음 예에 주의해야 합니다. 구문이 잘못된 정규 표현식은 구성이 오류 없이 커밋되더라도 원하는 결과를 생성하지 못할 수 있습니다.
전체 명령 또는 명령문을 실행하는 것과 동일한 방식으로 명령 및 구성 명령문에 대한 정규 표현식을 지정해야 합니다. 표 4 에는 및 [edit vlans]
명령문 계층에 [edit interfaces]
대한 액세스 권한을 구성하기 위한 정규식이 나열되어 있습니다.
성명서 |
정규식 |
구성 참고 사항 |
---|---|---|
[edit interfaces]
[edit] user@host# set interfaces interface-name unit interface-unit-number |
명령문은 결과적으로, 구성을 거부 [edit system login class class-name] user@host# set permissions configure user@host# set deny-configuration "interfaces .* unit .*" |
|
[edit vlans]
[edit] user@host# set vlans vlan-name vlan-id vlan-id |
여기서 명령문은 결과적으로, 구성을 허용하는 [edit system login class class-name] user@host# set permissions configure user@host# set allow-configuration "vlans .* vlan-id .*" |
|
정규 표현식 연산자
표 5 에는 운영 및 구성 모드를 허용하거나 거부하는 데 사용할 수 있는 일반적인 정규식 연산자가 나와 있습니다.
명령 정규 표현식은 POSIX 1003.2에 정의된 대로 확장된(최신) 정규 표현식을 구현합니다.
연산자 |
성냥 |
본보기 |
---|---|---|
| |
파이프로 구분된 둘 이상의 용어 중 하나입니다. 각 용어는 괄호( )로 묶인 완전한 독립형 표현식이어야 하며, 파이프와 인접한 괄호 사이에 공백이 없어야 합니다. |
[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)" 이전 구성에서 테스트 로그인 클래스에 할당된 사용자는 명령문에 |
^ |
식의 시작 부분에서 명령이 시작되는 위치를 나타내는 데 사용되며 모호성이 있을 수 있습니다. |
[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)" 이전 구성에서 테스트 로그인 클래스에 할당된 사용자는 인터페이스 구성을 보고 구성할 수 있습니다. 문은 첫 번째 필터의 경우 지정된 명령에는, |
$ |
명령 끝에 있는 문자입니다. 해당 지점까지 정확히 일치해야 하는 명령을 나타내는 데 사용됩니다. |
[edit system login class test] user@host# set permissions interface user@host# set allow-commands "(show interfaces$)" 이전 구성에서 테스트 로그인 클래스에 할당된 사용자는 구성 모드에서 인터페이스 구성을 볼 수 있습니다. 사용자는 작동 모드 명령으로 |
[ ] |
문자 또는 숫자의 범위입니다. 범위의 시작과 끝을 구분하려면 하이픈( |
[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)" 위의 구성에서 테스트 로그인 클래스에 할당된 사용자는 수퍼유저 수준의 권한을 가지며 명령문에 |
* |
0개 이상의 용어. |
[edit system login class test] user@host# set permissions configure user@host# set deny-configuration "(system login class m*)" 위 구성에서 로그인 사용자 이름이 다음으로 |
+ |
하나 이상의 용어. |
[edit system login class test] user@host# set permissions configure user@host# set deny-configuration "(system login class m+)" 위 구성에서 로그인 사용자 이름이 다음으로
|
. |
공백 " "을 제외한 모든 문자. |
[edit system login class test] user@host# set permissions configure user@host# set deny-configuration "(system login class m.)" 위 구성에서 로그인 사용자 이름이 다음으로 |
.* |
지정된 지점 이후의 모든 것. |
[edit system login class test] user@host# set permissions configure user@host# set deny-configuration "(system login class m .*)" 위 구성에서 로그인 사용자 이름이 다음으로 마찬가지로 명령문은
메모:
|
!
정규 표현식 연산자는 지원되지 않습니다.
정규 표현식 예
표 6 에는 정규 표현식을 지정하기 위한 예로,[edit system ntp server]
[edit protocols rip]
와 의 두 구성 계층에서 구성 옵션을 허용하는 데 사용되는 정규 표현식이 나열되어 있습니다.
표 6 은 모든 구성 명령문 및 계층에 대한 모든 정규 표현식 및 키워드의 포괄적인 목록을 제공하지 않습니다. 표에 나열된 정규 표현식은 및 [edit protocols rip]
명령문 계층에 [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" ] |
|
|
버전 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" ] |
|
|
좋아하다 |
[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 .*" ] |
|
|
|
|||
메시지 크기 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
문
권한 플래그는 사용자 또는 로그인 클래스가 액세스하고 제어할 수 있는 항목의 더 큰 경계를 정의합니다. 및 deny-configuration
문에는 allow-configuration
특정 구성 계층 및 문을 허용하거나 거부하는 하나 이상의 정규식이 포함되어 있습니다. 및 deny-configuration
문은 allow-configuration
권한 플래그보다 우선하며, 관리자로 하여금 사용자가 보고 구성할 수 있는 계층과 문을 정확하게 제어할 수 있도록 합니다.
이 주제에서는 이러한 문을 사용하는 로그인 클래스 구성의 예를 보여주면서 및 deny-configuration
문을 사용하여 allow-configuration
액세스 권한을 정의하는 방법에 대해 설명합니다. 예제 1부터 3까지는 사용자가 문에 정의된 명령 및 문을 제외한 모든 명령 및 문에 deny-configuration
액세스할 수 있는 로그인 클래스를 만듭니다.
권한 비트와 권한 플래그는 같은 의미로 사용됩니다.
예제 1
사용자가 모든 명령을 실행하고 텔넷 매개 변수를 제외한 모든 항목을 구성할 수 있는 로그인 클래스를 생성하려면 다음 단계를 따르십시오.
예제 2
사용자가 모든 명령을 실행하고 이름이 'm'으로 시작하는 로그인 클래스 내의 문을 제외한 모든 항목을 구성할 수 있는 로그인 클래스를 생성하려면 다음 단계를 따르십시오.
-
사용자의 로그인 클래스 권한을 로
all
설정합니다.[edit system login] user@host# set class all-except-login-class-m permissions all
-
다음
deny-configuration
문을 포함합니다.[edit system login class all-except-login-class-m] user@host# set deny-configuration "system login class m.*"
예제 3
사용자가 모든 명령을 실행하고 또는 [edit system services]
계층 수준을 제외한 [edit system login class]
모든 항목을 구성할 수 있는 로그인 클래스를 생성하려면 다음 단계를 따르십시오.
-
사용자의 로그인 클래스 권한을 로
all
설정합니다.[edit system login] user@host# set class all-except-login-class-or-system-services permissions all
-
다음
deny-configuration
문을 포함합니다.[edit system login class all-except-login-class-or-system-services] user@host# set deny-configuration "(system login class) | (system services)"
다음 예에서는 및 deny-configuration
문을 사용하여 allow-configuration
계층 수준에 대해 [edit system services]
서로 반대되는 사용 권한을 결정하는 방법을 보여 줍니다.
예제 4
사용자가 계층 수준에서만 [edit system services]
전체 구성 권한을 가질 수 있도록 허용하는 로그인 클래스를 생성하려면 다음을 수행합니다.
-
사용자의 로그인 클래스 권한을 로
configure
설정합니다.[edit system login] user@host# set class configure-only-system-services permissions configure
-
다음
allow-configuration
문을 포함합니다.[edit system login class configure-only-system-services] user@host# set allow-configuration "system services"
예제 5
계층 수준을 제외한 모든 명령과 모든 구성 계층에 대해 사용자에게 모든 권한을 허용하는 로그인 클래스를 생성하려면 다음을 수행합니다 [edit system services]
.
-
사용자의 로그인 클래스 권한을 로
all
설정합니다.[edit system login] user@host# set class all-except-system-services permissions all
-
다음
deny-configuration
문을 포함합니다.[edit system login class all-except-system-services] user@host# set deny-configuration "system services"
예: 정규식과 함께 추가 논리를 사용하여 액세스 권한 지정
이 예에서는 정규식을 사용하여 구성 액세스 권한을 설정할 때 추가 논리를 사용하는 방법을 보여줍니다.
요구 사항
이 예제를 구성하기 전에 디바이스 초기화 이외의 특별한 구성은 필요하지 않습니다.
개요
구성을 변경할 수 있는 사용자와 변경할 수 있는 항목을 제어하기 위해 정규식을 정의할 수 있습니다. 이러한 정규식은 로그인 클래스의 사용자가 액세스할 수 있는 특정 구성 계층을 나타냅니다. 예를 들어 사용자가 라우팅 인스턴스 그룹을 수정할 수 있는 정규식을 정의하고 사용자가 다른 라우팅 인스턴스 또는 다른 구성 수준을 변경하지 못하도록 하는 정규식을 정의할 수 있습니다. 로그인 클래스에 대해 및 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
. 덧셈 논리 allow-configuration-regexps
를 사용하도록 설정하면 문이 문보다 우선합니다 deny-configuration-regexps
.
따라서 문이 주어진 수준(protocols.*)에서 모든 구성 계층에 대한 액세스를 거부하지만allow-configuration-regexps
, 문이 하나의 하위 계층(protocols bgp.*)에 대한 액세스를 허용하는 경우deny-configuration-regexps
, 장치는 기본적으로 문이 우선하므로 해당 로그인 클래스의 deny-configuration-regexps
사용자에 대한 계층에 대한 액세스를 거부합니다. 그러나 추가 논리를 활성화하면 이 경우 이(allow-configuration-regexps
가) 우선하므로 장치는 해당 로그인 클래스의 사용자에 대해 지정된 하위 계층에 대한 액세스를 허용합니다.
구성
단계별 절차
지정된 로그인 클래스의 사용자가 하나 이상의 개별 구성 계층에 대한 액세스를 명시적으로 허용하는 추가 논리를 사용하려면,
-
deny-configuration-regexps
문을 포함하고, 구성 계층에 대한 액세스를 명시적으로 거부합니다.[edit system login class class-name] user@host# set deny-configuration-regexps ["regular expression 1" "regular expression 2" "regular expression 3"]
예를 들어:
[edit system login class class-name] user@host# set deny-configuration-regexps "protocols .*"
-
allow-configuration-regexps
문을 포함하고, 특정 계층에 허용할 정규식을 정의합니다.[edit system login class class-name] user@host# set allow-configuration-regexps ["regular expression 1" "regular expression 2" "regular expression 3"]
예를 들어:
[edit system login class class-name] user@host# set allow-configuration-regexps ["protocols bgp .*" "protocols ospf .*"]
-
및
deny-configuration-regexps
정규 표현식에 대한 덧셈 논리를allow-configuration-regexps
사용하도록 설정합니다.[edit system] user@host# set regex-additive-logic
-
로그인 클래스를 한 명 이상의 사용자에게 할당합니다.
[edit system login] user@host# set user username class class-name
-
변경 내용을 커밋합니다.
이 로그인 클래스에 할당된 사용자는 문에
allow-configuration-regexps
포함된 구성 계층에 액세스할 수 있지만 문에deny-configuration-regexps
지정된 다른 계층에는 액세스할 수 없습니다.
문을 구성 regex-additive-logic
하면 모든 로그인 클래스에 있는 모든 allow-configuration-regexps
및 deny-configuration-regexps
문에 동작 변경이 적용됩니다. 추가 논리를 사용하는 경우 기존 문에 미치는 영향을 평가하고 해당 문의 정규식을 적절하게 업데이트해야 합니다.
예제
추가 논리와 함께 정규식 사용
목적
이 섹션에서는 시스템에 적합한 구성을 만들기 위한 아이디어를 제공하기 위해 추가 논리를 사용하는 정규식의 예를 제공합니다.
특정 라우팅 인스턴스 허용
다음 로그인 클래스 예제에는 이름이 (예CUST-VRF-1
: , CUST-VRF-25
, CUST-VRF-100
, 등)으로 CUST-VRF-
시작하는 라우팅 인스턴스를 구성할 수 있는 정규 표현식이 포함되어 있습니다. 이 예에는 라우팅 인스턴스의 구성을 금지하는 정규식도 포함되어 있습니다.
[edit system login class class-name] user@host# set permissions [configure routing-control view view-configuration] user@host# set deny-configuration-regexps "routing-instances .*" user@host# set allow-configuration-regexps "routing-instances CUST-VRF-.* .*"
기본적으로 deny-configuration-regexps
문이 우선하며, 이전 구성에서는 이름에 관계없이 로그인 클래스의 사용자가 라우팅 인스턴스를 구성할 수 없습니다.
그러나 다음 문을 allow-configuration-regexps
구성하면 문이 우선합니다. 따라서 사용자는 이름이 (으)로 CUST-VRF-
시작하는 라우팅 인스턴스를 구성할 수 있지만 다른 라우팅 인스턴스는 구성할 수 없습니다.
[edit system] user@host# set regex-additive-logic
BGP 피어 구성만 허용
다음 로그인 클래스 예제에는 계층 수준에서는 [edit protocols]
구성을 금지하지만 BGP 피어는 구성할 수 있는 정규식이 포함되어 있습니다.
[edit system login class class-name] user@host# set permissions [configure routing-control view view-configuration] user@host# set deny-configuration-regexps "protocols .*" user@host# set allow-configuration-regexps "protocols bgp group *"
기본적으로 이전 구성은 로그인 클래스의 사용자가 의 계층 [edit protocols]
을 변경할 수 없도록 합니다.
그러나 다음 문을 구성하는 경우 로그인 클래스의 사용자는 BGP 피어를 변경할 수 있지만 허용된 계층 수준을 벗어난 다른 프로토콜 또는 기타 BGP 문을 구성할 수 없습니다.
[edit system] user@host# set regex-additive-logic
확인
액세스 권한을 올바르게 설정했는지 확인하려면,
-
로그인 클래스를 구성하고 변경 내용을 커밋합니다.
-
로그인 클래스를 username에 할당합니다.
-
새 로그인 클래스와 함께 할당된 사용자로 username 로그인합니다.
-
허용되는 계층 수준을 구성하려고 합니다.
-
허용된 계층 수준에서 문을 구성할 수 있어야 합니다.
-
거부된 계층 수준은 표시되지 않아야 합니다.
-
허용되거나 거부된 표현식은 문에
permissions
부여된 모든 권한보다 우선해야 합니다.
-
예: 운영 모드 명령에 대한 액세스 권한으로 사용자 권한 구성
이 예는 사용자 정의 로그인 클래스를 구성하고 운영 모드 명령에 대한 액세스 권한을 할당하는 방법을 보여줍니다. 로그인 클래스의 사용자는 액세스 권한이 있는 명령만 실행할 수 있습니다. 이렇게 하면 권한이 없는 사용자가 네트워크에 손상을 줄 수 있는 중요한 명령을 실행하는 것을 방지할 수 있습니다.
요구 사항
이 예에서 사용되는 하드웨어 및 소프트웨어 구성 요소는 다음과 같습니다.
-
주니퍼 네트웍스 디바이스 1개
-
TACACS+(또는 RADIUS) 서버 1개
시작하기 전에 디바이스와 TACACS+ 서버 간에 TCP 연결을 설정합니다. RADIUS 서버의 경우 디바이스와 RADIUS 서버 간에 UDP 연결을 설정합니다.
개요 및 토폴로지
그림 1 은 간단한 토폴로지를 보여주는데, 라우터 R1은 주니퍼 네트웍스 디바이스이며 TACACS+ 서버와 TCP 연결이 설정되어 있습니다.
이 예에서는 Class1, Class2 및 Class3의 세 가지 사용자 지정 로그인 클래스로 R1을 구성합니다. 각 클래스는 문을 구성하고 permissions
및 deny-commands
문을 사용하여 확장된 정규 표현식을 allow-commands
정의함으로써 사용자에 대한 액세스 권한을 정의합니다.
각 로그인 클래스의 목적은 다음과 같습니다.
-
Class1- 문으로만 사용자에
allow-commands
대한 액세스 권한을 정의합니다. 이 로그인 클래스는 디바이스를 재부팅하기 위한 운영자 수준의 사용자 권한 및 권한을 제공합니다. -
Class2- 문으로만 사용자에
deny-commands
대한 액세스 권한을 정의합니다. 이 로그인 클래스는 운영자 수준의 사용자 권한을 제공하고 명령에 대한 액세스를 거부합니다set
. -
Class3- 및
deny-commands
문을 모두allow-commands
사용하여 사용자에 대한 액세스 권한을 정의합니다. 이 로그인 클래스는 인터페이스에 액세스하고 디바이스 정보를 볼 수 있는 슈퍼유저 수준의 사용자 권한 및 권한을 제공합니다. 또한 및configure
명령에 대한 액세스도 거부합니다edit
.
라우터 R1에는 Class1, Class2 및 Class3 로그인 클래스에 할당된 User1, User2 및 User3의 세 가지 다른 사용자가 있습니다.
구성
- CLI 빠른 구성
- 라우터 R1에 대한 인증 매개 변수 구성
- allow-commands 문(Class1)을 사용하여 액세스 권한 구성
- dene-commands 문(Class2)을 사용하여 액세스 권한 구성
- allow-commands 및 dene-commands 문(Class3)을 모두 사용하여 액세스 권한 구성
- 결과
CLI 빠른 구성
이 예를 빠르게 구성하려면, 아래 명령을 복사하여 텍스트 파일로 붙여 넣은 다음 모든 라인브레이크를 제거하고, 네트워크 구성을 일치하는 데 필요한 세부 사항을 변경하고, 계층 수준에서 명령을 [edit]
CLI로 복사해 붙여 넣은 다음, 구성 모드에서 을(를) 입력합니다 commit
.
R1
set system authentication-order tacplus set system authentication-order radius set system authentication-order password set system radius-server 10.209.1.66 secret "$ABC123" set system tacplus-server 10.209.1.66 secret "$ABC123" set system radius-options enhanced-accounting set system tacplus-options enhanced-accounting set system accounting events login set system accounting events change-log set system accounting events interactive-commands set system accounting destination tacplus server 10.209.1.66 secret "$ABC123" set system login class Class1 permissions clear set system login class Class1 permissions network set system login class Class1 permissions reset set system login class Class1 permissions trace set system login class Class1 permissions view set system login class Class1 allow-commands "request system reboot" set system login class Class2 permissions clear set system login class Class2 permissions network set system login class Class2 permissions reset set system login class Class2 permissions trace set system login class Class2 permissions view set system login class Class2 deny-commands set set system login class Class3 permissions all set system login class Class3 allow-commands configure set system login class Class3 deny-commands .* set system login user User1 uid 2001 set system login user User1 class Class1 set system login user User1 authentication encrypted-password "$ABC123" set system login user User2 uid 2002 set system login user User2 class Class2 set system login user User2 authentication encrypted-password "$ABC123" set system login user User3 uid 2003 set system login user User3 class Class3 set system login user User3 authentication encrypted-password "$ABC123" set system syslog file messages any any
라우터 R1에 대한 인증 매개 변수 구성
단계별 절차
라우터 R1 인증 구성하기:
-
R1이 사용자 인증을 시도하는 순서를 구성합니다. 이 예에서는 먼저 TACACS+ 서버 인증을 사용한 다음 RADIUS 서버 인증을, 그리고 그 다음으로 로컬 암호를 사용합니다.
[edit system] user@R1# set authentication-order tacplus user@R1# set authentication-order radius user@R1# set authentication-order password
-
TACACS+ 서버를 구성합니다.
[edit system] user@R1# set tacplus-server 10.209.1.66 secret "$ABC123" user@R1# set tacplus-options enhanced-accounting user@R1# set accounting destination tacplus server 10.209.1.66 secret "$ABC123"
-
RADIUS 서버를 구성합니다.
[edit system] user@R1# set radius-server 10.209.1.66 secret "$ABC123" user@R1# set radius-options enhanced-accounting
-
R1 계정 매개 변수를 구성합니다.
[edit system] user@R1# set accounting events login user@R1# set accounting events change-log user@R1# set accounting events interactive-commands
allow-commands 문(Class1)을 사용하여 액세스 권한 구성
단계별 절차
문을 사용하여 allow-commands
정규식을 지정하려면:
-
Class1 로그인 클래스를 구성하고 운영자 수준의 사용자 권한을 할당합니다.
[edit system login] user@R1# set class Class1 permissions [clear network reset trace view]
-
allow-commands
클래스의 사용자가 디바이스를 재부팅할 수 있도록 정규식을 구성합니다.[edit system login] user@R1# set class Class1 allow-commands "request system reboot"
-
Class1 로그인 클래스에 대한 사용자 계정을 구성합니다.
[edit system login] user@R1# set user User1 uid 2001 user@R1# set user User1 class Class1 user@R1# set user User1 authentication encrypted-password "$ABC123"
dene-commands 문(Class2)을 사용하여 액세스 권한 구성
단계별 절차
문을 사용하여 deny-commands
정규식을 지정하려면:
-
Class2 로그인 클래스를 구성하고 운영자 수준의 사용자 권한을 할당합니다.
[edit system login] user@R1# set class Class1 permissions [clear network reset trace view]
-
deny-commands
클래스의 사용자가 명령을 실행set
하지 못하도록 정규식을 구성합니다.[edit system login] user@R1# set class Class1 deny-commands "set"
-
Class2 로그인 클래스에 대한 사용자 계정을 구성합니다.
[edit system login] user@R1# set user User2 uid 2002 user@R1# set user User2 class Class2 user@R1# set user User2 authentication encrypted-password "$ABC123"
allow-commands 및 dene-commands 문(Class3)을 모두 사용하여 액세스 권한 구성
단계별 절차
및 deny-commands
문을 모두 allow-commands
사용하여 정규식을 지정하려면:
-
Class3 로그인 클래스를 구성하고 수퍼유저 수준의 권한을 할당합니다.
[edit system login] user@R1# set class Class3 permissions all
-
deny-commands
클래스의 사용자가 명령을 실행하지 못하도록 정규식을 구성합니다.[edit system login] user@R1# set class Class3 deny-commands ".*"
-
allow-commands
사용자가 구성 모드로 들어갈 수 있도록 정규식을 구성합니다.[edit system login] user@R1# set class Class3 allow-commands configure
-
Class3 로그인 클래스에 대한 사용자 계정을 구성합니다.
[edit system login] user@R1# set user User3 uid 2003 user@R1# set user User3 class Class3 user@R1# set user User3 authentication encrypted-password "$ABC123"
결과
구성 모드에서 명령을 입력하여 show system
구성을 확인합니다. 출력에 의도한 구성이 표시되지 않으면 이 예의 지침을 반복하여 구성을 수정하십시오.
user@R1# show system authentication-order [ tacplus radius password ]; radius-server { 10.209.1.66 secret "$ABC123"; } tacplus-server { 10.209.1.66 secret "$ABC123"; } radius-options { enhanced-accounting; } tacplus-options { enhanced-accounting; } accounting { events [ login change-log interactive-commands ]; destination { tacplus { server { 10.209.1.66 secret "$ABC123"; } } } } login { class Class1 { permissions [ clear network reset trace view ]; allow-commands "request system reboot"; } class Class2 { permissions [ clear network reset trace view ]; deny-commands set; } class Class3 { permissions all; allow-commands configure; deny-commands .*; } user User1 { uid 2001; class Class1; authentication { encrypted-password "$ABC123"; } } user User2 { uid 2002; class Class2; authentication { encrypted-password "$ABC123"; } } user User3 { uid 2003; class Class3; authentication { encrypted-password “$ABC123”; } } } syslog { file messages { any any; } }
확인
새 로그인 클래스에 할당된 사용자 이름으로 로그인하고 구성이 제대로 작동하는지 확인합니다.
Class1 구성 확인
목적
Class1 로그인 클래스에서 허용된 사용 권한 및 명령이 작동하는지 확인합니다.
행동
운영 모드에서 명령을 실행합니다 show system users
.
User1@R1> show system users 12:39PM up 6 days, 23 mins, 6 users, load averages: 0.00, 0.01, 0.00 USER TTY FROM LOGIN@ IDLE WHAT User1 p0 abc.example.net 12:34AM 12:04 cli User2 p1 abc.example.net 12:36AM 12:02 -cli (cli) User3 p2 abc.example.net 10:41AM 11 -cli (cli)
운영 모드에서 명령을 실행합니다 request system reboot
.
User1@R1> request system ? Possible completions: reboot Reboot the system
의미
User1이 할당된 Class1 로그인 클래스는 운영자 수준의 사용자 권한을 가지며 클래스의 사용자가 명령을 실행할 request system reboot
수 있도록 합니다.
사전 정의된 운영자 로그인 클래스에는 다음과 같은 권한 플래그가 지정되어 있습니다.
clear- 명령을 사용하여
clear
디바이스가 네트워크에서 학습하고 다양한 네트워크 데이터베이스에 저장하는 정보를 지울 수 있습니다(삭제).network- , , , 및 명령을 사용하여
ping
네트워크에 액세스할 수 있습니다traceroute
.telnet
ssh
reset- 명령을 사용하여 소프트웨어 프로세스를 다시 시작할 수 있습니다
restart
.trace- 추적 파일 설정을 보고 추적 파일 속성을 구성할 수 있습니다.
view- 다양한 명령을 사용하여 현재 시스템 전체, 라우팅 테이블 및 프로토콜별 값과 통계를 표시할 수 있습니다. 비밀 구성을 볼 수 없습니다.
Class1 로그인 클래스의 경우 위에서 언급한 사용자 권한 외에도 User1은 명령을 실행할 수 있습니다 request system reboot
. 첫 번째 출력은 운영자로서의 뷰 권한을 표시하고 두 번째 출력은 User1이 운영자로 실행할 수 있는 유일한 request system
명령은 명령임을 request system reboot
보여줍니다.
Class2 구성 확인
목적
Class2 로그인 클래스에 허용된 사용 권한 및 명령이 작동하는지 확인합니다.
행동
운영 모드에서 명령을 실행합니다 ping
.
User2@R1> ping 10.209.1.66 ping 10.209.1.66 PING 10.209.1.66 (10.209.1.66): 56 data bytes 64 bytes from 10.209.1.66: icmp_seq=0 ttl=52 time=212.521 ms 64 bytes from 10.209.1.66: icmp_seq=1 ttl=52 time=212.844 ms 64 bytes from 10.209.1.66: icmp_seq=2 ttl=52 time=211.304 ms 64 bytes from 10.209.1.66: icmp_seq=3 ttl=52 time=210.963 ms ^C --- 10.209.1.66 ping statistics --- 4 packets transmitted, 4 packets received, 0% packet loss round-trip min/avg/max/stddev = 210.963/211.908/212.844/0.792 ms
CLI 프롬프트에서 사용 가능한 명령을 확인합니다.
User2@R1> ? Possible completions: clear Clear information in the system file Perform file operations help Provide help information load Load information from file monitor Show real-time debugging information mtrace Trace multicast path from source to receiver op Invoke an operation script ping Ping remote target quit Exit the management session request Make system-level requests restart Restart software process save Save information to file show Show system information ssh Start secure shell on another host start Start shell telnet Telnet to another host test Perform diagnostic debugging traceroute Trace route to remote host
CLI 프롬프트에서 모든 집합 명령을 실행합니다.
User2@R1> set ^ unknown command.
의미
User2가 할당된 Class2 로그인 클래스는 운영자 수준의 사용자 권한을 가지며 모든 set
명령에 대한 액세스를 거부합니다.
사전 정의된 운영자 로그인 클래스에 지정된 권한 플래그는 Class1에 지정된 것과 동일합니다.
Class3 구성 확인
목적
Class3 로그인 클래스에 허용된 사용 권한 및 명령이 작동하는지 확인합니다.
행동
운영 모드에서 사용 가능한 명령을 확인합니다.
User3@R1> ? Possible completions: configure Manipulate software configuration information
구성 모드로 들어갑니다.
User3@R1> configure Entering configuration mode [edit] User3@R1#
의미
User3이 할당된 Class3 로그인 클래스는 슈퍼유저(모든) 권한을 가지고 있지만 이 클래스는 사용자가 명령만 실행할 수 있도록 configure
합니다. 클래스는 다른 모든 운영 모드 명령에 대한 액세스를 거부합니다. 문에 allow/deny-commands
지정된 정규식이 사용자 권한보다 우선하므로 R1의 User3은 구성 모드에만 액세스할 수 있으며 다른 모든 운영 모드 명령에 대한 액세스가 거부됩니다.
예: 구성 문 및 계층에 대한 액세스 권한으로 사용자 권한 구성
이 예에서는 사용자 정의 로그인 클래스를 구성하고 특정 구성 계층에 액세스 권한을 할당하는 방법을 보여 줍니다. 로그인 클래스의 사용자는 액세스 권한이 있는 구성 문 및 계층만 보고 수정할 수 있습니다. 이렇게 하면 권한이 없는 사용자가 네트워크에 손상을 줄 수 있는 디바이스 구성을 수정할 수 없습니다.
요구 사항
이 예에서 사용되는 하드웨어 및 소프트웨어 구성 요소는 다음과 같습니다.
-
주니퍼 네트웍스 디바이스 1개
-
TACACS+(또는 RADIUS) 서버 1개
시작하기 전에 디바이스와 TACACS+ 서버 간에 TCP 연결을 설정합니다. RADIUS 서버의 경우 디바이스와 RADIUS 서버 간에 UDP 연결을 설정합니다.
개요 및 토폴로지
그림 2 는 간단한 토폴로지를 보여줍니다. 라우터 R1은 주니퍼 네트웍스 디바이스이며 TACACS+ 서버와의 TCP 연결이 설정되어 있습니다.
이 예에서는 두 개의 사용자 지정 로그인 클래스(Class1 및 Class2)로 R1을 구성합니다. 각 클래스는 문을 구성하고 permissions
, deny-configuration
, allow-configuration-regexps
및 deny-configuration-regexps
문을 사용하여 allow-configuration
확장 정규 표현식을 정의함으로써 사용자에 대한 액세스 권한을 정의합니다.
각 로그인 클래스의 목적은 다음과 같습니다.
-
Class1- 및
deny-configuration
문을 사용하여allow-configuration
사용자에 대한 액세스 권한을 정의합니다. 이 로그인 클래스는 계층만[edit interfaces]
구성할 수 있는 액세스 권한을 제공하며 디바이스의 다른 모든 액세스는 거부합니다. 이를 위해 사용자 권한에는 구성 액세스를 제공하는 것이 포함됩니다configure
. 또한 문은allow-configuration
인터페이스 구성에 대한 액세스를 허용하고 문은deny-configuration
다른 모든 구성 계층에 대한 액세스를 거부합니다. 허용문은 거부문보다 우선하므로 Class1 로그인 클래스에 할당된 사용자는 계층 수준에만[edit interfaces]
액세스할 수 있습니다. -
Class2- 및
deny-configuration-regexps
문을 사용하여allow-configuration-regexps
사용자에 대한 액세스 권한을 정의합니다. 이 로그인 클래스는 슈퍼 사용자 수준의 사용자 권한을 제공하며 인터페이스에 대해 여러 계층 수준에서 구성을 명시적으로 허용합니다. 또한 및[edit protocols]
계층 수준에 대한 액세스를 거부합니다[edit system]
.
라우터 R1에는 Class1 및 Class2 로그인 클래스에 각각 할당된 User1과 User2라는 두 명의 사용자가 있습니다.
구성
- CLI 빠른 구성
- 라우터 R1에 대한 인증 매개 변수 구성
- allow-configuration 및 deny-configuration 문(Class1)을 사용하여 액세스 권한 구성
- allow-configuration-regexps 및 deny-configuration-regexps문(클래스 2)을 사용하여 액세스 권한 구성
- 결과
CLI 빠른 구성
이 예를 빠르게 구성하려면, 아래 명령을 복사하여 텍스트 파일로 붙여 넣은 다음 모든 라인브레이크를 제거하고, 네트워크 구성을 일치하는 데 필요한 세부 사항을 변경하고, 계층 수준에서 명령을 [edit]
CLI로 복사해 붙여 넣은 다음, 구성 모드에서 을(를) 입력합니다 commit
.
R1
set system authentication-order tacplus set system authentication-order radius set system authentication-order password set system radius-server 10.209.1.66 secret "$ABC123" set system tacplus-server 10.209.1.66 secret "$ABC123" set system radius-options enhanced-accounting set system tacplus-options enhanced-accounting set system accounting events login set system accounting events change-log set system accounting events interactive-commands set system accounting destination tacplus server 10.209.1.66 secret "$ABC123" set system login class Class1 permissions configure set system login class Class1 allow-configuration "interfaces .* unit .*" set system login class Class1 deny-configuration .* set system login class Class2 permissions all set system login class Class2 allow-configuration-regexps [ "interfaces .* description .*" "interfaces .* unit .* description .*" "interfaces .* unit .* family inet address .*" "interfaces.* disable" ] set system login class Class2 deny-configuration-regexps [ "system" "protocols" ] set system login user User1 uid 2004 set system login user User1 class Class1 set system login user User1 authentication encrypted-password "$ABC123" set system login user User2 uid 2006 set system login user User2 class Class2 set system login user User2 authentication encrypted-password "$ABC123" set system syslog file messages any any
라우터 R1에 대한 인증 매개 변수 구성
단계별 절차
라우터 R1 인증 구성하기:
-
R1이 사용자 인증을 시도하는 순서를 구성합니다. 이 예에서는 먼저 TACACS+ 서버 인증을 사용한 다음 RADIUS 서버 인증을, 그리고 그 다음으로 로컬 암호를 사용합니다.
[edit system] user@R1# set authentication-order tacplus user@R1# set authentication-order radius user@R1# set authentication-order password
-
TACACS+ 서버를 구성합니다.
[edit system] user@R1# set tacplus-server 10.209.1.66 secret "$ABC123" user@R1# set tacplus-options enhanced-accounting user@R1# set accounting destination tacplus server 10.209.1.66 secret "$ABC123"
-
RADIUS 서버를 구성합니다.
[edit system] user@R1# set radius-server 10.209.1.66 secret "$ABC123" user@R1# set radius-options enhanced-accounting
-
R1 계정 매개 변수를 구성합니다.
[edit system] user@R1# set accounting events login user@R1# set accounting events change-log user@R1# set accounting events interactive-commands
allow-configuration 및 deny-configuration 문(Class1)을 사용하여 액세스 권한 구성
단계별 절차
및 deny-configuration
문을 사용하여 allow-configuration
정규식을 지정하려면:
-
권한이 있는
configure
Class1 로그인 클래스를 구성합니다.[edit system login] user@R1# set class Class1 permissions configure
-
allow-configuration
클래스의 사용자가 계층 수준의 일부를[edit interfaces]
보고 수정할 수 있도록 정규식을 구성합니다.[edit system login] user@R1# set class Class1 allow-configuration "interfaces .* unit .*"
-
모든 구성 계층에
deny-configuration
대한 액세스를 거부하도록 정규식을 구성합니다.[edit system login] user@R1# set class Class1 deny-configuration .*
-
Class1 로그인 클래스에 대한 사용자 계정을 구성합니다.
[edit system login] user@R1# set user User1 uid 2004 user@R1# set user User1 class Class1 user@R1# set user User1 authentication encrypted-password "$ABC123"
allow-configuration-regexps 및 deny-configuration-regexps문(클래스 2)을 사용하여 액세스 권한 구성
단계별 절차
및 deny-configuration-regexps
문을 사용하여 allow-configuration-regexps
정규식을 지정하려면:
-
Class2 로그인 클래스를 구성하고 슈퍼 사용자(모든) 권한을 할당합니다.
[edit system login] user@R1# set class Class2 permissions all
-
allow-configuration-regexps
클래스의 사용자가 계층 수준에서 여러 계층[edit interfaces]
에 액세스할 수 있도록 정규식을 구성합니다.[edit system login] user@R1# set class Class2 allow-configuration-regexps [ "interfaces .* description .*" "interfaces .* unit .* description .*" "interfaces .* unit .* family inet address .*" "interfaces.* disable" ]
-
deny-configuration-regexps
클래스의 사용자가 및[edit protocols]
계층 수준에서 구성을[edit system]
보거나 수정할 수 없도록 정규식을 구성합니다.[edit system login] user@R1# set class Class2 deny-configuration-regexps [ "system" "protocols" ]
-
Class2 로그인 클래스에 대한 사용자 계정을 구성합니다.
[edit system login] user@R1# set user User2 uid 2006 user@R1# set user User2 class Class2 user@R1# set user User2 authentication encrypted-password "$ABC123"
결과
구성 모드에서 명령을 입력하여 show system
구성을 확인합니다. 출력에 의도한 구성이 표시되지 않으면 이 예의 지침을 반복하여 구성을 수정하십시오.
user@R1# show system authentication-order [ tacplus radius password ]; radius-server { 10.209.1.66 secret "$ABC123"; } tacplus-server { 10.209.1.66 secret "$ABC123"; } radius-options { enhanced-accounting; } tacplus-options { enhanced-accounting; } accounting { events [ login change-log interactive-commands ]; destination { tacplus { server { 10.209.1.66 secret "$ABC123"; } } } } login { class Class1 { permissions configure; allow-configuration "interfaces .* unit .*"; deny-configuration .*; } class Class2 { permissions all; allow-configuration-regexps [ "interfaces .* description .*" "interfaces .* unit .* description .*" "interfaces .* unit .* family inet address .*" "interfaces.* disable" ]; deny-configuration-regexps [ "system" "protocols" ]; } user User1 { uid 2001; class Class1; authentication { encrypted-password "$ABC123"; } } user User2 { uid 2002; class Class2; authentication { encrypted-password "$ABC123"; } } } syslog { file messages { any any; } }
확인
새 로그인 클래스에 할당된 사용자 이름으로 로그인하고 구성이 제대로 작동하는지 확인합니다.
Class1 구성 확인
목적
Class1 로그인 클래스에 허용된 사용 권한이 작동하는지 확인합니다.
행동
운영 모드에서 사용 가능한 명령을 확인합니다.
User1@R1> ? Possible completions: clear Clear information in the system configure Manipulate software configuration information file Perform file operations help Provide help information load Load information from file op Invoke an operation script quit Exit the management session request Make system-level requests save Save information to file set Set CLI properties, date/time, craft interface message start Start shell test Perform diagnostic debugging
구성 모드에서 사용 가능한 구성 권한을 확인합니다.
User1@R1# edit ? Possible completions: > interfaces Interface configuration
의미
User1은 첫 번째 출력에서 볼 수 있듯이 사용자 권한을 가지고 configure
있습니다. 또한 구성 모드에서 User1은 계층 수준에 액세스할 수 있지만, 두 번째 출력에서 볼 수 있듯이 해당 계층 수준에만 액세스할 interfaces
수 있습니다.
Class2 구성 확인
목적
Class2 구성이 예상대로 작동하는지 확인합니다.
행동
구성 모드에서 구성에 액세스합니다 interfaces
.
[edit interfaces] User2@R1# set ? Possible completions: <interface-name> Interface name + apply-groups Groups from which to inherit configuration data + apply-groups-except Don't inherit configuration data from these groups ge-0/0/3 Interface name > interface-range Interface ranges configuration > interface-set Logical interface set configuration > traceoptions Interface trace options
구성 모드에서 및 protocols
구성 계층에 system
액세스합니다.
User2@R1# edit system ^ Syntax error, expecting <statement> or <identifier>. User2@R1# edit protocols ^ Syntax error, expecting <statement> or <identifier>.
의미
사용자2는 R1에서 인터페이스를 구성할 수 있는 권한이 있지만 또는 [edit protocols]
계층 수준을 보거나 수정할 수 있는 [edit system]
권한이 없습니다.