General and node management31 — Access Control

Matter Cluster 31 — Access Control

Matter Cluster 31 (0x001F) Access Control: attributes, commands, events, data types, shadow paths and bridge payload examples.

Matter Cluster 31 — Access Control Cluster

Matter Cluster 31, also written as 0x001F, is the Access Control Cluster. The Access Control Cluster exposes a data model view of a Node's Access Control List (ACL), which codifies the rules used to manage and enforce Access Control for the Node's endpoints and their associated cluster instances. Access to this Access Control Cluster itself requires a special Administer privilege level, such that only Nodes granted such privilege (hereafter termed "Administrators") can manage the Access Control Cluster. The Access Control Cluster is present on the root node endpoint of each Node, and must NOT be present on any other Endpoint of any Node.

Cluster Identity

FieldValue
Cluster ID decimal31
Cluster ID hex0x001F
Cluster nameAccess Control
Cluster revision (Matter 1.6.1)3
Roleutility
ScopeNode
PICS codeACL
Typical endpoint0

Revision history

RevisionChange
1Initial revision
2Added Managed Device feature, Extension feature, fixed conformance
3Added Auxiliary feature and AuxiliaryACL attribute

Shadow Path Format

Cluster 31 values in the device shadow use this format:

endpoint_id / 31 / attribute_id

Example:

{
  "0/31/2": 4
}
PartMeaning
0Endpoint ID
31Access Control cluster
2SubjectsPerAccessControlEntry attribute

Cluster 31 Features

The FeatureMap attribute (0/31/65532) is a bitmap. Each bit set means the device implements that feature and the attributes and commands that depend on it.

BitCodeFeatureConformanceMeaning
0EXTSExtensionODevice provides ACL Extension attribute
1MNGDManagedDevicedescDevice is managed
2AUXAuxiliarydescSome auxiliary ACL entries may be auto-generated by other features

Example: FeatureMap = 0 means no optional feature is enabled; 7 means every feature listed above is enabled.


Data Types

AccessControlAuxiliaryTypeEnum

ValueNameConformanceMeaning
0SystemMThis ACL entry exists because of some system reason and is likely non-revocable
1GroupcastMSynthesized via Groupcast Cluster administrator-configured group membership

AccessControlEntryAuthModeEnum

ValueNameConformanceMeaning
1PASEMPasscode authenticated session
2CASEMCertificate authenticated session
3GroupMGroup authenticated session

AccessControlEntryPrivilegeEnum

ValueNameConformanceMeaning
1ViewMCan read and observe all (except Access Control Cluster)
2ProxyViewD—
3OperateMView privileges, and can perform the primary function of this Node (except Access Control Cluster)
4ManageMOperate privileges, and can modify persistent configuration of this Node (except Access Control Cluster)
5AdministerMManage privileges, and can observe and modify the Access Control Cluster

AccessRestrictionTypeEnum

ValueNameConformanceMeaning
0AttributeAccessForbiddenMClients on this fabric are currently forbidden from reading and writing an attribute
1AttributeWriteForbiddenMClients on this fabric are currently forbidden from writing an attribute
2CommandForbiddenMClients on this fabric are currently forbidden from invoking a command
3EventForbiddenMClients on this fabric are currently forbidden from reading an event

ChangeTypeEnum

ValueNameConformanceMeaning
0ChangedMEntry or extension was changed
1AddedMEntry or extension was added
2RemovedMEntry or extension was removed

AccessControlEntryStruct (struct) — fabric-scoped

FieldNameTypeConformanceConstraintMeaning
1PrivilegeAccessControlEntryPrivilegeEnumM—The privilege field specifies the level of privilege granted by this Access Control Entry.
2AuthModeAccessControlEntryAuthModeEnumM—The AuthMode field specifies the authentication mode required by this Access Control Entry.
3Subjectslist of subject-id (nullable)Mmax SubjectsPerAccessControlEntry entriesThe subjects field specifies a list of Subject IDs, to which this Access Control Entry grants access.
4Targetslist of AccessControlTargetStruct (nullable)Mmax TargetsPerAccessControlEntry entriesThe targets field specifies a list of AccessControlTargetStruct, which define the clusters on this Node to which this Access Control Entry grants access.
5AuxiliaryTypeAccessControlAuxiliaryTypeEnumO—This field, if present, indicates the type of AuxiliaryACL entry stored.

AccessControlExtensionStruct (struct) — fabric-scoped

FieldNameTypeConformanceConstraintMeaning
1DataoctstrMmax length 128This field may be used by manufacturers to store arbitrary TLV-encoded data related to a fabric's Access Control Entries.

AccessControlTargetStruct (struct)

FieldNameTypeConformanceConstraintMeaning
0Clustercluster-id (nullable)M——
1Endpointendpoint-no (nullable)M——
2DeviceTypedevtype-id (nullable)M——

AccessRestrictionEntryStruct (struct) — fabric-scoped

This structure describes a current access restriction on the fabric.

FieldNameTypeConformanceConstraintMeaning
0Endpointendpoint-noM—Indicates the endpoint having associated access restrictions scoped to the associated fabric of the list containing the entry.
1Clustercluster-idM—Indicates the cluster having associated access restrictions under the entry's Endpoint, scoped to the associated fabric of the list containing the entry.
2Restrictionslist of AccessRestrictionStructMmin 1 entriesIndicates the set of restrictions applying to the Cluster under the given Endpoint, scoped to the associated fabric of the list containing the entry.

AccessRestrictionStruct (struct)

This structure describes an access restriction that would be applied to a specific data model element on a given endpoint/cluster pair.

FieldNameTypeConformanceConstraintMeaning
0TypeAccessRestrictionTypeEnumM—Indicates the type of restriction, for example, AttributeAccessForbidden.
1IDuint32 (nullable)M——

CommissioningAccessRestrictionEntryStruct (struct)

This structure describes a current access restriction when there is no accessing fabric.

FieldNameTypeConformanceConstraintMeaning
0Endpointendpoint-noM—Indicates the endpoint having associated access restrictions scoped to the associated fabric of the list containing the entry.
1Clustercluster-idM—Indicates the cluster having associated access restrictions under the entry's Endpoint, scoped to the associated fabric of the list containing the entry.
2Restrictionslist of AccessRestrictionStructMmin 1 entriesIndicates the set of restrictions applying to the Cluster under the given Endpoint, scoped to the associated fabric of the list containing the entry.

Cluster 31 Attributes

Cluster 31 defines 8 attributes plus the global attributes. Conformance: M mandatory, O optional, a feature code means "mandatory when that feature is present", square brackets mean "optional when …".

IDHexAttributeTypeConformanceAccessQualitiesDefault
00x0000ACLlist of AccessControlEntryStructMR/W (read: admin, write: admin, fabric-scoped)——
10x0001Extensionlist of AccessControlExtensionStructEXTSR/W (read: admin, write: admin, fabric-scoped)——
20x0002SubjectsPerAccessControlEntryuint16MR (read: view)——
30x0003TargetsPerAccessControlEntryuint16MR (read: view)——
40x0004AccessControlEntriesPerFabricuint16MR (read: view)——
50x0005CommissioningARLlist of CommissioningAccessRestrictionEntryStructMNGDR (read: view)——
60x0006ARLlist of AccessRestrictionEntryStructMNGDR (read: view, fabric-scoped)——
70x0007AuxiliaryACLlist of AccessControlEntryStructAUXR (read: admin, fabric-scoped)change omitted—

Global attributes

IDHexAttributeMeaning
655280xFFF8GeneratedCommandListResponse command IDs this server generates.
655290xFFF9AcceptedCommandListCommand IDs this server accepts.
655310xFFFBAttributeListAttribute IDs implemented.
655320xFFFCFeatureMapImplemented optional features (see above).
655330xFFFDClusterRevisionCluster revision implemented; 3 for a Matter 1.6.1 device.

Attribute Details

Attribute 0 / 0x0000 — ACL

Path example:

0/31/0

No condensed specification text is available for ACL; use the type, conformance and constraint below together with the cluster description above.

PropertyValue
Typelist of AccessControlEntryStruct
ConformanceM
AccessR/W (read: admin, write: admin, fabric-scoped)
Constraintdesc

Each entry is a AccessControlEntryStruct (see Data Types).

Example:

{
  "0/31/0": []
}

Attribute 1 / 0x0001 — Extension

Path example:

0/31/1

If present, the Access Control Extensions may be used by Administrators to store arbitrary data related to fabric's Access Control Entries. The Access Control Extension list must support a single extension entry per supported fabric.

PropertyValue
Typelist of AccessControlExtensionStruct
ConformanceEXTS
AccessR/W (read: admin, write: admin, fabric-scoped)
Constraintdesc

Each entry is a AccessControlExtensionStruct (see Data Types).

Example:

{
  "0/31/1": []
}

Attribute 2 / 0x0002 — SubjectsPerAccessControlEntry

Path example:

0/31/2

This attribute provides the minimum number of Subjects per entry that are supported by this server. Since reducing this value over time may invalidate ACL entries already written, this value must NOT decrease across time as software updates occur that could impact this value. If this is a concern for a given implementation, it is recommended to only use the minimum value required and avoid reporting a higher value than the required minimum.

PropertyValue
Typeuint16
ConformanceM
AccessR (read: view)
Constraint4 to 65534

Example:

{
  "0/31/2": 4
}

Attribute 3 / 0x0003 — TargetsPerAccessControlEntry

Path example:

0/31/3

This attribute provides the minimum number of Targets per entry that are supported by this server. Since reducing this value over time may invalidate ACL entries already written, this value must NOT decrease across time as software updates occur that could impact this value. If this is a concern for a given implementation, it is recommended to only use the minimum value required and avoid reporting a higher value than the required minimum.

PropertyValue
Typeuint16
ConformanceM
AccessR (read: view)
Constraint3 to 65534

Example:

{
  "0/31/3": 3
}

Attribute 4 / 0x0004 — AccessControlEntriesPerFabric

Path example:

0/31/4

This attribute provides the minimum number of ACL Entries per fabric that are supported by this server. Since reducing this value over time may invalidate ACL entries already written, this value must NOT decrease across time as software updates occur that could impact this value. If this is a concern for a given implementation, it is recommended to only use the minimum value required and avoid reporting a higher value than the required minimum.

PropertyValue
Typeuint16
ConformanceM
AccessR (read: view)
Constraint4 to 65534

Example:

{
  "0/31/4": 4
}

Attribute 5 / 0x0005 — CommissioningARL

Path example:

0/31/5

No condensed specification text is available for CommissioningARL; use the type, conformance and constraint below together with the cluster description above.

PropertyValue
Typelist of CommissioningAccessRestrictionEntryStruct
ConformanceMNGD
AccessR (read: view)
Constraintdesc

Each entry is a CommissioningAccessRestrictionEntryStruct (see Data Types).

Example:

{
  "0/31/5": []
}

Attribute 6 / 0x0006 — ARL

Path example:

0/31/6

No condensed specification text is available for ARL; use the type, conformance and constraint below together with the cluster description above.

PropertyValue
Typelist of AccessRestrictionEntryStruct
ConformanceMNGD
AccessR (read: view, fabric-scoped)
Constraintdesc

Each entry is a AccessRestrictionEntryStruct (see Data Types).

Example:

{
  "0/31/6": []
}

Attribute 7 / 0x0007 — AuxiliaryACL

Path example:

0/31/7

No condensed specification text is available for AuxiliaryACL; use the type, conformance and constraint below together with the cluster description above.

PropertyValue
Typelist of AccessControlEntryStruct
ConformanceAUX
AccessR (read: admin, fabric-scoped)
Qualitieschange omitted
Constraintmax 2000 entries

Each entry is a AccessControlEntryStruct (see Data Types).

Example:

{
  "0/31/7": []
}

Cluster 31 Commands

Cluster 31 has 1 client-to-server command and 1 response.

IDHexCommandDirectionConformanceResponseDescription
00x00ReviewFabricRestrictionsclient → serverMNGDReviewFabricRestrictionsResponseThis command signals to the service associated with the device vendor that the fabric administrator would like a review of the current restrictions on the accessing fabric.
10x01ReviewFabricRestrictionsResponseserver → clientMNGD—Returns the review token for the request, which can be used to correlate with a FabricRestrictionReviewUpdate event.

AcceptedCommandList

The AcceptedCommandList attribute lists the command IDs the endpoint actually implements:

endpoint_id / 31 / 65529
{
  "0/31/65529": [
    0
  ]
}

Before sending a Cluster 31 command, check that the command ID exists in endpoint/31/65529. Optional commands are only present when the matching feature is set in FeatureMap.


Bridge Command Payload Format

The bridge accepts Matter commands in this structure:

{
  "message_id": "1",
  "command": "device_command",
  "args": {
    "endpoint_id": 0,
    "cluster_id": 31,
    "command_name": "ReviewFabricRestrictions",
    "payload": {},
    "timed_request_timeout_ms": 1000
  }
}

For Cluster 31, always use "cluster_id": 31. Payload keys are the command field names in lowerCamelCase. Octet-string fields are base64-encoded. timed_request_timeout_ms is required for timed commands and ignored otherwise.


Command: ReviewFabricRestrictions

Purpose

This command signals to the service associated with the device vendor that the fabric administrator would like a review of the current restrictions on the accessing fabric. This command includes an optional list of ARL entries that the fabric administrator would like removed. In response, a ReviewFabricRestrictionsResponse is sent which contains a token that can be used to correlate a review request with a FabricRestrictionReviewUpdate event. Within 1 hour of the ReviewFabricRestrictionsResponse, the FabricRestrictionReviewUpdate event is generated, in order to indicate completion of the review and any additional steps required by the user for the review.

Command Identity

FieldValue
Command ID0
Command hex0x00
Command nameReviewFabricRestrictions
Directionclient → server
ConformanceMNGD
ResponseReviewFabricRestrictionsResponse
Access(invoke: admin, fabric-scoped)

Payload Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0ARLarllist of CommissioningAccessRestrictionEntryStructMdesc—

Bridge Command Example

{
  "message_id": "1",
  "command": "device_command",
  "args": {
    "endpoint_id": 0,
    "cluster_id": 31,
    "command_name": "ReviewFabricRestrictions",
    "payload": {
      "arl": []
    }
  }
}

The device answers with ReviewFabricRestrictionsResponse (see below).


Command: ReviewFabricRestrictionsResponse

Purpose

Returns the review token for the request, which can be used to correlate with a FabricRestrictionReviewUpdate event.

Command Identity

FieldValue
Command ID1
Command hex0x01
Command nameReviewFabricRestrictionsResponse
Directionserver → client (response)
ConformanceMNGD

Response Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0Tokentokenuint64M—This field specifies a Token that can be used to correlate a ReviewFabricRestrictionsResponse with a FabricRestrictionReviewUpdate event.

Cluster 31 Events

IDHexEventPriorityConformanceDescription
00x00AccessControlEntryChangedinfoMThe server must generate AccessControlEntryChanged events whenever its ACL attribute data is changed by an Administrator. - Each added entry must generate an event with ChangeType Added. - Each …
10x01AccessControlExtensionChangedinfoEXTSThe server must generate AccessControlExtensionChanged events whenever its extension attribute data is changed by an Administrator. - Each added extension must generate an event with ChangeType …
20x02FabricRestrictionReviewUpdateinfoMNGDThe server must generate a FabricRestrictionReviewUpdate event to indicate completion of a fabric restriction review.
30x03AuxiliaryAccessUpdatedinfoAUXThe server must generate AuxiliaryAccessUpdated events whenever its AuxiliaryACL attribute data changes due to system management operations.

Event 0 — AccessControlEntryChanged

The server must generate AccessControlEntryChanged events whenever its ACL attribute data is changed by an Administrator. - Each added entry must generate an event with ChangeType Added. - Each changed entry must generate an event with ChangeType Changed. - Each removed entry must generate an event with ChangeType Removed.

IDFieldTypeConformanceMeaning
1AdminNodeIDnode-id (nullable)M—
2AdminPasscodeIDuint16 (nullable)M—
3ChangeTypeChangeTypeEnumMThe type of change as appropriate.
4LatestValueAccessControlEntryStruct (nullable)MThe latest value of the changed entry. This field should be set if resources are adequate for it; otherwise it is set to null if resources are scarce.

Event 1 — AccessControlExtensionChanged

The server must generate AccessControlExtensionChanged events whenever its extension attribute data is changed by an Administrator. - Each added extension must generate an event with ChangeType Added. - Each changed extension must generate an event with ChangeType Changed. - Each removed extension must generate an event with ChangeType Removed.

IDFieldTypeConformanceMeaning
1AdminNodeIDnode-id (nullable)M—
2AdminPasscodeIDuint16 (nullable)M—
3ChangeTypeChangeTypeEnumMThe type of change as appropriate.
4LatestValueAccessControlExtensionStruct (nullable)MThe latest value of the changed extension. This field should be set if resources are adequate for it; otherwise it is set to null if resources are scarce.

Event 2 — FabricRestrictionReviewUpdate

The server must generate a FabricRestrictionReviewUpdate event to indicate completion of a fabric restriction review. Due to the requirement to generate this event within a bound time frame of successful receipt of the ReviewFabricRestrictions command, this event may include additional steps that the client may present to the user in order to help the user locate the user interface for the Managed Device feature.

IDFieldTypeConformanceMeaning
0Tokenuint64MIndicates the Token that can be used to correlate a ReviewFabricRestrictionsResponse with a FabricRestrictionReviewUpdate event.
1InstructionstringOThis field provides human readable text that may be displayed to the user to help them locate the user interface for managing access restrictions for each fabric.
2ARLRequestFlowUrlstringO—

Event 3 — AuxiliaryAccessUpdated

The server must generate AuxiliaryAccessUpdated events whenever its AuxiliaryACL attribute data changes due to system management operations. This event should be generated only once per batch of changes, if many changes are done together. Administrators may use this event to trigger re-evaluation of overall access control currently granted to the node.

IDFieldTypeConformanceMeaning
0AdminNodeIDnode-id (nullable)M—

SmartphoneKey Notes

  • Cluster 31 is present on SmartphoneKey devices or hubs today. See Matter Bridge Clusters — Detailed Reference and Matter Device Attributes & Commands for the values the bridge actually reports.
  • Shadow paths follow endpoint/31/attribute; attribute values that the device reports as unreadable are written as n/a.
  • Attribute IDs, command IDs and enum values on this page come from the CSA Matter 1.6.1 data model; descriptions are condensed from the specification text.