Adding a Superuser Login
After enabling role-based access control, create your own superuser account and disable or drop the default cassandra
account.
Roles created with the superuser
option have full access to the database;
users with the superuser
role can run any CQL
commands on all database resources.
Only provide superuser roles to a limited number of users.
When using LDAP group management (role_management_options). |
mode: ldap), to prevent unintentional role assignment, set authentication_options. scheme_permissions: true and bind the superuser role to the internal scheme (see Binding a role to an authentication scheme).
The DataStax Enterprise database includes the default role cassandra
with password cassandra
.
The cassandra
role is a superuser login account that has full access to the database.
Requests from the cassandra
account, including login, use a consistency level of QUORUM
.
QUORUM
may cause significant performance degradation in multiple datacenter environments.
For security and performance, DataStax recommends using the cassandra
role only once during initial role-based access control (RBAC) set up to establish your own root account and then disabling or dropping the cassandra
role.
Requests from all other authenticated accounts have a consistency level of LOCAL_ONE. See How is the consistency level configured? for more details. |
Prerequisites
Isolate the DSE cluster and enable RBAC, see Setting up logins and users.
Procedure
-
Log in to
CQL
shell (cqlsh
) with thecassandra
user:cqlsh -u cassandra -p cassandra
-
Create a new
superuser
account with password stored in theCQL
database:CREATE ROLE <root_user_name> WITH SUPERUSER = true AND LOGIN = true AND PASSWORD = '<password>';
or create the new
superuser
account with a hashed password:CREATE ROLE <root_user_name> WITH SUPERUSER = true AND LOGIN = true AND HASHED PASSWORD = '<hashed_password>';
-
Exit
cqlsh
:EXIT;
-
In order to disable or drop the
cassandra
role, log in with the new role created in the previous step:cqlsh -u <root_user>
Enter the password at the prompt.
-
Verify that the role was created as a
superuser
usingLIST ROLES
:LIST ROLES;
role | super | login | options ---------------------+-------+-------+--------- root_user | True | True | {} cassandra | True | True | {} (2 rows)
-
Drop or update the
cassandra
account:-
Drop the
cassandra
account:DROP ROLE cassandra;
-
Update the
cassandra
role by disablingsuperuser
and changing the password:ALTER ROLE cassandra WITH SUPERUSER = false AND LOGIN = false AND PASSWORD='new_secret_pw';
or with a hashed password:
ALTER ROLE cassandra WITH SUPERUSER = false AND LOGIN = false AND HASHED PASSWORD='$2a$10$4N5j5py12OySiSy9L2RHduOjFFetJ1d9hqCoZYtQC3kJOwdg3hbOC';
DataStax recommends dropping the account to secure the database in production environments. When using an external authentication method, such as LDAP, this prevents accidentally assignment with elevated privileges.
-
-
Verify that the
cassandra
role was deleted:LIST ROLES;
Only the roles created in these steps display:
role | super | login | options ---------------------+-------+-------+--------- root_user | True | True | {} (1 rows)
-
Reopen the firewall to support production
CQL
traffic.
What is Next
Set up roles that map to the user or group names for the configured authentication schemes: