Managing object users, roles, and projects
IBM Spectrum Scale for object storage uses the keystone service for identity management. Keystone provides user authentication and authorization processes.
You can use an external Microsoft Active Directory or LDAP server or a local database as the back-end to store and manage user credentials for user authentication. The authorization details such as relation of users with projects and roles are maintained locally by the keystone server. The customer can select the authentication server to be used. For example, if AD is already configured in the environment and the users who need access to the object store are part of AD, then the customer can configure Keystone with AD as the authentication and authorization back-end.
When the back-end authentication server is AD or LDAP, the user management operations such as creating or deleting a user are the responsibility of the AD/LDAP administrator, who can optionally also be the Keystone server administrator. When local authentication is used for object access, the user management operations are done by the Keystone administrator. In case of authorization, the management tasks such as creating roles, projects, and associating the user with them is done by the Keystone Administrator. The Keystone administration can be done through the Keystone V3 REST API or by using an OpenStack python-based client.
- If the cluster is reachable from the system, the OpenStack command can be issued from any system.
- If the OpenStack command is run from any of the protocol nodes, then you can use the openrc file to set the required environment that is used by OpenStack commands to manage the Keystone server. The advantage of using the openrc file is that you are not required to enter the following details every time you enter the commands: --os-identity-api-version, --os-username, --os-password, --os-project-domain-name, --os-user-domain-name, --os-domain-id, and --os-auth-url.
- The user create, update, and delete operations are only applicable when local authentication method is used for object access.
- For more information on the Keystone V3 REST API, see the OpenStack API Documentation (developer.openstack.org/api-ref-identity-v3.html).
Creating a new user
export OS_AUTH_URL="http://cesobjnode:35357/v3"
export OS_IDENTITY_API_VERSION=3
export OS_AUTH_VERSION=3
export OS_USERNAME="admin"
export OS_PASSWORD="Passw0rd"
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=admin
export OS_PROJECT_DOMAIN_NAME=Default
# openstack --os-identity-api-version 3 --os-username admin --os-password
Passw0rd --os-project-domain-name Default --os-user-domain-name Default --osdomain-
id default --os-auth-url http://specscaleswift.example.com:35357/v3 user create --password-prompt
--email newuser1@localdomain.com --domain default newuser1
User Password:
Repeat User Password:
+-----------+------------------------------------------------------------------------------+
| Field | Value |
+-----------+------------------------------------------------------------------------------+
| domain_id | default |
| email | newuser1@localdomain.com |
| enabled | True |
| id | 2a3ef8031359457292274bcd70e34d00 |
| name | newuser1 |
+-----------+------------------------------------------------------------------------------+
GUI navigation
To work with this function in the IBM Spectrum Scale GUI, log on to the GUI and select .
Listing users
# source $HOME/openrc
# openstack user list
+----------------------------------+----------+
| ID | Name |
+----------------------------------+----------+
| 2a3ef8031359457292274bcd70e34d00 | newuser1 |
| a95783144edd414aa236a3d1582a3067 | admin |
+----------------------------------+----------+
Changing the password of a user
# openstack user set --password Passw0rd newuser2
Deleting a user
# openstack user delete newuser2
Listing user roles
# openstack role list
+----------------------------------+-------+
| ID | Name |
+----------------------------------+-------+
| ed38022b46094a51918e6e46f87e7290 | admin |
+----------------------------------+-------+
Creating a new role
- Issue the openstack role create command to create a new user
role:
#openstack role create member +-----------+----------------------------------------------------------+ | Field | Value | +-----------+----------------------------------------------------------+ | domain_id | None | | id | 1f14f95826fe4c8590760b3d3e4ce7e0 | | name | member | +-------+--------------------------------------------------------------+
- Verify the newly created role by using the openstack role list
command:
# openstack role list +----------------------------------+--------+ | ID | Name | +----------------------------------+--------+ | 1f14f95826fe4c8590760b3d3e4ce7e0 | member | | ed38022b46094a51918e6e46f87e7290 | admin | +----------------------------------+--------+
GUI navigation
To work with this function in the IBM Spectrum Scale GUI, log on to the GUI and select .
Assigning a role to a user
- Issue the openstack role add command to assign
role to a user as shown in the following example:
# openstack role add --user newuser1 --domain default member
- Submit the openstack role list command to verify
the user role of the user as shown in the following example:
# openstack role list --user newuser1 +----------------------------------+--------+ | ID | Name | +----------------------------------+--------+ | 1f14f95826fe4c8590760b3d3e4ce7e0 | member | +----------------------------------+--------+
Creating a new project, adding a user, and assigning a role to the user
- Submit the openstack project create command to create a new
project:
# openstack project create newproject +-------------+--------------------------------------------------------------------------+ | Field | Value | +-------------+--------------------------------------------------------------------------+ | description | | | domain_id | default | | enabled | True | | id | 2dfcbdb70b75435fb2015c86d46ffc0b | | is_domain | False | | name | newproject | | parent_id | None | +-------------+--------------------------------------------------------------------------+
- Submit the openstack role add command to add
a role to the user as shown in the following example:
# openstack role add --user newuser1 -- project newproject member # openstack role add --user newuser1 --project newproject admin
- Submit the openstack role list command to list
the user roles as shown in the following example:
# openstack role list --user newuser1 -- project newproject +----------------------------------+--------+------------+----------+ | ID | Name | Project | User | +----------------------------------+--------+------------+----------+ | 1f14f95826fe4c8590760b3d3e4ce7e0 | member | newproject | newuser1 | | ed38022b46094a51918e6e46f87e7290 | admin | newproject | newuser1 | +----------------------------------+--------+------------+----------+
Listing endpoints
# openstack endpoint list
+------------+-----------+--------------+--------------+---------+-----------+---------------------------------------------------------------|
| ID | Region | Service Name | Service Type | Enabled | Interface | URL |
+------------+-----------+--------------+--------------+---------+-----------+---------------------------------------------------------------|
| c36e..9da5 | RegionOne | keystone | identity | True | public | http://specscaleswift.example.com:5000 |
| f4d6..b040 | RegionOne | keystone | identity | True | internal | http://specscaleswift.example.com:35357 |
| d390..0bf6 | RegionOne | keystone | identity | True | admin | http://specscaleswift.example.com:35357 |
| 2e63..f023 | RegionOne | swift | object-store | True | public | http://specscaleswift.example.com:8080/v1/AUTH_%(tenant_id)s |
| cd37..9597 | RegionOne | swift | object-store | True | internal | http://specscaleswift.example.com:8080/v1/AUTH_%(tenant_id)s |
| a349..58ef | RegionOne | swift | object-store | True | admin | http://specscaleswift.example.com:8080 |
+------------+--------+--------------+--------------+---------+-----------+------------------------------------------------------------------|