本主題說明如何設定驗證,確保 Cassandra 節點之間,以及用戶端與 Cassandra 節點之間的通訊安全。
如何在執行階段層級為 Cassandra 設定 TLS
Cassandra 可確保用戶端電腦與資料庫叢集之間,以及叢集內節點之間的通訊安全無虞。啟用加密功能可確保傳輸中的資料不會遭到入侵,並以安全方式傳輸。在 Apigee Hybrid 中,Cassandra 節點之間,以及用戶端與 Cassandra 節點之間的任何通訊,預設都會啟用 TLS。
您可以透過使用者名稱/密碼組合設定驗證,直接放在覆寫檔案中,或新增至 Kubernetes Secret,如本主題所述。
關於 Cassandra 使用者驗證
混合式平台會使用 Cassandra 做為執行階段資料層資料的後端資料儲存庫。根據預設,用戶端與 Cassandra 的任何通訊都需要驗證。有多位用戶與 Cassandra 溝通。系統會為這些使用者提供預設密碼。如要瞭解變更預設密碼的步驟,請參閱「在覆寫檔案中變更預設密碼」。
這些使用者 (包括預設使用者) 說明如下:
- DML 使用者:用於用戶端通訊,可讀取及寫入 Cassandra 的資料 (KMS、KVM、快取和配額)。
- DDL 使用者:MART 會使用此角色執行任何資料定義工作,例如建立、更新及刪除鍵空間。
- 管理員使用者:用於在 Cassandra 叢集上執行的任何管理活動。
- 預設 Cassandra 使用者:啟用驗證時,Cassandra 會建立預設使用者,使用者名稱為
cassandra - JMX 使用者:用於驗證及與 Cassandra JMX 介面通訊。
- Jolokia 使用者:用於驗證及與 Cassandra JMX API 通訊。
關於預設 Cassandra 使用者
建立 Apigee Hybrid 叢集並啟用 Cassandra 驗證時,初始使用者帳戶是預設的 Cassandra 使用者,使用者名稱為 cassandra。預設 cassandra 使用者是超級使用者,負責新增使用者角色和修改資料庫結構定義等工作。
Apigee Hybrid apigee-cassandra-user-setup 工作會使用預設 cassandra 使用者建立新角色,並更新與這個預設使用者相關聯的密碼。apigee-cassandra-user-setup 工作會在 Apigee Hybrid 執行個體的初始安裝、後續執行個體升級,以及區域擴展時佈建新執行個體期間執行。
執行 Apigee Hybrid apigee-cassandra-user-setup 工作時,工作需要能夠更新及修改資料庫層級的設定,無論是全新安裝或升級都一樣。在 apigee-cassandra-user-setup 工作設定新的 Cassandra Pod 時,只有預設 cassandra 使用者保證會存在。如果沒有具備超級使用者存取權的已知使用者,Apigee Hybrid 升級和區域擴充功能就無法正常運作。
為採取額外的安全措施,預設 cassandra 使用者密碼會在首次使用後變更。也就是說,即使預設 cassandra 使用者仍處於啟用狀態,您也必須知道新密碼,才能使用預設 cassandra 使用者。除了 apigee-cassandra-user-setup 工作之外,其他元件不會使用預設的 cassandra 使用者,這是新安裝作業和區域擴展作業的一部分。
在覆寫檔案中變更預設密碼
為確保安全,建議您變更 Cassandra 的預設密碼。您可以在 overrides.yaml 檔案中執行這項操作。新增下列設定、視需要變更預設密碼,然後將變更套用至叢集。
cassandra: auth: default: ## the password for the new default user (static username: cassandra) password: "NEW_PASSWORD" admin: ## the password for the admin user (static username: admin_user) password: "NEW_PASSWORD" ddl: ## the password for the DDL User (static username: ddl_user) password: "NEW_PASSWORD" dml: ## the password for the DML User (static username: dml_user) password: "NEW_PASSWORD" jmx: username: "jmxuser" ## the username for the JMX User password: "NEW_PASSWORD" ## the password for the JMX User jolokia: username: "jolokiauser" ## the username to access jolokia interface password: "NEW_PASSWORD" ## the password for jolokia user
注意事項:
- 不支援憑證授權單位 (CA) 輪替。
- 系統不支援使用密碼片產生的伺服器憑證。
在 Kubernetes Secret 中設定使用者名稱和密碼
本節說明如何設定 Cassandra,以使用 Kubernetes Secret 進行驗證。
建立 Secret
請使用下列範本設定 Kubernetes Secret。將範本儲存為 YAML 檔案,並編輯必要屬性,例如 my-secret.yaml。請注意,如果使用這個選項,您必須為每個密碼提供使用者名稱。
apiVersion: v1 kind: Secret metadata: name: SECRET_NAME namespace: APIGEE_NAMESPACE type: Opaque data: default.password: DEFAULT_PASSWORD #base64-encoded string admin.user: ADMIN_USERNAME #base64-encoded string admin.password: ADMIN_PASSWORD #base64-encoded string dml.user: DML_USERNAME #base64-encoded string dml.password: DML_PASSWORD #base64-encoded string ddl.user: DDL_USERNAME #base64-encoded string ddl.password: DDL_PASSWORD #base64-encoded string jmx.user: JMX_USERNAME #base64-encoded string jmx.password: JMX_PASSWORD #base64-encoded string jolokia.user: JOLOKIA_USERNAME #base64-encoded string jolokia.password: JOLOKIA_PASSWORD #base64-encoded string
其中 SECRET_NAME 是您為密鑰選擇的名稱,APIGEE_NAMESPACE 是部署 Apigee Pod 的命名空間 (預設為 apigee),而每個 _USERNAME 和 _PASSWORD 都是各個使用者的使用者名稱和密碼。請注意,使用者名稱和密碼必須採用 Base64 編碼。
將 Secret 套用至叢集。例如:
kubectl apply -f SECRET_FILE
將密鑰新增至覆寫檔案:
cassandra: auth: secret: SECRET_NAME
將更新後的 Cassandra 覆寫套用至叢集:
$APIGEECTL_HOME/apigeectl apply -f overrides/overrides.yaml --datastore
檢查 Cassandra 記錄
Cassandra 啟動後,請立即檢查記錄。下方記錄顯示 Cassandra 用戶端連線已加密。
kubectl logs apigee-cassandra-2 -n apigee -f INFO 00:44:36 Starting listening for CQL clients on /10.0.2.12:9042 (encrypted)... INFO 00:44:36 Binding thrift service to /10.0.2.12:9160 INFO 00:44:36 enabling encrypted thrift connections between client and server INFO 00:44:36 Listening for thrift clients...