Access control for Aerospike on Kubernetes
Enable security
To use Aerospike access control, you must enable security for the Aerospike clusters.
Enable security for your Aerospike clusters in the aerospikeConfig section of the custom resource (CR) file like so:
aerospikeConfig: ...security: {} ...Aerospike Access Control includes user, role, and privilege creation and maintenance. See the Aerospike Database documentation section for more information on Aerospike Access Control.
To manage your access controls from AKO, configure the spec.aerospikeAccessControl section in the Aerospike cluster’s CR file.
Example access control tasks
Create or delete a role
Add a role in the roles list under spec.aerospikeAccessControl.
sys-admin and user-admin are standard predefined roles.
Here we add a new custom role called profiler, which has read privileges.
spec: ... aerospikeAccessControl: roles: - name: profiler privileges: - read users: - name: admin secretName: auth-secret roles: - sys-admin - user-adminTo remove an existing role, delete it from the roles category.
Save and exit the CR file, then use kubectl to apply the change.
kubectl apply -f aerospike-cluster.yamlAdd or remove privileges to a role
Under privileges for a certain role under spec.aerospikeAccessControl, add any additional privileges on new lines.
Here we add read-write to the profiler role.
Remove a privilege from the list under a role to remove the privilege from that role.
spec: ... aerospikeAccessControl: roles: - name: profiler privileges: - read - read-write users: - name: admin secretName: auth-secret roles: - sys-admin - user-adminSave and exit the CR file, then use kubectl to apply the change.
kubectl apply -f aerospike-cluster.yamlPrivilege scope
To scope privileges to a namespace or set, add the following to the profiler role in the roles list under spec.aerospikeAccessControl.
The order of the scope syntax is: privilege.namespace.set.
- To scope a
readprivilege to a namespace calledtest-namespace, add the privilege asread.test-namespace - To scope a
read-writeprivilege to a set calledtest-seton a different namespace calledtest-namespace-1, add the privilege asread-write.test-namespace-1.test-set
spec: ... aerospikeAccessControl: roles: - name: profiler privileges: - read.test-namespace - read-write.test-namespace-1.test-set users: - name: admin secretName: auth-secret roles: - sys-admin - user-adminSave and exit the CR file, then use kubectl to apply the change.
kubectl apply -f aerospike-cluster.yamlCreate or delete a user
Create the secret for the user and add the user in the users list under spec.aerospikeAccessControl.
Create a secret profile-user-secret containing the password for the user profiler by passing the password from the command line:
kubectl -n aerospike create secret generic profile-user-secret --from-literal=password='userpass'Add profileUser user with the profiler role.
spec: ... aerospikeAccessControl: roles: - name: profiler privileges: - read users: - name: profileUser secretName: profile-user-secret roles: - profiler
- name: admin secretName: auth-secret roles: - sys-admin - user-adminTo remove a user, delete the entry from the users category.
Save and exit the CR file, then use kubectl to apply the change.
kubectl apply -f aerospike-cluster.yamlAdd or remove user roles
Add or remove roles in the desired user’s roles list.
Here we add user-admin and sys-admin to the profileUser roles list.
spec: ... aerospikeAccessControl: roles: - name: profiler privileges: - read users: - name: profileUser secretName: profile-user-secret roles: - profiler - user-admin - sys-admin
- name: admin secretName: auth-secret roles: - sys-admin - user-adminSave and exit the CR file, then use kubectl to apply the change.
kubectl apply -f aerospike-cluster.yamlChange a user’s password
Once a secret has been created, it cannot be changed. To change an existing password, create an entirely new secret and assign it to the user in place of the old secret.
Create a new secret new-profile-user-secret containing the password for Aerospike cluster user profileUser by passing the password from the command line:
kubectl -n aerospike create secret generic new-profile-user-secret --from-literal=password='newuserpass'Update the secretName for profileUser to the new secret name new-profile-user-secret.
spec: ... aerospikeAccessControl: roles: - name: profiler privileges: - read users: - name: profileUser secretName: new-profile-user-secret roles: - profiler - user-admin
- name: admin secretName: auth-secret roles: - sys-admin - user-adminSave and exit the CR file, then use kubectl to apply the change.
kubectl apply -f aerospike-cluster.yaml