配置內部認證

Cassandra 不會要求使用者使用預設配置登入。相反,無密碼,任何能夠連線到 native_transport_port 的人都可以匿名登入。通過編輯 cassandra.yaml 配置以使用不同的身份驗證器可以更改此行為:

# Allow anonymous logins without authentication
# authenticator: AllowAllAuthenticator

# Use username/password based logins
authenticator: PasswordAuthenticator

PasswordAuthenticator 驗證的登入憑證將儲存在內部 system_auth 金鑰空間中。預設情況下,不會在所有節點上覆制鍵空間。你必須更改複製設定以確保 Cassandra 仍然能夠從本地儲存中讀取使用者憑據,以防無法訪問群集中的其他節點,否則你可能無法登入!

對於 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 };

在上述更改後重新啟動每個節點。你現在只能使用預設超級使用者登入:

cqlsh -u cassandra -p cassandra

(可選)將預設超級使用者替換為自定義使用者

使用帶有標準密碼的預設超級使用者並不比完全不使用任何使用者安全得多。你應該使用安全且唯一的密碼來建立自己的使用者:

CREATE ROLE myadminuser WITH PASSWORD = 'admin123' AND LOGIN = true AND SUPERUSER = true;

使用新使用者登入:cqlsh -u myadminuser -p admin123

現在禁用標準 cassandra 使用者的登入並刪除超級使用者狀態:

ALTER ROLE cassandra WITH LOGIN = false AND SUPERUSER = false;