配置内部授权

默认情况下,每个用户都可以访问 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_mscassandra.yaml),并且更改可能无法立即生效。