rfc-6536

Network Configuration Protocol (NETCONF) Access Control Model

A. Bierman, M. Bjorklund
date2012-03 streamIETF areaops wgnetconf statusPROPOSED STANDARD pages49 canonicalhttps://www.rfc-editor.org/rfc/rfc6536 doi10.17487/RFC6536 errataview
The standardization of network configuration interfaces for use with the Network Configuration Protocol (NETCONF) requires a structured and secure operating environment that promotes human usability and multi-vendor interoperability. There is a need for standard mechanisms to restrict NETCONF protocol access for particular users to a pre-configured subset of all available NETCONF protocol operations and content. This document defines such an access control model. [STANDARDS-TRACK]

obsoleted by

Extracted elements (30)

design-rationale §3.2.2

For <get> and <get-config>, inaccessible data nodes are silently omitted from the reply rather than generating an access-denied error. This allows NETCONF subtree and XPath filters to function correctly against the authorized subset of the datastore, rather than failing when filter criteria span unauthorized nodes.

netconf, security

design-rationale §2.8

Machine-readable YANG extension statements (nacm:default-deny-write and nacm:default-deny-all) were introduced to eliminate a window of vulnerability between loading a new data model and manually configuring access control rules; tools can automatically deny access to sensitive data without administrator intervention.

netconf, yang, security

design-rationale §2.1

NACM provides three separate access control points — protocol operation invocation, datastore data node access, and notification delivery — because NETCONF allows new protocol operations to be added at any time via YANG, making a static operation-only ACM insufficient for comprehensive protection.

netconf, security, yang

design-rationale §3.2.4

The <copy-config> operation from running to startup requires only exec permission (no per-node checks), because copying between these two standard datastores is a common administrative operation and the data already exists in the running datastore. All other copy-config operations require per-node CRUDX checks.

netconf, security

interoperability-note §3.4.2

NACM access control is applied only after session establishment is completed and the NETCONF <hello> exchange has been successfully completed. Access control for descendant nodes within a notification event type is not separately controllable; if the event type is authorized, all contained data is also authorized.

netconf, security

interoperability-note §3.2

NACM controls only the standard NETCONF datastores (candidate, running, and startup). Local or remote files and datastores accessed via the <url> parameter are not controlled by NACM.

netconf

normative-requirement §3.4.3 MUST NOT

A server MUST NOT include any information the client is not allowed to read in any <error-info> elements within the <rpc-error> response generated for an access-denied condition.

netconf, security

normative-requirement §3.2.5 MUST

Access to the <delete-config> protocol operation is denied by default; the exec-default leaf does not apply to it, and explicit access control rules must be configured to allow invocation by non-recovery sessions.

netconf, security

normative-requirement §3.2.8 MUST

Access to the <kill-session> protocol operation is denied by default; the exec-default leaf does not apply to it, and explicit access control rules must be configured to allow invocation by non-recovery sessions.

netconf, security

normative-requirement §3.2.6 MUST

For the <commit> operation, the server MUST determine the exact nodes in the running configuration datastore that are actually different and only check create, update, and delete access permissions for that delta set.

netconf, security

normative-requirement §3.4.4 MUST

If a datastore is accessed directly or as a side effect of a protocol operation, the server MUST intercept the access operation and verify the user is authorized to perform the requested CRUDX operation on the specified data node as defined in the data node access validation procedure.

netconf, security

normative-requirement §3.2.3 MUST NOT

The contents of specific restricted datastore nodes MUST NOT be exposed in any <rpc-error> elements within the reply; this applies to the <edit-config> operation and any operation that accesses the datastore.

netconf, security

normative-requirement §3.4.4 MUST

The server MUST separately authorize every protocol operation by executing a 12-step procedure: checking enable-nacm, recovery session status, close-session exemption, group membership (including external groups if enabled), ordered rule-list and rule matching, default-deny-all extension check, kill-session/delete-config implicit denial, and exec-default fallback.

netconf, security

normative-requirement §3.4 MUST

The server MUST use the access control rules in effect at the time it starts processing a message, and the same rules MUST stay in effect for the entire duration of that message's processing.

netconf, security

normative-requirement §3.4.1 MUST NOT

Upon the very first startup, if NACM configuration is absent, a server MUST NOT allow any write access to any session role except a recovery session. Access control is not enforced for server-initiated access during bootup.

netconf, security

protocol-element §3.3.1

Access control is granted to sessions by group membership, not directly to individual users. The groups container maps usernames to named groups; a user may belong to multiple groups. Transport-layer-reported group names (e.g., from RADIUS) may optionally supplement locally configured groups.

netconf, security

protocol-element §3.3.4

Five global enforcement controls govern NACM behavior: enable-nacm (master on/off, default true), read-default (permit/deny for reads with no matching rule, default permit), write-default (default deny), exec-default (default permit), and enable-external-groups (whether transport-layer group names are used, default true).

netconf, security

protocol-element §3.2.1

NACM defines five CRUDX access operations: Create (add a new data node instance), Read (retrieve a data node value or receive a notification), Update (alter an existing data node), Delete (remove a data node), and eXec (execute a protocol operation).

netconf, security

protocol-element §3.3.5

NACM defines four rule types: module rule (controls all content in a named YANG module), protocol-operation rule (controls a specific RPC identified by module and name), data-node rule (controls access by XPath instance identifier path), and notification rule (controls a specific notification event type).

netconf, yang, security

protocol-element §3.5.2

The nacm:default-deny-all YANG extension marks a node as controlling a very sensitive security parameter; when NACM is enabled, only a recovery session has any access (read, write, or execute) by default. It may appear in data definition, rpc, or notification statements.

netconf, yang, security

protocol-element §3.5.2

The nacm:default-deny-write YANG extension marks a data model node as a sensitive security parameter; when NACM is enabled, only a recovery session has write access by default, requiring an explicit access control rule for all other users.

netconf, yang, security

protocol-element §3.3.3

The server MAY support an emergency recovery session that bypasses all NACM enforcement; its configuration and identification are implementation-specific and out of scope. It is intended for initializing or repairing broken NACM configuration.

netconf, security

protocol-element §3.5.1

Three read-only operational counters track enforcement activity since last restart: denied-operations (RPC authorization failures), denied-data-writes (datastore write denials), and denied-notifications (notifications dropped due to access denial). All are yang:zero-based-counter32 values.

netconf, security

registry §3.6

This document registers URI 'urn:ietf:params:xml:ns:yang:ietf-netconf-acm' in the IETF XML Registry (RFC 3688), and registers module name 'ietf-netconf-acm' with prefix 'nacm' in the YANG Module Names registry (RFC 6020).

netconf, yang, registry

security-consideration §3.7.2

A session can perform a denial-of-service attack by locking the datastore without requiring write access, using <lock>, <unlock>, <partial-lock>, or <partial-unlock>. Administrators may wish to explicitly restrict exec access to these operations in NACM rules.

netconf, security

security-consideration §3.7.2

'Fishing' attacks allow a session with some write access but no read access to a sensitive subtree to determine the presence or absence of sensitive data by repeatedly issuing edit requests and observing whether access-denied errors are returned, even without the error-path field being present in the response.

netconf, security

security-consideration §3.7.1

When external group names from the transport layer (e.g., RADIUS) are used and the transport does not protect against man-in-the-middle attacks, an attacker could inject group names configured in NACM, granting a user more permissions than intended. Administrators should set /nacm/enable-external-groups to 'false' when using such protocols.

netconf, security

state-machine §3.4.5

Data node access authorization is a 12-step ordered procedure: permit if NACM disabled or recovery session; collect user's groups; match ordered rule-lists and rules on module-name, data-node path, and CRUDX access-operations bits; apply action; check nacm:default-deny-all (for read/write) and nacm:default-deny-write (for write); apply read-default or write-default fallback. Denied reads silently omit the node from the reply.

netconf, security

state-machine §3.4.4

Incoming RPC authorization is a 12-step ordered procedure: (1) permit if NACM disabled; (2) permit if recovery session; (3) permit close-session; (4) collect user's groups; (5-8) match ordered rule-lists and rules on module-name, rule-type (protocol-operation), and exec access-operations bit; (9) no rule found; (10) deny if default-deny-all present; (11) deny kill-session or delete-config; (12) apply exec-default fallback.

netconf, security

state-machine §3.4.6

Outgoing notification authorization is an 11-step procedure: permit if NACM disabled or recovery session; permit replayComplete/notificationComplete events; collect user's groups; match ordered rule-lists and notification rules on module-name, notification-name, and read access-operations bit; apply action (drop notification if denied); check default-deny-all; apply read-default fallback.

netconf, security