NACM cleanup, uniform rule function, change of function names, etc.
This commit is contained in:
parent
8bf5cb0de5
commit
1e4022e73c
13 changed files with 180 additions and 247 deletions
39
README.md
39
README.md
|
|
@ -220,35 +220,28 @@ so the clients can in principle fake a username.
|
|||
|
||||
NACM
|
||||
====
|
||||
Clixon includes an experimental Network Configuration Access Control Model (NACM) according to [RFC8341(NACM)](https://tools.ietf.org/html/rfc8341). It has limited functionality.
|
||||
Clixon includes an experimental Network Configuration Access Control Model (NACM) according to [RFC8341(NACM)](https://tools.ietf.org/html/rfc8341).
|
||||
|
||||
The support is as follows:
|
||||
To enable NACM:
|
||||
|
||||
* There is a yang config variable `CLICON_NACM_MODE` to set whether NACM is disabled, uses internal(embedded) NACM configuration, or external configuration. (See yang/clixon-config.yang)
|
||||
* If the mode is internal, NACM configurations is expected to be in the regular configuration, managed by regular candidate/runing/commit procedures. This mode may have some problems with bootstrapping.
|
||||
* The `CLICON_NACM_MODE` config variable is by default `disabled`.
|
||||
* If the mode is internal`, NACM configurations are expected to be in the regular configuration, managed by regular candidate/runing/commit procedures. This mode may have some problems with bootstrapping.
|
||||
* If the mode is `external`, the `CLICON_NACM_FILE` yang config variable contains the name of a separate configuration file containing the NACM configurations. After changes in this file, the backend needs to be restarted.
|
||||
* The [example](example/README.md) contains a http basic auth and a NACM backend callback for mandatory state variables.
|
||||
* There are two [tests](test/README.md) using internal and external NACM config
|
||||
* The backend provides a limited NACM support (when enabled) described below
|
||||
|
||||
NACM is implemented in the backend and a single access check is made
|
||||
in `from_client_msg()` when an internal netconf RPC has
|
||||
just been received and decoded. The code is in `nacm_access()`.
|
||||
The [example](example/README.md) contains a http basic auth and a NACM backend callback for mandatory state variables.
|
||||
|
||||
The functionality is as follows:
|
||||
* Notification is not supported
|
||||
* Groups are supported
|
||||
* Rule-lists are supported
|
||||
* Rules are supported as follows
|
||||
* module-name: fully supported
|
||||
* access-operations: only '*' and 'exec' supported
|
||||
* rpc-name: fully supported (eg edit-config/get-config, etc)
|
||||
* action: fully supported (permit/deny)
|
||||
NACM is implemented in the backend with incoming RPC and data node access control points.
|
||||
|
||||
The tests outlines an example of three groups (taken from the RFC): admin, limited and guest:
|
||||
* admin: Full access
|
||||
* limited: Read access (get and get-config)
|
||||
* guest: No access
|
||||
The functionality is as follows (references to sections in [RFC8341](https://tools.ietf.org/html/rfc8341)):
|
||||
* Access control point support:
|
||||
* Incoming RPC Message validation is supported (3.4.4)
|
||||
* Data Node Access validation is supported (3.4.5), except:
|
||||
* rule-type data-node path is not supported
|
||||
* Outgoing noitification aithorization is _not_ supported (3.4.6)
|
||||
* RPC:s are supported _except_:
|
||||
* `copy-config`for other src/target combinations than running/startup (3.2.6)
|
||||
* `commit` - NACM is applied to candidate and running operations only (3.2.8)
|
||||
* Client-side RPC:s are _not_ supported.
|
||||
|
||||
Runtime
|
||||
=======
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue