Security: Authentication, Authorization, Encryption, and Audit
This domain tests locking down access: authentication, authorization, transport and internode encryption, and audit visibility.
Authentication and authorization
- authenticator controls login. AllowAllAuthenticator disables auth; PasswordAuthenticator uses Cassandra internal system_auth tables. authorizer: CassandraAuthorizer enables role-based permissions; AllowAllAuthorizer grants everything.
- Default installs may ship cassandra/cassandra; change it immediately and remove anonymous or default roles. Roles can LOGIN, be granted other roles, and receive GRANT SELECT or INSERT on keyspace.table.
- system_auth must have RF >= 3 and be repaired; otherwise auth outages follow node loss. In multi-DC, use NetworkTopologyStrategy.
- Enable JMX authentication and SSL and restrict port 7199; do not expose 9042 publicly without TLS and authentication.
Encryption and audit
- Internode encryption uses server_encryption_options with keystore, truststore, and internode_encryption set to all, dc, or rack. Client encryption uses client_encryption_options with enabled true and optional require_client_auth.
- Apache Cassandra does not provide native transparent data-at-rest encryption in all versions; use OS or volume encryption unless a vendor feature is confirmed. Cassandra 4.x audit logging can record login and CQL activity via audit_logging_options; verify logger and categories for your version.
Worked example
Create an ops role with LOGIN=true and a password; GRANT SELECT ON app.events TO ops; set system_auth RF=3, run repair, then test with cqlsh -u ops. If authentication fails after a node restart, check system_auth RF and repair status before changing authenticators.
Traps
Leaving default credentials; setting system_auth RF=1; granting ALL broadly; enabling client TLS without updating drivers; and assuming SSL alone provides authorization.