-
Notifications
You must be signed in to change notification settings - Fork 81
ABAC #2728
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: dev
Are you sure you want to change the base?
ABAC #2728
Conversation
| [[attribute-based-access-control]] | ||
| = Attribute-based access control | ||
|
|
||
| Attribute-based access control, ABAC grants roles based on the evaluation of attributes (or claims) contained in a user's authentication token. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| Attribute-based access control, ABAC grants roles based on the evaluation of attributes (or claims) contained in a user's authentication token. | |
| Attribute-based access control (ABAC) grants roles based on the evaluation of attributes (or claims) contained in a user's authentication token. |
We could subsequently use "ABAC" throughout?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
hmm, do we want to? Yes, if we want people to call it ABAC. No if we want to be clear and use the full name (I hate to stop reading and look up what an acronym stands for).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yes perhaps I am thinking more of how easy it is to keep writing, rather than the readers experience. It would not hurt at all to leave it as Attribute-based access control. I had a look and this is also more consistent with what we do for the other *BACs 😄
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
do we write it out for the other ones?
| Use the following steps to set up attribute-based access control: | ||
|
|
||
| 1. Enable attribute-based access control in the `neo4j.conf` file by setting the `internal.dbms.feature_flag.attribute_based_access_control` setting to `true`. | ||
| 2. Specify which OIDC provider will be used for attribute-based access control by setting the `internal.dbms.security.abac_enabled_authorization_providers` setting to the appropriate providers. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| 2. Specify which OIDC provider will be used for attribute-based access control by setting the `internal.dbms.security.abac_enabled_authorization_providers` setting to the appropriate providers. | |
| 2. Specify which OIDC provider(s) will be used for attribute-based access control by setting the `internal.dbms.security.abac_enabled_authorization_providers` setting to the appropriate providers. |
|
|
||
| [NOTE] | ||
| ==== | ||
| No roles with associated deny privileges can be assigned using attribute-based access control. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| No roles with associated deny privileges can be assigned using attribute-based access control. | |
| No roles with associated deny privileges can be assigned using attribute-based access control. This is to ensure that if a role is unexpectedly not fulfilled (e.g. because a claim is missing from the users auth token) then there can never be an escalation of privileges, only ever a reduction. |
| == Caveats and limitations | ||
|
|
||
| * When evaluating `abac.oidc.user_attribute('<claim_key>')`, if the claim does not exist in the authentication token, it will evaluate to `NULL`. | ||
| * Newly created auth rules are not applied to existing user sessions. Users must re-authenticate to have the new rules applied. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| * Newly created auth rules are not applied to existing user sessions. Users must re-authenticate to have the new rules applied. | |
| * Newly created auth rules are applied to existing user sessions, but will only have access to the user claims which had rules containing them at the start of the session. So only user claims which are used in pre-existing auth rules at the start of a session are retained. Users must re-authenticate to have new rules applied if the new rules use new claims. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Applied this, but removed the "So" from " So only user claims..."
| * When evaluating `abac.oidc.user_attribute('<claim_key>')`, if the claim does not exist in the authentication token, it will evaluate to `NULL`. | ||
| * Newly created auth rules are not applied to existing user sessions. Users must re-authenticate to have the new rules applied. | ||
| * Attribute-based access control is only supported for OIDC authentication providers. | ||
| * For troubleshooting ABAC evaluation, enable debug logging for the security log and turn on JWT claims logging at debug level in `neo4j.conf`: `dbms.security.logs.oidc.jwt_claims_at_debug_level_enabled=true` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| * For troubleshooting ABAC evaluation, enable debug logging for the security log and turn on JWT claims logging at debug level in `neo4j.conf`: `dbms.security.logs.oidc.jwt_claims_at_debug_level_enabled=true` | |
| * For troubleshooting ABAC evaluation, enable debug logging for the security log and debug log, and turn on JWT claims logging at debug level in `neo4j.conf`: `dbms.security.logs.oidc.jwt_claims_at_debug_level_enabled=true` |
modules/ROOT/pages/authentication-authorization/attribute-based-access-control.adoc
Show resolved
Hide resolved
|
This PR includes documentation updates New pages: Updated pages: |
No description provided.