From 0d136d302e775eb1a762c2d5509bc9c0a9a17429 Mon Sep 17 00:00:00 2001 From: Bruce Schultz Date: Thu, 8 Jan 2026 11:27:48 +0100 Subject: [PATCH 1/2] feat(node): add UI RBAC instructions --- src/guide/admin/keycloak-access-control.md | 26 ++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/src/guide/admin/keycloak-access-control.md b/src/guide/admin/keycloak-access-control.md index 4ced1333..b417a606 100644 --- a/src/guide/admin/keycloak-access-control.md +++ b/src/guide/admin/keycloak-access-control.md @@ -16,7 +16,7 @@ keycloak: adminPassword: myDefaultPassword ``` -## Creating a New Admin User +## Access Control Initially, only one user can access the Node UI since only the root user is created in Keycloak during deployment. In order to create another user with the ability to sign in to the Node UI via Keycloak, navigate to the Keycloak console. This can be found by appending `/keycloak` to the end of the domain used for the Node UI e.g. @@ -24,7 +24,7 @@ console. This can be found by appending `/keycloak` to the end of the domain use ### Creating a New User -Login to Keycloak with the `adminUser` and `adminPassword` used during deployment as described in the previous section. +Login to Keycloak with the `adminUser` and `adminPassword` values used during deployment as described in the previous section. Once logged in, change the current realm to the "flame" realm: [![Changing Keycloak Realms](/images/keycloak_images/keycloak_5.png)](/images/keycloak_images/keycloak_5.png) @@ -42,6 +42,27 @@ Your new user page should look similar to this: Click "Create" and the new user will be added, and you will be directed to the "Details" tab for the user. +### Role Based Access Control (RBAC) +Admins may wish to grant certain individuals access to the Node UI, but restrict what they can do. The node software +package allows for Node UI RBAC via the bundled Keycloak instance. Additioanl information on the roles and how to +configure their names can be found in the [Node Installation](/guide/deployment/node-installation#role-based-access-control-rbac) instructions. + +#### Assigning Users a Role +Login to the administrative keycloak console and navigate to the "flame" realm. If you wish to create a new user, follow +the steps in [Creating a New User](#creating-a-new-user), otherwise, click on the user that you wish to assign a role. Navigate +to the "Role Mapping" tab to view the current roles the user has (the default `flameuser` user should have the "admin" role) and +click on the "Assign role" button and then on "Client roles". + +[![Assigning a Role in Keycloak](/images/keycloak_images/keycloak_assigning_role.png)](/images/keycloak_images/keycloak_assigning_role.png) + +In the search box in the top left, search for role which you want to assign the user, either "admin", "researcher", or "steward". +There should be a result with the role name that has a "Client ID" of "node-ui". Checkmark this result and click "Assign". The user +now has this role and the permissions that come with it. + +::: info Role Names +If you modified the names of the roles during deployment in your `values.yaml` file, then you will see those names here instead. +::: + ### Setting a Temporary Password Finally, a temporary password must be set for the new administrator for their first login attempt. Click on the @@ -74,3 +95,4 @@ Admins can configure the FLAME software to use a separate IDP (i.e. different Ke useful when you already have an instance with your users and roles configured. This needs to be done during installation and instructions on how to achieve this can be found [here](/guide/deployment/node-installation#using-your-own-idp). + From 070e01168c8cf0640e9febf6cf98c9bc3dc902cd Mon Sep 17 00:00:00 2001 From: Bruce Schultz Date: Thu, 8 Jan 2026 11:28:24 +0100 Subject: [PATCH 2/2] chore(node): add image of keycloak RBAC --- src/guide/deployment/node-installation.md | 58 ++++++++++++++++++ .../keycloak_assigning_role.png | Bin 0 -> 48271 bytes 2 files changed, 58 insertions(+) create mode 100644 src/public/images/keycloak_images/keycloak_assigning_role.png diff --git a/src/guide/deployment/node-installation.md b/src/guide/deployment/node-installation.md index 9da756d6..5627655f 100644 --- a/src/guide/deployment/node-installation.md +++ b/src/guide/deployment/node-installation.md @@ -94,6 +94,37 @@ all generated and configured within this included IDP. If you wish to your own I Adapter and the Node UI will have to be created and their secrets set in the values template. See the [Using Your Own IDP](#using-your-own-idp) section for more information. +#### Role Based Access Control (RBAC) +The node software package supports restricting the actions of certain users with access to the Node UI via RBAC. A +user can have one of three roles with the following names and permissions: +* **steward**: can modify/create data stores, but cannot start/stop/delete analyses or view their logs +* **researcher**: can start/stop/delete analyses and view their logs, but cannot modify data stores +* **admin**: full access + +The included Keycloak instance includes these roles by default, and the initially created `flameuser` is given the "admin" role. +The names of these roles can be modified in your `my-values.yaml`, and these changes will be reflected in Keycloak as well: + +```yaml +rbac: + roleClaimName: "resource_access.node-ui.roles" + adminRole: "admin" + stewardRole: "steward" + researcherRole: "researcher" +``` + +::: warning Role Claim Name +The `roleClaimName` value is specific for how the role is defined in the JWT provided by the bundled Keycloak, and +should not be modified. This only ever needs to be changed if you are [using your own IDP](#using-your-own-idp). +::: + +See the [Access Control](/guide/admin/keycloak-access-control#access-control) section of the documentation for more information +on how to create users and assign them specific roles. + +::: info Disabling RBAC +If you have no need for RBAC, it can be disabled by setting `roleClaimName` to an empty string (`""`). +::: + + ### Using Your Own IDP For better security, this software uses Keycloak for authenticating the various services and users that make up FLAME. @@ -107,6 +138,33 @@ clients as this information along with the (accessible) URL for your IDP must be An example of how to configure this in for your cluster can be seen in this separate IDP example. +#### RBAC +Admins using their own IDP who also wish to utilize RBAC for the Node UI will need to configure the roles using +their IDP's documentation. Once a the role is created and assigned to a user, the `roleClaimName` value needs to +be modified so that the role can be extracted from the JWT provided by the IDP. The `roleClaimName` value should +contain the keys leading to the role value in the decrypted JWT, with each hierarchical level separated by a +period ("."). + +In this example: +```json +{ + "sub": "1234567890", + "name": "John Doe", + "iat": 1516239022, + "access_control": { + "node-ui-client": { + "user-defined-roles": [ + "steward" + ] + } + }, + "scope": "openid email profile", + "email_verified": true +} +``` +the `roleClaimName` should be changed to `"access_control.node-ui-client.user-defined-roles"`. + + ## Installation At this point, you should have a custom values file (e.g. `my-values.yaml`) which contains the robot credentials and private key for your node. If you have all of this information, then you can proceed with deploying the FLAME Node by diff --git a/src/public/images/keycloak_images/keycloak_assigning_role.png b/src/public/images/keycloak_images/keycloak_assigning_role.png new file mode 100644 index 0000000000000000000000000000000000000000..ca60c8bfd995f906c306d651e74d4b6dcfe4e0b7 GIT binary patch literal 48271 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 C2?xml literal 0 HcmV?d00001