Add MFA Rules Release Note
Add the release note for MFA Rules. Change-Id: Id4aff9ba57d5b60110df1a7c752950d022ed58ec bp: per-user-auth-plugin-reqs
This commit is contained in:
parent
113055774a
commit
a64b474ef4
@ -0,0 +1,64 @@
|
||||
---
|
||||
features:
|
||||
- |
|
||||
[`blueprint per-user-auth-plugin-reqs <https://blueprints.launchpad.net/keystone/+spec/per-user-auth-plugin-reqs>`_]
|
||||
Per-user Multi-Factor-Auth rules (MFA Rules) have been implemented. These
|
||||
rules define which auth methods can be used (e.g. Password, TOTP) and
|
||||
provides the ability to require multiple auth forms to successfully get
|
||||
a token.
|
||||
|
||||
The MFA rules are set via the user create and update API
|
||||
(``POST/PATCH /v3/users``) call; the options allow an admin to force a user
|
||||
to use specific forms of authentication or combinations of forms of
|
||||
authentication to get a token. The rules are specified as follows::
|
||||
|
||||
user["options"]["multi_factor_auth_rules"] = [["password", "totp"], ["password", "custom-auth-method"]]
|
||||
|
||||
The rules are specified as a list of lists. The elements of the sub-lists
|
||||
must be strings and are intended to mirror the required authentication
|
||||
method names (e.g. ``password``, ``totp``, etc) as defined in the
|
||||
``keystone.conf`` file in the ``[auth] methods`` option.
|
||||
|
||||
Each list of methods specifies a rule. If the auth methods provided by a
|
||||
user match (or exceed) the auth methods in the list, that rule is used.
|
||||
The first rule found (rules will not be processed in a specific order)
|
||||
that matches will be used. If a user has the ruleset defined as
|
||||
``[["password", "totp"]]`` the user must provide both password and totp
|
||||
auth methods (and both methods must succeed) to receive a token. However,
|
||||
if a user has a ruleset defined as ``[["password"], ["password", "totp"]]``
|
||||
the user may use the ``password`` method on it's own but would be required
|
||||
to use both ``password`` and ``totp`` if ``totp`` is specified at all.
|
||||
|
||||
Any auth methods that are not defined in ``keystone.conf`` in the
|
||||
``[auth] methods`` option are ignored when the rules are processed. Empty
|
||||
rules are not allowed. If a rule is empty due to no-valid auth methods
|
||||
existing within it, the rule is discarded at authentication time. If there
|
||||
are no rules or no valid rules for the user, authentication occurs in the
|
||||
default manner: any single configured auth method is sufficient to receive
|
||||
a token.
|
||||
|
||||
In the case a user should be exempt from MFA Rules, regardless if they are
|
||||
set, the User-Option ``multi_factor_auth_enabled`` may be set to
|
||||
``False`` for that user via the user create and update API
|
||||
(``POST/PATCH /v3/users``) call. If this option is set to ``False`` the
|
||||
MFA rules will be ignored for the user. Any other value except ``False``
|
||||
will result in the MFA Rules being processed; the option can only be
|
||||
a boolean (``True`` or ``False``) or "None" (which will result in the
|
||||
default behavior (same as ``True``) but the option will no longer be shown
|
||||
in the ``user["options"]`` dictionary.
|
||||
|
||||
To mark a user exempt from the MFA Rules::
|
||||
|
||||
user["options"]["multi_factor_auth_enabled"] = False
|
||||
|
||||
The ``token`` auth method typically should not be specified in any MFA
|
||||
Rules. The ``token`` auth method will include all previous auth methods
|
||||
for the original auth request and will match the appropriate ruleset. This
|
||||
is intentional, as the ``token`` method is used for rescoping/changing
|
||||
active projects.
|
||||
|
||||
SECURITY INFO: The MFA rules are only processed when authentication happens
|
||||
through the V3 authentication APIs. If V2 Auth is enabled it is possible to
|
||||
circumvent the MFA rules if the user can authenticate via V2 Auth API.
|
||||
It is recommended to disable V2 authentication for full enforcement of
|
||||
the MFA rules.
|
Loading…
Reference in New Issue
Block a user