Server Group#
AAA → SGServer Groups
A ServerGroup defines a list of AAA (authentication, authorization, and accounting) servers used for remote authentication and accounting and includes settings for RADIUS and TACACS+ servers. Each ServerGroup is limited to servers of a single type: either RADIUS or TACACS+.
Server type
The type field determines the protocol used by all servers in the group (RADIUS or TACACS). Type-specific options are configured under radius (e.g. authentication port, accounting port, retransmit attempts) or tacacs (e.g. port, privilege-level authorization).
The routerKind field specifies which router is used to reach the AAA servers (DefaultRouter or ManagementRouter). The node waits for a response from an AAA server according to timeoutSeconds before retrying or continuing to the next server in the group.
Deployment#
Each node can use multiple methods for the authentication of users. Some common scenarios are:
- Attempt to authenticate using a local user first. If no local user is found, try authentication using RADIUS
- Local authentication is used only when the TACACS+ authentication servers are unresponsive
A ServerGroup is deployed onto nodes where it is used for authentication. Those nodes are determined by AuthenticationPolicy resources via its nodeSelectors or nodes property: any AuthenticationPolicy that lists a ServerGroup by name in authenticationOrder.serverGroupOrder will ensure the ServerGroup is configured on those nodes.
The ServerGroup also specifies which NodeGroup resources must be deployed on the same set of nodes, using nodeGroupSelectors or nodeGroups (an explicit list of NodeGroup names).
flowchart LR
AuthenticationPolicy -->|Selects| ServerGroup
AuthenticationPolicy -->|Selects| TopoNodes
ServerGroup -->|Selects| NodeGroup
NodeGroup -->|Deployed on| TopoNodes Referenced resources#
NodeGroup#
Part of the authentication process is assigning a role to a user. This role determines which services the user can use (SSH, gNMI, ...) and which resources the user can read / modify. These authorization rules are determined by a NodeGroup.
The ServerGroup allows the selection of NodeGroup resources through the nodeGroups or nodeGroupSelectors property, to ensure that those authorization rules are present on the node even if they are not used by a locally configured NodeUser.
Examples#
cat << 'EOF' | kubectl apply -f -
apiVersion: aaa.eda.nokia.com/v1
kind: ServerGroup
metadata:
name: my-radius-servers
namespace: eda
spec:
aaaServers:
- address: 214.1.1.2
secret: testing123
nodeGroups:
- cli-access
- sudo
radius:
accountingPort: 1813
authenticationPort: 1812
routerKind: ManagementRouter
type: RADIUS
EOF
Custom Resource Definition#
To browse the Custom Resource Definition go to crd.eda.dev.
ServerGroup
SPEC
The ServerGroup defines a list of AAA servers to be used for authentication, authorization, and accounting. It includes settings for both Radius and Tacacs servers, although each ServerGroup is limited to servers of a single type. The ServerGroup is deployed onto nodes using the label selector.
-
Label selector for NodeGroup resources to deploy on the node for this ServerGroup.
-
Which NodeGroup resources to deploy on the node for this ServerGroup.
-
Kind of the router used to reach the AAA servers.
enum: "DefaultRouter", "ManagementRouter" -
Timeout in seconds that the node will wait for a response from the AAA server before retrying or continuing to the next server in the group.
range: 1 to 90 -
Select the type of all servers in the ServerGroup. Can either be Radius or Tacacs.
enum: "RADIUS", "TACACS"
STATUS
ServerGroupStatus defines the observed state of ServerGroup.
-
Indicates the health score of the ServerGroup. The health score of the ServerGroup is determined by the aggregate health score of all servers in this group on all nodes.
-
Indicates the reason for the health score.
-
The time when the state of the resource last changed.
-
List of nodes this ServerGroup has been applied to
-
Operational state of the ServerGroup. The operational state of the ServerGroup is determined by monitoring the operational state of all servers in this group on all nodes.
enum: "Up", "Down", "Degraded", "Unknown"