配置內部授權

預設情況下,每個使用者都可以訪問 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),並且更改可能無法立即生效。