Junos XML 프로토콜을 사용하여 구성 객체 보호 또는 보호 해제
속성은 protect
선택한 구성 계층 및 문에 대한 변경을 방지합니다. 보호된 요소를 CLI를 통해 수동으로 또는 커밋 스크립트 또는 원격 프로시저 호출을 사용하여 자동으로 변경할 수 없습니다. 보호된 문 또는 보호 계층 내에서 구성을 변경하려고 하면 디바이스가 경고를 발행하고 구성 변경이 실패합니다.
구성 계층 또는 문이 보호되는 경우 사용자는 다음 활동을 수행할 수 없습니다.
-
보호 계층 내의 계층 또는 문 또는 식별자 삭제 또는 수정(보호되지 않은 요소를 포함하는 보호되지 않은 계층의 삭제는 보호되지 않은 모든 하위 요소를 삭제하고 모든 보호된 하위 요소를 보존합니다.)
-
보호되는 계층 내에 새로운 구성 문 또는 식별자 삽입
-
보호된 계층 내의 보호된 문 또는 문 또는 식별자의 이름을 바꿉니다.
-
구성을 보호된 계층으로 복사
-
보호된 계층 내에서 보호된 문 또는 문을 활성화하거나 비활성화합니다.
-
보호된 문 또는 계층 또는 문에 보호된 계층 내에 주석을 추가합니다.
존재하지 않는 구성 문이나 계층을 보호하면 디바이스가 먼저 구성 요소를 생성한 다음 보호합니다. 보호되지 않는 문이나 요소를 보호하지 않으면 아무런 조치도 취하지 않습니다.
구성을 표시할 때 보호된 요소를 식별할 수 있습니다. 표 1 에서는 다양한 형식의 구성 데이터에 대한 보호 요소를 식별하는 방법에 대해 설명합니다.
형식 | 식별자 |
---|---|
구성 모드 명령 |
|
Json |
보호되는 계층 및 문은 속성 목록에 속성을 포함합니다 |
텍스트 |
보호 요소 앞에 |
Xml |
보호 요소의 오프닝 태그에는 속성이 |
사용자 또는 클라이언트 애플리케이션은 구성 개체를 보호하거나 차단하기 위해 구성을 수정할 수 있는 권한이 있어야 합니다.
Junos 디바이스와의 NETCONF 또는 Junos XML 프로토콜 세션에서 구성 요소를 변경으로부터 보호하거나 이전에 보호된 요소를 차단하기 위해 클라이언트 애플리케이션에는 Junos XML 프로토콜을 사용하여 구성 요소 생성, 수정 또는 삭제에 설명된 태그 요소가 먼저 포함됩니다.
Xml
Junos XML 태그 요소를 사용하여 구성을 나타낼 때 클라이언트 애플리케이션은 객체의 오프닝 태그에 또는 unprotect="unprotect"
속성을 포함합니다protect="protect"
. 애플리케이션에는 필요한 식별자 태그 요소가 포함됩니다. 다음 샘플 RPC에서 식별자 태그 요소를 라고 합니다<name>
.
<configuration> <!-- opening tag for each parent of the object --> <object (protect="protect" | unprotect="unprotect")> <name>identifier</name> </object> <!-- closing tag for each parent of the object --> </configuration>
YANG 규격 NETCONF 세션에서 태그 요소에 및 jcmd:protect="(true | false)"
속성을 포함하여 xmlns:jcmd="http://yang.juniper.net/junos/jcmd"
XML 데이터에서 구성 요소를 보호하거나 보호할 수 있습니다. 자세한 내용은 Junos 디바이스의 YANG 메타데이터 주석을 참조하십시오.
텍스트
형식이 지정된 ASCII 텍스트를 사용하여 객체를 보호하거나 보호 해제할 때, 애플리케이션은 적절한 경우 또는 unprotect:
연산자가 있는 요소 protect:
보다 우선합니다. 계층 수준을 보호하고 해당 계층 아래에 추가 하위 요소가 없는 경우 요소 문 후 세미콜론을 추가합니다.
<configuration-text> /* statements for parent levels */ /* For an object with an identifier */ (protect: | unprotect:) object identifier { /* Child configuration statements */ } /* For a hierarchy level or object without an identifier */ (protect: | unprotect:) element { /* Child configuration statements */ } /* closing braces for parent levels */ </configuration-text>
구성 모드(세트) 명령
개체를 보호하기 위해 구성 모드 명령을 사용할 때 애플리케이션은 CLI 구성 모드 명령에 해당하는 또는 unprotect
명령을 지정합니다protect
. 계층 및 개별 문을 모두 보호할 수 있습니다.
<configuration-set> (protect | unprotect) statement-path-to-hierarchy (protect | unprotect) statement-path-to-object object identifier </configuration-set>
Json
구성을 나타내기 위해 JSON 구성 데이터를 사용할 때 클라이언트 애플리케이션은 객체의 속성 목록에 적절한 속성을 포함하여 객체를 보호하거나 보호하지 않습니다. 클라이언트는 개체를 "protect" : true
보호하기 위한 속성을 포함하며 객체를 "protect" : false
보호하지 않는 또는 "unprotect" : true
속성을 포함합니다. 식별자가 있는 개체를 보호하거나 보호 해제하기 위해 클라이언트에는 개체의 식별자도 포함됩니다.
다음의 일반 JSON 구성은 계층, 식별자가 있는 개체 및 리프 문을 보호할 때 속성의 배치를 나타냅니다.
<configuration-json> { "configuration" : { /* JSON objects for parent hierarchies */ "hierarchy" : { "@" : { "comment" : "/* protect a hierarchy */" , "protect" : true }, "object" : [ { "@" : { "comment" : "/* protect an object with an identifier */" , "protect" : true }, "name" : "identifier", "@statement-name" : { "comment" : "/* protect a statement */" , "protect" : true } } ] } /* closing braces for parent hierarchies */ } } </configuration-json>
JSON을 사용하여 표시되는 Junos OS 구성 데이터에서, 및 "unprotect"
속성의 "protect"
값은 소문자로 표현되고 따옴표로 묶지 않은 Boolean 유형입니다.
YANG 규격 NETCONF 세션에서 명령문의 메타데이터 개체에 주석을 포함하여 "junos-configuration-metadata:protect" : (true | false)
JSON 데이터에서 구성 개체를 보호하거나 보호할 수 있습니다. 자세한 내용은 Junos 디바이스의 YANG 메타데이터 주석을 참조하십시오.
다음 예는 Junos XML 태그 요소를 사용하여 구성의 계층 수준을 보호 [edit access]
합니다.
<rpc> <load-configuration> <configuration> <access protect="protect"/> </configuration> </load-configuration> </rpc>
일단 보호되면 계층 수준을 수정 [edit access]
하려는 모든 시도가 경고를 생성합니다. 다음 RPC는 계층 수준을 삭제 [edit access]
하려고 시도합니다. 해당 계층 수준이 보호되므로 서버는 계층이 보호되고 구성 변경이 실패한다는 경고를 반환합니다.
<rpc> <load-configuration> <configuration> <access delete="delete"/> </configuration> </load-configuration> </rpc> <xnm:warning xmlns="http://xml.juniper.net/xnm/1.1/xnm" xmlns:xnm="http://xml.juniper.net/xnm/1.1/xnm"> <message> [access] is protected, 'access' cannot be deleted </message> </xnm:warning>