dellemc.enterprise_sonic.sonic_mfa module – Manage Multi-factor authentication (MFA) configurations on SONiC.
Note
This module is part of the dellemc.enterprise_sonic collection (version 4.1.0).
You might already have this collection installed if you are using the ansible package.
It is not included in ansible-core.
To check whether it is installed, run ansible-galaxy collection list.
To install it, use: ansible-galaxy collection install dellemc.enterprise_sonic.
To use it in a playbook, specify: dellemc.enterprise_sonic.sonic_mfa.
New in dellemc.enterprise_sonic 4.0.0
Synopsis
This module provides configuration management of MFA parameters for devices running SONiC.
Pre-configured host cert is required for MFA security profile, and ca-cert for RSA/CAC-PIV security profiles.
Parameters
Parameter |
Comments |
|---|---|
Specifies MFA configurations. |
|
CAC-PIV Global configuration. |
|
SSH user certificate field for matching with SSH login username. Choices:
|
|
Match option to parse the username from respective certificate field. Choices:
|
|
Security profile for SSH access with CAC-PIV. |
|
MFA Global configuration. |
|
Password used in basic authorization header for MFA REST API. Minimum 32 characters with atleast one symbol, digit, uppercase, and lowercase. Plain text password i.e. client_secret_encrypted=false will be stored in encrypted format in running-config, so idempotency will not be maintained and hence the task output will always be changed=true. |
|
Indicates whether client_secret is plain text or encrypted. Choices:
|
|
Seed for generating secure key in MFA service. Plain text seed i.e. key_seed_encrypted=false will be stored in encrypted format in running-config, so idempotency will not be maintained and hence the task output will always be changed=true. |
|
Indicates whether key_seed is plain text or encrypted. Choices:
|
|
Security profile contains the certificate for MFA service. |
|
RSA Global configuration. |
|
Security profile with CA-cert for validating RSA SecurID server. |
|
RSA Server configuration. |
|
Unique identifier of the system as a client of SecurID service, assigned by SecurID service. |
|
Key associated with the client-id, assigned by SecurID service. Plain text key i.e. client_key_encrypted=false will be stored in encrypted format in running-config, so idempotency will not be maintained and hence the task output will always be changed=true. |
|
Indicates whether client_key is plain text or encrypted. Choices:
|
|
Timeout in seconds for connection to the SecurID server. Range 1-30. |
|
RSA server’s hostname or IP address. |
|
Timeout in seconds to read from the SecurID server. Range 1-150. |
|
Port number of the RSA SecurID server. Range 1025-49151. |
|
The state of the configuration after module completion.
Choices:
|
Examples
# Using "deleted" state
#
# Before state:
# -------------
#
# sonic# show running-configuration mfa
# mfa key-seed U2FsdGVkX1/caD7u0ZGRnb981G2DKyML/Gvyfexsurg= encrypted
# mfa client-secret U2FsdGVkX1+WlquxtZRbsgQhfS1lQBFbJKflxGAp6S3u+Ox5Hi+O16NmprjMVb3HQn1pNSgaaa0Cz1MHeTfDWhFR0WqdENbLU2PqkiRDHv0iVfl72xNPzhnGeO01kAu0 encrypted
# mfa security-profile mSecurityProfile
# mfa rsa-server security-profile rSecProfile
# mfa rsa-server host rsaserver.che-lab.it port 1030 client-id sonicdevtest.che-lab.it client-key
# U2FsdGVkX18QFJoB9dp8GJN92eP79FGOZDLgQakBmAasGYX77p6PtiiAfS/nGoOb2uEocUkryc+BLLYsg+Wz0gO+c1QsIbIhXk5Pt+aECoVgoFQ9QpxO9od9cTik+3Ot encrypted
# connection-timeout 29 read-timeout 149
#
# sonic# show running-configuration | grep "cac-piv"
# aaa cac-piv cert-user common-name
# aaa cac-piv cert-user-match 10digit-username
# aaa cac-piv security-profile cSecurityProfile
# sonic#
- name: Delete specified mfa configuration
dellemc.enterprise_sonic.sonic_mfa:
config:
mfa_global:
key_seed: 'U2FsdGVkX1/caD7u0ZGRnb981G2DKyML/Gvyfexsurg='
key_seed_encrypted: true
client_secret: 'U2FsdGVkX1+WlquxtZRbsgQhfS1lQBFbJKflxGAp6S3u+Ox5Hi+O16NmprjMVb3HQn1pNSgaaa0Cz1MHeTfDWhFR0WqdENbLU2PqkiRDHv0iVfl72xNPzhnGeO01kAu0'
client_secret_encrypted: true
rsa_global:
security_profile: 'rSecProfile'
rsa_servers:
hostname: 'rsaserver.che-lab.it'
server_port: 1030
client_id: 'sonicdevtest.che-lab.it'
client_key: 'U2FsdGVkX18QFJoB9dp8GJN92eP79FGOZDLgQakBmAasGYX77p6PtiiAfS/nGoOb2uEocUkryc+BLLYsg+Wz0gO+c1QsIbIhXk5Pt+aECoVgoFQ9QpxO9od9cTik+3Ot'
client_key_encrypted: true
connection_timeout: 29
read_timeout: 149
cac_piv_global:
security_profile: 'cSecurityProfile'
cert_username_field: 'common-name'
state: deleted
# After state:
# ------------
#
# sonic# show running-configuration mfa
# mfa security-profile mSecurityProfile
#
# sonic# show running-configuration | grep "cac-piv"
# aaa cac-piv cert-user-match 10digit-username
# sonic#
# Using "deleted" state
#
# Before state:
# -------------
#
# sonic# show running-configuration mfa
# mfa key-seed U2FsdGVkX1/caD7u0ZGRnb981G2DKyML/Gvyfexsurg= encrypted
# mfa client-secret U2FsdGVkX1+WlquxtZRbsgQhfS1lQBFbJKflxGAp6S3u+Ox5Hi+O16NmprjMVb3HQn1pNSgaaa0Cz1MHeTfDWhFR0WqdENbLU2PqkiRDHv0iVfl72xNPzhnGeO01kAu0 encrypted
# mfa security-profile mSecurityProfile
# mfa rsa-server security-profile rSecProfile
# mfa rsa-server host rsaserver.che-lab.it port 1030 client-id sonicdevtest.che-lab.it client-key
# U2FsdGVkX18QFJoB9dp8GJN92eP79FGOZDLgQakBmAasGYX77p6PtiiAfS/nGoOb2uEocUkryc+BLLYsg+Wz0gO+c1QsIbIhXk5Pt+aECoVgoFQ9QpxO9od9cTik+3Ot encrypted
# connection-timeout 29 read-timeout 149
#
# sonic# show running-configuration | grep "cac-piv"
# aaa cac-piv cert-user common-name
# aaa cac-piv cert-user-match 10digit-username
# aaa cac-piv security-profile cSecurityProfile
# sonic#
- name: Delete all mfa configurations
dellemc.enterprise_sonic.sonic_mfa:
config:
state: deleted
# After state:
# ------------
#
# sonic# show running-configuration mfa
# sonic#
#
# sonic# show running-configuration | grep "cac-piv"
# sonic#
# Using "merged" state
#
# Before State:
# -------------
#
# sonic# show running-configuration mfa
# sonic#
#
# sonic# show running-configuration | grep "cac-piv"
# sonic#
- name: Merge provided MFA configurations
dellemc.enterprise_sonic.sonic_mfa:
config:
mfa_global:
security_profile: 'mSecurityProfile'
key_seed: 'sonic'
key_seed_encrypted: true
client_secret: 'U2FsdGVkX18mPdwkM1z24i7lxMtqNZR9p2q3aa6YXR16OfDxQXCR9z9I0lQZpVjE!'
client_secret_encrypted: true
rsa_global:
security_profile: 'rSecProfile'
rsa_servers:
hostname: 'rsaserver.che-lab.it'
server_port: 1030
client_id: 'sonicdevtest.che-lab.it'
client_key: 'aplr05825jshusp80699scuv62u5l3lu63wxf66b0y883w92677ac0c9m0lwv6o8'
client_key_encrypted: true
connection_timeout: 29
read_timeout: 149
cac_piv_global:
security_profile: 'cSecurityProfile'
cert_username_field: 'user-principal-name'
cert_username_match: '10digit-username'
state: merged
# After State:
# ------------
#
# sonic# show running-configuration mfa
# mfa key-seed U2FsdGVkX1/caD7u0ZGRnb981G2DKyML/Gvyfexsurg= encrypted
# mfa client-secret U2FsdGVkX1+WlquxtZRbsgQhfS1lQBFbJKflxGAp6S3u+Ox5Hi+O16NmprjMVb3HQn1pNSgaaa0Cz1MHeTfDWhFR0WqdENbLU2PqkiRDHv0iVfl72xNPzhnGeO01kAu0 encrypted
# mfa security-profile mSecurityProfile
# mfa rsa-server security-profile rSecProfile
# mfa rsa-server host rsaserver.che-lab.it port 1030 client-id sonicdevtest.che-lab.it client-key
# U2FsdGVkX18QFJoB9dp8GJN92eP79FGOZDLgQakBmAasGYX77p6PtiiAfS/nGoOb2uEocUkryc+BLLYsg+Wz0gO+c1QsIbIhXk5Pt+aECoVgoFQ9QpxO9od9cTik+3Ot encrypted
# connection-timeout 29 read-timeout 149
#
# sonic# show running-configuration | grep "cac-piv"
# aaa cac-piv cert-user user-principal-name
# aaa cac-piv cert-user-match 10digit-username
# aaa cac-piv security-profile cSecurityProfile
# Using "replaced" state
#
# Before state:
# -------------
#
# sonic# show running-configuration mfa
# mfa key-seed U2FsdGVkX1/caD7u0ZGRnb981G2DKyML/Gvyfexsurg= encrypted
# mfa rsa-server host rsaserver.che-lab.it port 1030 client-id sonicdevtest.che-lab.it client-key
# U2FsdGVkX1+xnsxfUrqCvBQg0KkPUm11R8Vpn2cXLHCWzL59k3Jm4/OrRiMOemPJccnEa8sMuynOAaySpHkaMOePtpedW0aApp+qicIF2Hz32LR4vB07b7OSx7OaEZBj encrypted
# connection-timeout 16 read-timeout 129
- name: Replace specified mfa rsa-server configuration
dellemc.enterprise_sonic.sonic_mfa:
config:
rsa_servers:
- hostname: 'rsaserver.che-lab.it'
server_port: 1050
client_id: 'sonicdevtest.che-lab.it'
client_key: 'aplr05825jshusp80699scuv62u5l3lu63wxf66b0y883w92677ac0c9m0lwv6o8'
client_key_encrypted: true
connection_timeout: 29
read_timeout: 149
state: replaced
# After state:
# ------------
#
# sonic# show running-configuration mfa
# mfa key-seed U2FsdGVkX1/caD7u0ZGRnb981G2DKyML/Gvyfexsurg= encrypted
# mfa rsa-server host rsaserver.che-lab.it port 1050 client-id sonicdevtest.che-lab.it client-key
# U2FsdGVkX1/b1Tjka6pWv1BjwGd1I8cfjXxBIIJ6ZK/JaZpGgPbNAnw6WmdstRWJz49A+bymj6gJfkGjbzlWQhGCGi4VofPStOdNktqDcIyk33AaDkO+awkzyi7HRxcB encrypted
# connection-timeout 29 read-timeout 149
# Using "overridden" state
#
# Before state:
# -------------
#
# sonic# show running-configuration mfa
# mfa key-seed U2FsdGVkX1/caD7u0ZGRnb981G2DKyML/Gvyfexsurg= encrypted
# mfa client-secret U2FsdGVkX1+WlquxtZRbsgQhfS1lQBFbJKflxGAp6S3u+Ox5Hi+O16NmprjMVb3HQn1pNSgaaa0Cz1MHeTfDWhFR0WqdENbLU2PqkiRDHv0iVfl72xNPzhnGeO01kAu0 encrypted
# mfa security-profile mSecurityProfile
# mfa rsa-server security-profile rSecProfile
# mfa rsa-server host sonicrsaserver.che-lab.it port 1030 client-id sonic.che-lab.it client-key
# U2FsdGVkX18QFJoB9dp8GJN92eP79FGOZDLgQakBmAasGYX77p6PtiiAfS/nGoOb2uEocUkryc+BLLYsg+Wz0gO+c1QsIbIhXk5Pt+aECoVgoFQ9QpxO9od9cTik+3Ot encrypted
# connection-timeout 29 read-timeout 149
#
# sonic# show running-configuration | grep "cac-piv"
# aaa cac-piv cert-user user-principal-name
# aaa cac-piv cert-user-match 10digit-username
# aaa cac-piv security-profile cSecurityProfile
- name: Override device configuration of mfa with provided configuration
dellemc.enterprise_sonic.sonic_mfa:
config:
cac_piv_global:
cert_username_match: 'first-name'
state: overridden
# After state:
# ------------
#
# sonic# show running-configuration | grep "cac-piv"
# aaa cac-piv cert-user-match first-name
Return Values
Common return values are documented here, the following are the fields unique to this module:
Key |
Description |
|---|---|
The configuration resulting from module invocation. Returned: when changed |
|
The configuration prior to module invocation. Returned: always |
|
The set of commands pushed to the remote device. Returned: always Sample: |
|
The generated configuration from module invocation. Returned: when |