The module lifecycle stage: Generally available version
The module has requirements for installation
Authentication types and their configuration
Deckhouse Optics provides various authentication methods to ensure secure access to the system.
The following authentication options are available::
- Email-Password — a standard authentication method where users log in using their email and password. This method is enabled by default.
- External Authentication — authentication method for instance that prefer to use their existing identity management systems. Deckhouse Optics provides authentication through external sources, the following methods are supported:
- OIDC (OpenID Connect) — a modern authentication standard based on the OAuth 2.0 protocol.
- LDAP/Active Directory using Dex — integration with corporate LDAP or Active Directory directories using Dex as an intermediary. Integration requires additional configuration on the Deckhouse Kubernetes Platform’s side.
- API token — authentication method for interaction with the system via API. This type of authentication is always enabled.
The authentication method is selected using the ui.auth.mode ModuleConfig parameter of the observability-platform during system installation. When using external authentication (ui.auth.mode: externalAuth), additional role mapping configuration is required.
The user role model
A user is an account in the system that has various access rights to different entities within the system. Users interact with the system through the web interface only.
5 types of roles are provided for a user:
- Super Administrator
- Auditor — read-only Super Administrator, assigned only at the Global level
- Admin
- User
- Viewer
Table of composition of user role rights:
| Entity | Super Administrator | Admin | User | Auditor | Viewer |
|---|---|---|---|---|---|
| Project | |||||
| Dashboards | Full access | Full access | Full access | Read-only | Read-only |
| Data Overview | Full access | Full access | Full access | Read-only | Read-only |
| Alerts | Full access | Full access | Read-only | Read-only | Read-only |
| Triggers | Full access | Full access | Full access | Read-only | Read-only |
| Notification Rules | Full access | Full access | Full access | Read-only | Read-only |
| Outages | Full access | Full access | Full access | Read-only | Read-only |
| Trigers | Full access | Full access | Full access | Read-only | Read-only |
| Record Rules | Full access | Full access | Full access | Read-only | Read-only |
| Silences | Full access | Full access | Full access | Read-only | Read-only |
| Delivery Rules | Full access | Full access | Full access | Read-only | Read-only |
| Usage Statistics | Read-only | Read-only | Read-only | Read-only | Read-only |
| API Tokens | Full access | Full access | No access | Read-only | No access |
| Members | Full access | Full access | Read-only | Read-only | Read-only |
| Integrations | Read-only | Read-only | Read-only | Read-only | No access |
| Datasources | Full access | Full access | No access | Read-only | No access |
| Settings | Full access | Read-only | No access | Read-only | No access |
| Metric Limits | Full access | Read-only | Read-only | Read-only | Read-only |
| Log Limits | Full access | Read-only | Read-only | Read-only | Read-only |
| Trace Limits | Full access | Read-only | Read-only | Read-only | Read-only |
| Delete Project | Full access | Full access | No access | Read-only | No access |
| Space | |||||
| Usage Statistics | Read-only | Read-only | Read-only | Read-only | Read-only |
| Members | Full access | Full access | Read-only | Read-only | Read-only |
| API Tokens | Full access | Full access | No access | Read-only | No access |
| Settings | Full access | Read-only | No access | Read-only | No access |
| Create Project | Full access | Full access | No access | Read-only | No access |
| Delete Project | Full access | Full access | No access | Read-only | No access |
| Entire System | |||||
| Dashboards | Full access | Read-only | Read-only | Read-only | Read-only |
| Record Rules | Full access | Full access | Full access | Read-only | Read-only |
| Notification Channels | Full access | Full access | Read-only | Read-only | Read-only |
| Triggers | Full access | Read-only | Read-only | Read-only | Read-only |
| Usage Statistics | Read-only | Read-only | Read-only | Read-only | Read-only |
| Members | Full access | Full access | Read-only | Read-only | Read-only |
| API Tokens | Full access | Full access | No access | Read-only | No access |
| Create Project | Full access | Full access | No access | Read-only | No access |
| Delete Project | Full access | Full access | No access | Read-only | No access |
| Create Space | Full access | Full access | No access | Read-only | No access |
| Delete Space | Full access | Full access | No access | Read-only | No access |
| Settings | Full access | Read-only | No access | Read-only | No access |
| System Settings | |||||
| General Settings | Full access | No access | No access | Read-only | No access |
| Basic Metric Limits | Full access | No access | No access | Read-only | No access |
| Basic Log Limits | Full access | No access | No access | Read-only | No access |
| Basic Trace Limits | Full access | No access | No access | Read-only | No access |
| Role Mapping | Full access | No access | No access | Read-only | No access |
| Members | Full access | No access | No access | Read-only | No access |
| Monitoring Agents | Full access | No access | No access | Read-only | No access |
| Clusters | Full access | No access | No access | Read-only | No access |
| Audit Logs | Full access | No access | No access | Read-only | No access |
All project members (Viewer, User, Admin) see the project limits. Only the Super Administrator changes the project limits and the limit template that new projects receive.
External authentication
Enabling external authentication
External authentication allows Deckhouse Optics users to use accounts from external systems to log in. To configure the feature, follow these steps:
-
Set the mapping for the Super Administrator role:
- Go to “System settings” → “Role mappings”.
- Click “Add Role Mapping”.
- Fill in the fields:
- Group name — the identifier of the external group (e.g., “super-administrator”).
- Object type — select “Global”.
- Role — select “Super Administrator”.
- Confirm your choice by clicking “Save”.
-
Enable external authorization:
-
If using Dex, preliminary configuration of dexProvider is required.
-
If OIDC is enabled, configure oidc settings in the ui.authModuleConfig
observability-platform.An example:
kubectl patch ModuleConfig observability-platform --type=merge -p <<- 'EOT' { "spec": { "settings": { "ui": { "auth": { "mode": "externalAuth", "provider": "dex", "issuer": "https://dex.dop.example.com", "groupsParamName": "groups" } } } } } EOTYou can find more information about the configuration parameters in the documentation.
-
Enable external authorization using the command:
kubectl patch ModuleConfig observability-platform --type=merge -p <<- 'EOT' { "spec": { "settings": { "ui": { "auth": { "mode": "externalAuth" } } } } } EOT
-
When these steps are complete, the system will be ready for using external authentication.
Setting up role mapping
Follow the steps below to set up role mapping:
- Go to “System settings” → “Role mappings”.
- Click “Add Role Mapping”:
- Group name — the name of the group from the external system (e.g., “admins”).
- Object type — one of three: “Global” (the entire system), “Space”, “Project”.
- Parent object — the space of the project (for “Project” only).
- Object name — the name of the space or project (for “Space” and “Project”).
- Role — “Super Administrator” or “Auditor” (for “Global” only), “Admin”, “User”, “Viewer”.
- Click “Save”.
When a user signs in through external authentication, their roles are exactly the ones the mapping gives for their groups. Roles not given by the mapping, including roles assigned manually, are removed at sign-in.
If several of the user’s groups match mappings for the same object, the senior role wins. Admin is senior to User, and User is senior to Viewer. At the Global level, Super Administrator is senior to every other role, and Auditor is senior to User and Viewer.
API tokens role model
API token is an account in the system that has various access rights to different entities within the system. It interacts with the system exclusively through the API.
A token can be bind to a global scope, space(s) or project(s).
A multitenant API token is a token whose scope is a workspace, an instance, or several projects at once. Multitenant tokens are limited to the ability to only read monitoring data from the selected scope.
| Rights | Description | Multitenant |
|---|---|---|
| Metrics: read | Allows to read project(s) metrincs | yes |
| Metrics: write | Allows to write project metrics | no |
| Logs: read | Allows to read project(s) logs | yes |
| Logs: write | Allows to write project logs | no |
| Traces: read | Allows to read project(s) traces | yes |
| Traces: write | Allows to write project traces | no |
| Spaces control | Allows to perform spaces API calls | yes |
| Projects control | Allows to perform projects API calls | yes |
| Rules control | Allows to perform triggers and recording rules API calls | yes |
| Dashboards control | Allows to perform dashboard API calls | yes |
| Notifications control | Allows to perform notification channels and delivery rules API calls | yes |
| Site monitoring | Allows to manage monitoring sites via API | yes |
Control tokens (Spaces control, Projects control, Rules control etc) not allowed to have Metrics, Logs, or Traces rights.