11 Manage users and roles on the command line #
This section describes how to manage user accounts used by the Ceph Dashboard. It helps you create or modify user accounts, as well as set proper user roles and permissions.
11.1 Managing the password policy #
By default the password policy feature is enabled including the following checks:
Is the password longer than N characters?
Are the old and new password the same?
The password policy feature can be switched on or off completely:
cephuser@adm >
ceph dashboard set-pwd-policy-enabled true|false
The following individual checks can be switched on or off:
cephuser@adm >
ceph dashboard set-pwd-policy-check-length-enabled true|falsecephuser@adm >
ceph dashboard set-pwd-policy-check-oldpwd-enabled true|falsecephuser@adm >
ceph dashboard set-pwd-policy-check-username-enabled true|falsecephuser@adm >
ceph dashboard set-pwd-policy-check-exclusion-list-enabled true|falsecephuser@adm >
ceph dashboard set-pwd-policy-check-complexity-enabled true|falsecephuser@adm >
ceph dashboard set-pwd-policy-check-sequential-chars-enabled true|falsecephuser@adm >
ceph dashboard set-pwd-policy-check-repetitive-chars-enabled true|false
In addition, the following options are available to configure the password policy behaviour.
The minimum password length (defaults to 8):
cephuser@adm >
ceph dashboard set-pwd-policy-min-length NThe minimum password complexity (defaults to 10):
cephuser@adm >
ceph dashboard set-pwd-policy-min-complexity NThe password complexity is calculated by classifying each character in the password.
A list of comma-separated words that are not allowed to be used in a password:
cephuser@adm >
ceph dashboard set-pwd-policy-exclusion-list word[,...]
11.2 Managing user accounts #
The Ceph Dashboard supports managing multiple user accounts. Each user account
consists of a user name, a password (stored in encrypted form using
bcrypt
), an optional name, and an optional e-mail
address.
User accounts are stored in Ceph Monitor's configuration database and are shared globally across all Ceph Manager instances.
Use the following commands to manage user accounts:
- Show existing users:
cephuser@adm >
ceph dashboard ac-user-show [USERNAME]- Create a new user:
cephuser@adm >
ceph dashboard ac-user-create USERNAME -i [PASSWORD_FILE] [ROLENAME] [NAME] [EMAIL]- Delete a user:
cephuser@adm >
ceph dashboard ac-user-delete USERNAME- Change a user's password:
cephuser@adm >
ceph dashboard ac-user-set-password USERNAME -i PASSWORD_FILE- Modify a user's name and email:
cephuser@adm >
ceph dashboard ac-user-set-info USERNAME NAME EMAIL- Disable user
cephuser@adm >
ceph dashboard ac-user-disable USERNAME- Enable User
cephuser@adm >
ceph dashboard ac-user-enable USERNAME
11.3 User roles and permissions #
This section describes what security scopes you can assign to a user role, how to manage user roles and assign them to user accounts.
11.3.1 Defining security scopes #
User accounts are associated with a set of roles that define which parts of the dashboard can be accessed by the user. The dashboard parts are grouped within a security scope. Security scopes are predefined and static. The following security scopes are currently available:
- hosts
Includes all features related to the
menu entry.- config-opt
Includes all features related to the management of Ceph configuration options.
- pool
Includes all features related to pool management.
- osd
Includes all features related to the Ceph OSD management.
- monitor
Includes all features related to the Ceph Monitor management.
- rbd-image
Includes all features related to the RADOS Block Device image management.
- rbd-mirroring
Includes all features related to the RADOS Block Device mirroring management.
- iscsi
Includes all features related to iSCSI management.
- rgw
Includes all features related to the Object Gateway management.
- cephfs
Includes all features related to CephFS management.
- manager
Includes all features related to the Ceph Manager management.
- log
Includes all features related to Ceph logs management.
- grafana
Includes all features related to the Grafana proxy.
- prometheus
Include all features related to Prometheus alert management.
- dashboard-settings
Allows changing dashboard settings.
11.3.2 Specifying user roles #
A role specifies a set of mappings between a security scope and a set of permissions. There are four types of permissions: 'read', 'create', 'update', and 'delete'.
The following example specifies a role where a user has 'read' and 'create' permissions for features related to pool management, and has full permissions for features related to RBD image management:
{ 'role': 'my_new_role', 'description': 'My new role', 'scopes_permissions': { 'pool': ['read', 'create'], 'rbd-image': ['read', 'create', 'update', 'delete'] } }
The dashboard already provides a set of predefined roles that we call system roles. You can instantly use them after a fresh Ceph Dashboard installation:
- administrator
Provides full permissions for all security scopes.
- read-only
Provides read permission for all security scopes except the dashboard settings.
- block-manager
Provides full permissions for 'rbd-image', 'rbd-mirroring', and 'iscsi' scopes.
- rgw-manager
Provides full permissions for the 'rgw' scope.
- cluster-manager
Provides full permissions for the 'hosts', 'osd', 'monitor', 'manager', and 'config-opt' scopes.
- pool-manager
Provides full permissions for the 'pool' scope.
- cephfs-manager
Provides full permissions for the 'cephfs' scope.
11.3.2.1 Managing custom roles #
You can create new user roles by using the following commands:
- Create a new role:
cephuser@adm >
ceph dashboard ac-role-create ROLENAME [DESCRIPTION]- Delete a role:
cephuser@adm >
ceph dashboard ac-role-delete ROLENAME- Add scope permissions to a role:
cephuser@adm >
ceph dashboard ac-role-add-scope-perms ROLENAME SCOPENAME PERMISSION [PERMISSION...]- Delete scope permissions from a role:
cephuser@adm >
ceph dashboard ac-role-del-perms ROLENAME SCOPENAME
11.3.2.2 Assigning roles to user accounts #
Use the following commands to assign roles to users:
- Set user roles:
cephuser@adm >
ceph dashboard ac-user-set-roles USERNAME ROLENAME [ROLENAME ...]- Add additional roles to a user:
cephuser@adm >
ceph dashboard ac-user-add-roles USERNAME ROLENAME [ROLENAME ...]- Delete roles from a user:
cephuser@adm >
ceph dashboard ac-user-del-roles USERNAME ROLENAME [ROLENAME ...]
If you create custom user roles and intend to remove the Ceph cluster
with the ceph.purge
runner later on, you need to purge
the custom roles first. Find more details in
Section 13.9, “Removing an entire Ceph cluster”.
11.3.2.3 Example: Creating a user and a custom role #
This section illustrates a procedure for creating a user account capable of managing RBD images, viewing and creating Ceph pools, and having read-only access to any other scopes.
Create a new user named
tux
:cephuser@adm >
ceph dashboard ac-user-create tux PASSWORDCreate a role and specify scope permissions:
cephuser@adm >
ceph dashboard ac-role-create rbd/pool-managercephuser@adm >
ceph dashboard ac-role-add-scope-perms rbd/pool-manager \ rbd-image read create update deletecephuser@adm >
ceph dashboard ac-role-add-scope-perms rbd/pool-manager pool read createAssociate the roles with the
tux
user:cephuser@adm >
ceph dashboard ac-user-set-roles tux rbd/pool-manager read-only
11.4 Proxy configuration #
If you want to establish a fixed URL to reach the Ceph Dashboard or if you do
not want to allow direct connections to the manager nodes, you can set up a
proxy that automatically forwards incoming requests to the currently active
ceph-mgr
instance.
11.4.1 Accessing the dashboard with reverse proxies #
If you are accessing the dashboard via a reverse proxy configuration, you
may need to service it under a URL prefix. To get the dashboard to use
hyperlinks that include your prefix, you can set the
url_prefix
setting:
cephuser@adm >
ceph config set mgr mgr/dashboard/url_prefix URL_PREFIX
Then you can access the dashboard at
http://HOST_NAME:PORT_NUMBER/URL_PREFIX/
.
11.4.2 Disabling re-directions #
If the Ceph Dashboard is behind a load-balancing proxy such as HAProxy,
disable the redirection behaviour to prevent situations where the internal
(unresolvable) URLs are published to the front-end client. Use the
following command to get the dashboard to respond with an HTTP error
(500
by default) instead of redirecting to the active
dashboard:
cephuser@adm >
ceph config set mgr mgr/dashboard/standby_behaviour "error"
To reset the setting to the default redirection behaviour, use the following command:
cephuser@adm >
ceph config set mgr mgr/dashboard/standby_behaviour "redirect"
11.4.3 Configuring error status codes #
If the redirection behaviour is disabled, then you should customize the HTTP status code of standby dashboards. To do so, run the following command:
cephuser@adm >
ceph config set mgr mgr/dashboard/standby_error_status_code 503
11.4.4 HAProxy example configuration #
The following example configuration is for TLS/SSL pass through using HAProxy.
The configuration works under the following conditions: If the dashboard
fails over, the front-end client might receive an HTTP redirect
(303
) response and will be redirected to an
unresolvable host.
This happens when the failover occurs during two HAProxy health checks. In this situation the previously active dashboard node will now respond with a 303 which points to the new active node. To prevent that situation you should consider disabling the redirection behaviour on standby nodes.
defaults log global option log-health-checks timeout connect 5s timeout client 50s timeout server 450s frontend dashboard_front mode http bind *:80 option httplog redirect scheme https code 301 if !{ ssl_fc } frontend dashboard_front_ssl mode tcp bind *:443 option tcplog default_backend dashboard_back_ssl backend dashboard_back_ssl mode tcp option httpchk GET / http-check expect status 200 server x HOST:PORT ssl check verify none server y HOST:PORT ssl check verify none server z HOST:PORT ssl check verify none
11.5 Auditing API requests #
The Ceph Dashboard's REST API can log PUT, POST, and DELETE requests to the Ceph audit log. Logging is disabled by default, but you can enable it with the following command:
cephuser@adm >
ceph dashboard set-audit-api-enabled true
If enabled, the following parameters are logged per each request:
- from
The origin of the request, for example 'https://[::1]:44410'.
- path
The REST API path, for example
/api/auth
.- method
'PUT', 'POST', or 'DELETE'.
- user
The name of the user (or ‘None’).
An example log entry looks like this:
2019-02-06 10:33:01.302514 mgr.x [INF] [DASHBOARD] \ from='https://[::ffff:127.0.0.1]:37022' path='/api/rgw/user/exu' method='PUT' \ user='admin' params='{"max_buckets": "1000", "display_name": "Example User", "uid": "exu", "suspended": "0", "email": "user@example.com"}'
The logging of the request payload (the list of arguments and their values) is enabled by default. You can disable it as follows:
cephuser@adm >
ceph dashboard set-audit-api-log-payload false
11.6 Configuring NFS Ganesha in the Ceph Dashboard #
Ceph Dashboard can manage NFS Ganesha exports that use CephFS or Object Gateway as their backstore. The dashboard manages NFS Ganesha configuration files stored in RADOS objects on the CephFS cluster. NFS Ganesha must store part of their configuration in the Ceph cluster.
Run the following command to configure the NFS Ganesha configuration object's location:
cephuser@adm >
ceph dashboard set-ganesha-clusters-rados-pool-namespace pool_name[/namespace]
You can now manage NFS Ganesha exports using the Ceph Dashboard.
11.6.1 Configuring multiple NFS Ganesha clusters #
The Ceph Dashboard supports the management of NFS Ganesha exports belonging to different NFS Ganesha clusters. We recommend each NFS Ganesha cluster store its configuration objects in a different RADOS pool/namespace to isolate the configurations from each other.
Use the following command to specify the locations of the configuration of each NFS Ganesha cluster:
cephuser@adm >
ceph dashboard set-ganesha-clusters-rados-pool-namespace cluster_id:pool_name[/namespace](,cluster_id:pool_name[/namespace])*
The cluster_id is an arbitrary string that uniquely identifies the NFS Ganesha cluster.
When configuring the Ceph Dashboard with multiple NFS Ganesha clusters, the Web UI automatically allows you to choose to which cluster an export belongs.
11.7 Debugging plugins #
Ceph Dashboard plugins extend the functionality of the dashboard. The debug plugin allows the customization of the behaviour of the dashboard according to the debug mode. It can be enabled, disabled, or checked with the following command:
cephuser@adm >
ceph dashboard debug status Debug: 'disabled'cephuser@adm >
ceph dashboard debug enable Debug: 'enabled'cephuser@adm >
dashboard debug disable Debug: 'disabled'
By default, this is disabled. This is the recommended setting for production deployments. If required, debug mode can be enabled without need of restarting.