面试题答案
一键面试身份验证配置优化
- 内置身份验证机制:
- PasswordAuthenticator:
- 这是Cassandra自带的简单身份验证机制。首先,在
cassandra.yaml
文件中配置authenticator: PasswordAuthenticator
。 - 创建超级用户,使用
cqlsh
命令行工具,例如:CREATE USER cassandra WITH PASSWORD 'your_password' SUPERUSER;
- 为普通用户创建账号,如:
CREATE USER normal_user WITH PASSWORD 'normal_user_password';
- 这是Cassandra自带的简单身份验证机制。首先,在
- LDAPAuthenticator:
- 若企业已有LDAP服务器,可配置此机制。在
cassandra.yaml
中设置authenticator: com.datastax.bdp.cassandra.auth.LDAPAuthenticator
。 - 配置LDAP服务器相关参数,如:
ldap_url: ldap://your_ldap_server:389 ldap_base_dn: dc = your_domain, dc = com ldap_user_search: (uid = {0}) ldap_user_name_attribute: uid
- 若企业已有LDAP服务器,可配置此机制。在
- PasswordAuthenticator:
- 密码策略:
- 启用密码策略,在
cassandra.yaml
中配置password_validator: PasswordPolicy
。 - 可以设置密码最小长度、是否包含数字、大写字母、小写字母、特殊字符等规则,例如:
min_length: 8 require_digits: true require_lowercase: true require_uppercase: true require_symbols: true
- 启用密码策略,在
授权配置优化
- 内置授权机制:
- CassandraAuthorizer:
- 在
cassandra.yaml
中配置authorizer: CassandraAuthorizer
。 - 超级用户可以使用
cqlsh
为用户授予权限,例如,授予用户对特定keyspace的读写权限:GRANT ALL ON KEYSPACE your_keyspace TO normal_user;
- 可以细化权限,如只授予对特定表的读权限:
GRANT SELECT ON TABLE your_keyspace.your_table TO normal_user;
- 在
- CassandraAuthorizer:
- 基于角色的访问控制(RBAC):
- 创建角色,例如:
CREATE ROLE data_reader WITH LOGIN = false;
- 为角色授予权限,如:
GRANT SELECT ON KEYSPACE your_keyspace TO data_reader;
- 将角色授予用户,如:
GRANT data_reader TO normal_user;
- 创建角色,例如:
加密配置优化
- 传输层加密(TLS):
- 生成SSL证书和密钥,可使用
openssl
工具:openssl req -new -x509 -days 365 -nodes -out cassandra.crt -keyout cassandra.key
- 在
cassandra.yaml
中配置SSL相关参数:server_encryption_options: internode_encryption: all keystore: /path/to/keystore.jks keystore_password: your_keystore_password truststore: /path/to/truststore.jks truststore_password: your_truststore_password require_client_auth: true
- 客户端连接时,需配置相应的SSL参数,如在
cqlsh
连接时,使用:cqlsh --ssl -u your_user -p your_password --ssl-cert /path/to/cassandra.crt
- 生成SSL证书和密钥,可使用
- 数据存储加密:
- 透明数据加密(TDE):
- 若使用企业版Cassandra,可启用TDE。在
cassandra.yaml
中配置:encrypt_all_data_on_disk: true data_file_directories: - /var/lib/cassandra/data encryption_options: enabled: true keyspace_encryption: your_keyspace: algorithm: AES/CBC/PKCS5Padding key_length: 256 material_provider: org.apache.cassandra.security.KMSTokenMaterialProvider parameters: kms_url: http://your_kms_server:port token: your_kms_token
- 这将对存储在磁盘上的数据文件进行加密,保护数据的静态安全。
- 若使用企业版Cassandra,可启用TDE。在
- 透明数据加密(TDE):