配置内部授权
默认情况下,每个用户都可以访问 Cassandra 中的所有数据。你必须在 cassandra.yaml
中配置其他授权程序,以向用户授予单个对象权限。
# Grant all permissions to all users
# authorizer: AllowAllAuthorizer
# Use object permissions managed internally by Cassandra
authorizer: CassandraAuthorizer
单个用户的权限将存储在内部 system_auth
密钥空间中。如果在启用基于密码的身份验证时尚未执行此操作,则应更改复制设置。
对于 SimpleStrategy
(其中 N
是集群中的节点数):
ALTER KEYSPACE system_auth WITH replication = {'class': 'SimpleStrategy', 'replication_factor': N};
对于 NetworkTopologyStrategy
(其中 N
是相应数据中心中的节点数):
ALTER KEYSPACE system_auth WITH replication = { 'class' : 'NetworkTopologyStrategy', 'datacenter1' : N };
在上述更改后重新启动每个节点。你现在可以使用以下命令设置权限。
授予指定键空间和角色的所有权限:
GRANT ALL ON KEYSPACE keyspace_name TO role_name;
授予所有键空间的读取权限:
GRANT SELECT ON ALL KEYSPACES TO role_name;
允许在某个键空间上执行 INSERT,UPDATE,DELETE 和 TRUNCATE 语句:
GRANT MODIFY ON KEYSPACE keyspace_name TO role_name;
允许更改某些键空间的键空间,表和索引:
GRANT ALTER ON KEYSPACE keyspace_name TO role_name;
请注意,权限将被缓存为 permissions_validity_in_ms
(cassandra.yaml
),并且更改可能无法立即生效。