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