Ceph user management background
When Ceph runs with authentication and authorization that is enabled, you must specify a username. If a username is not specified, Ceph uses the client.admin administrative user as the default username.
The CEPH_ARGS environment variable may also be used to avoid re-entry of the username and secret.
Irrespective of the type of Ceph client, for example, block device, object store, file system, native API, or the Ceph command line, Ceph stores all data as objects within pools. Ceph users must have access to pools in order to read and write data. Also, administrative Ceph users must have permissions to run Ceph’s administrative commands.
For more information on configuring the use of authentication, see Configuring.
Storage cluster users
A user of the IBM Storage Ceph cluster is either an individual or as an application. Creating users allows you to control who can access the storage cluster, its pools, and the data within those pools.
Ceph has the notion of a type of user. For the purposes of user management, the type is always client. Ceph identifies users in period (.) delimited form consisting of the user type and the user ID. For example, TYPE.ID, client.admin, or client.user1. The reason for user typing is that Ceph Monitors, and OSDs also use the Cephx protocol, but they are not clients. Distinguishing the user type helps to distinguish between client users and other users, streamlining access control, user monitoring, and traceability.
--user or --id, you can omit the type. So client.user1 can be entered, instead, as user1. If you specify --name or -n, you must specify the type and name, such as client.user1. Use the type and name, wherever possible.
Authorization capabilities
DAEMON_TYPE 'allow CAPABILITY' [DAEMON_TYPE 'allow CAPABILITY']
- Monitor Caps
- Monitor capabilities include
r,w,x,allow profile CAP, andprofile rbd.For example:mon 'allow rwx' mon 'allow profile osd' - OSD Caps
- OSD capabilities include
r,w,x,class-read,class-write,profile osd,profile rbd, andprofile rbd-read-only. OSD capabilities also allow for pool and namespace settings.For example:osd 'allow CAPABILITY' [pool=POOL_NAME] [namespace=NAMESPACE_NAME]Note: The Ceph Object Gateway daemon (Table 1 describes each capability.radosgw) is a client of the Ceph storage cluster, so it is not represented as a Ceph storage cluster daemon type.Table 1. OSD Caps capabilities Capability Description allowPrecedes access settings for a daemon.
rGives the user read access. Required with monitors to retrieve the CRUSH map.
wGives the user write access to objects.
xGives the user the capability to call class methods (that is, both read and write) and to conduct
authoperations on monitors.class-readGives the user the capability to call class read methods. Subset of
x.class-writeGives the user the capability to call class write methods. Subset of
x.*Gives the user read, write and run permissions for a particular daemon or pool, and the ability to run admin commands.
profile osdGives a user permissions to connect as an OSD to other OSDs or monitors. Conferred on OSDs to enable OSDs to handle replication heartbeat traffic and status reporting.
profile bootstrap-osdGives a user permissions to bootstrap an OSD so that they have permissions to add keys when bootstrapping an OSD.
profile rbdGives a user read/write access to the Ceph Block Devices.
profile rbd-read-onlyGives a user read-only access to the Ceph Block Devices.
Pool
A pool defines a storage strategy for Ceph clients, and acts as a logical partition for that strategy.
In Ceph deployments, it is common to create a pool to support different types of use cases. For example, cloud volumes or images, object storage, hot storage, cold storage, and so on. When deploying Ceph as a back end for OpenStack, a typical deployment would have pools for volumes, images, backups and virtual machines, and users such as client.glance, client.cinder, and so on.
Namespace
librados. Ceph clients such as block device and object storage do not currently support this feature.The rationale for namespaces is that pools can be a computationally expensive method of segregating data by use case because each pool creates a set of placement groups that get mapped to OSDs. If multiple pools use the same CRUSH hierarchy and ruleset, OSD performance can degrade as load increases.
librados at this time.