rfc-2265

View-based Access Control Model (VACM) for the Simple Network Management Protocol (SNMP)

B. Wijnen, R. Presuhn, K. McCloghrie
date1998-01 streamIETF areaops wgsnmpv3 statusPROPOSED STANDARD pages36 canonicalhttps://www.rfc-editor.org/rfc/rfc2265 doi10.17487/RFC2265
This document describes the View-based Access Control Model for use in the SNMP architecture [RFC2261]. It defines the Elements of Procedure for controlling access to management information. This document also includes a MIB for remotely managing the configuration parameters for the View-based Access Control Model. [STANDARDS-TRACK]

obsoleted by

Extracted elements (24)

design-rationale §A.1

Appendix A prescribes three installation security configurations (initial-minimum-security, initial-semi-security, initial-no-access) to let operators choose a tradeoff between out-of-box manageability and initial access restriction.

snmp, security

design-rationale §2.4

The ViewTreeFamily bitmask mechanism was introduced because specifying all columns of a single MIB table row (each in a separate subtree) would require an impractically large number of individual subtree entries; the mask aggregates them into one structure.

snmp

interoperability-note §4

For securityLevel noAuthNoPriv, all groups are functionally equivalent because the assumption that securityName has been authenticated does not hold. The vacmAccessTable note explicitly flags this for implementors.

snmp, security

normative-requirement §7.3 MUST

A conformant implementation MUST implement the SNMP-VIEW-BASED-ACM-MIB and SHOULD implement the initial configuration described in Appendix A.

snmp

normative-requirement §4 MUST

If an implementation receives a create request for an instance-level access control entry but does not support instance-level granularity, it MUST return an inconsistentName error.

snmp

normative-requirement §3.2 MUST

The isAccessAllowed procedure MUST execute five steps in order: (1) check vacmContextTable for contextName; (2) look up groupName in vacmSecurityToGroupTable; (3) look up access entry in vacmAccessTable; (4) select view name by viewType, returning noSuchView if the view name is empty; (5) check variableName membership in the view.

snmp, security

normative-requirement §4 MUST

The vacmContextTable MUST be made accessible via the default context so that Command Responder applications have a standard way of retrieving the list of available contexts.

snmp

normative-requirement §4 MUST

When multiple vacmAccessTable entries match a request, selection proceeds by: (a) prefer entries with an identical securityModel over 'any'; (b) prefer entries with an exact contextPrefix match; (c) prefer the longest matching contextPrefix; (d) select the entry with the highest securityLevel.

snmp

normative-requirement §4 MUST

When multiple vacmViewTreeFamilyTable entries match an OID, the entry whose vacmViewTreeFamilySubtree has the most sub-identifiers determines inclusion or exclusion. Ties are broken by the lexicographically greatest value of vacmViewTreeFamilyType.

snmp

protocol-element §2.1

A group is a set of zero or more (securityModel, securityName) tuples sharing identical access rights. The combination of securityModel and securityName maps to at most one groupName, looked up via the vacmSecurityToGroupTable.

snmp, security

protocol-element §2.4.2

A ViewTreeFamily pairs an OBJECT IDENTIFIER (family name) with a bitmask (family mask). An OID belongs to the family if it has at least as many sub-identifiers as the family name and each sub-identifier matches where the corresponding mask bit is 1; mask bit 0 is a wildcard.

snmp

protocol-element §2.5

An access policy entry (vacmAccessEntry) is indexed by groupName, contextPrefix, securityModel, and securityLevel and contains three view references: vacmAccessReadViewName, vacmAccessWriteViewName, and vacmAccessNotifyViewName, any of which may be the empty string (no access).

snmp, security

protocol-element §2.2

securityLevel defines three access tiers: noAuthNoPriv, authNoPriv, and authPriv. VACM uses securityLevel as an input to the access-control check and as an index in the vacmAccessTable, with higher levels granting more privileged access.

snmp, security

protocol-element §3

The isAccessAllowed abstract service primitive takes securityModel, securityName, securityLevel, viewType (read/write/notify), contextName, and variableName as inputs and returns one of: accessAllowed, notInView, noSuchView, noSuchContext, noGroupName, noAccessEntry, or otherError.

snmp, security

protocol-element §4

vacmAccessTable is indexed by (vacmGroupName, vacmAccessContextPrefix, vacmAccessSecurityModel, vacmAccessSecurityLevel). vacmAccessContextMatch selects either exact(1) or prefix(2) matching of the contextName against vacmAccessContextPrefix.

snmp

protocol-element §4

vacmContextTable lists locally available SNMP contexts by contextName (SnmpAdminString SIZE 0..32). It is read-only and cannot be configured via SNMP; the empty string represents the default context.

snmp

protocol-element §4

vacmSecurityToGroupTable maps (vacmSecurityModel, vacmSecurityName) to vacmGroupName. The index vacmSecurityModel MUST NOT be 0 (the 'any' value). Entries carry RowStatus and StorageType columns for lifecycle management.

snmp

protocol-element §4

vacmViewSpinLock is a TestAndIncr advisory lock used to coordinate concurrent SNMP Command Generators when creating or modifying views. Its use is not enforced; implementations rely on cooperating managers to consult it.

snmp

protocol-element §4

vacmViewTreeFamilyTable stores included and excluded subtree families for each named MIB view, indexed by (vacmViewTreeFamilyViewName, vacmViewTreeFamilySubtree). vacmViewTreeFamilyType is either included(1) or excluded(2).

snmp

registry §4

This document defines the SNMP-VIEW-BASED-ACM-MIB MODULE-IDENTITY at OID snmpModules 5 (1.3.6.1.6.3.16), including vacmContextTable, vacmSecurityToGroupTable, vacmAccessTable, vacmViewTreeFamilyTable, and associated conformance objects.

snmp, registry

security-consideration §7.2

The vacmSecurityToGroupTable does not factor in securityLevel. Administrators must use the securityLevel index in vacmAccessTable to prevent noAuthNoPriv principals from gaining the same access as authPriv principals.

snmp, security

security-consideration §7.1

VACM assumes the calling module has already enforced authentication and privacy as specified by the passed securityLevel; VACM itself performs no authentication. The securityName is treated as already authenticated.

snmp, security

security-consideration §7.1

When creating entries in vacmViewTreeFamilyTable, excluded entries SHOULD be created before included entries. When deleting, included entries SHOULD be deleted before excluded entries. Reversing this order can transiently grant unwanted access.

snmp, security

wire-format §4

vacmViewTreeFamilyMask is an OCTET STRING of SIZE 0..16. The most significant bit of the i-th octet corresponds to the (8i−7)-th sub-identifier of vacmViewTreeFamilySubtree; '1' requires exact match, '0' is wildcard. If the mask is shorter than the subtree OID, it is implicitly extended with 1s.

snmp