Skip to content

AxonOps — AI-Native Control Plane for Open Source Data Platforms

Cassandra CQL Security

CQL provides two categories of security features for controlling access to data: Role-Based Access Control (RBAC) for managing authentication and authorization, and Dynamic Data Masking (DDM) for protecting sensitive column data.


Cassandra’s security model has evolved significantly since its early releases, progressing from basic pluggable authentication to a comprehensive role-based system with fine-grained data protection.

VersionYearFeatureReference
0.62010Pluggable authentication framework (IAuthenticator)CASSANDRA-547
1.22012CQL-based authentication (CREATE USER, GRANT), system_auth keyspace-
2.22015Role-based access control (RBAC), CREATE ROLE replaces CREATE USERCASSANDRA-7653
2.22015Auth subsystem rework (SASL, caching, UDF permissions)CASSANDRA-8394
4.12022CQLSH authentication plugin supportCEP-16
5.02024Dynamic Data Masking (DDM)CEP-20, CASSANDRA-17940
5.02024Mutual TLS authentication (MutualTlsAuthenticator)CEP-34, CASSANDRA-18554
EraVersionsModelKey Components
Thrift0.6 – 1.1File-basedSimpleAuthenticator, properties files
CQL Users1.2 – 2.1User-basedPasswordAuthenticator, CassandraAuthorizer, system_auth keyspace, CREATE USER
RBAC2.2 – 4.xRole-basedCREATE ROLE, role inheritance, UDF permissions, SASL
Enhanced5.0+Role + maskingDynamic Data Masking, mTLS, SPIFFE identities, ADD IDENTITY

The evolution reflects several architectural principles:

  1. Pluggability - All components (authenticator, authorizer, role manager) are pluggable interfaces
  2. CQL Integration - Security management through CQL statements rather than configuration files
  3. Role Unification - Cassandra 2.2 unified users and groups into a single “role” concept
  4. Backward Compatibility - CREATE USER syntax remains functional, internally creating roles
  5. Permission Granularity - Progressive addition of resource types (keyspaces, tables, functions, MBeans)

FeatureDescriptionVersionReference
Role-Based Access ControlRoles, permissions, and grants2.2+CASSANDRA-7653
Dynamic Data MaskingColumn-level data obfuscation5.0+CEP-20

RBAC controls who can access what resources through roles and permissions.

Key concepts:

  • Roles - Represent users (with login) or permission groups (without login)
  • Permissions - Actions allowed on resources (SELECT, MODIFY, CREATE, etc.)
  • Grants - Associate permissions with roles, or roles with other roles

Commands:

CommandPurpose
CREATE ROLECreate user or permission group
ALTER ROLEModify role properties
DROP ROLERemove a role
GRANTAssign permissions or role membership
REVOKERemove permissions or role membership
LIST ROLESDisplay roles
LIST PERMISSIONSDisplay permission grants

See Role-Based Access Control for syntax and examples.


DDM automatically obfuscates sensitive column data at read time based on user permissions.

Key concepts:

  • Masking functions - Transform column values (mask_inner, mask_hash, etc.)
  • UNMASK permission - Allows viewing original unmasked data
  • SELECT_MASKED permission - Allows querying tables with masked columns

Built-in masking functions:

FunctionEffect
mask_null()Replace with null
mask_default()Replace with type default
mask_replace(value)Replace with constant
mask_inner(prefix, suffix)Mask inner characters
mask_outer(prefix, suffix)Mask outer characters
mask_hash([algorithm])Replace with hash

See Dynamic Data Masking for syntax and examples.


Both RBAC and DDM require configuration in cassandra.yaml:

# RBAC (required for role-based security)
authenticator: PasswordAuthenticator
authorizer: CassandraAuthorizer
role_manager: CassandraRoleManager
# DDM (optional, Cassandra 5.0+)
dynamic_data_masking_enabled: true

For detailed configuration guidance, see Security Configuration.


TicketDescription
CASSANDRA-547Original pluggable authentication framework (0.6)
CASSANDRA-7653Role-based access control (2.2)
CASSANDRA-8394Auth subsystem rework (2.2/3.0)
CASSANDRA-17940Dynamic Data Masking (5.0)
CASSANDRA-18554mTLS authenticators (5.0)
CEPDescription
CEP-16CQLSH authentication plugin support
CEP-20Dynamic Data Masking
CEP-34mTLS authenticators
CEP-50Authentication negotiation (in progress)

TopicDescription
Security OverviewSecurity architecture and configuration
AuthenticationAuthenticator setup
AuthorizationAuthorizer setup and RBAC patterns