設定 Cassandra 的驗證機制

本主題說明如何為 Cassandra 節點之間,以及用戶端與 Cassandra 節點之間的通訊設定驗證機制。

如何在執行階段平面中設定 Cassandra 的驗證機制

Cassandra 可在用戶端電腦與資料庫叢集之間,以及叢集內的節點之間提供安全的通訊。啟用加密功能可確保傳輸中的資料不會遭到入侵,並安全傳輸。在 Apigee hybrid 中,系統預設會為 Cassandra 節點之間,以及用戶端與 Cassandra 節點之間的所有通訊啟用 TLS。

您可以使用使用者名稱/密碼組合設定驗證機制,方法是直接將其放入覆寫檔案,或新增至 Kubernetes 密鑰,如本主題所述。

關於 Cassandra 使用者驗證

混合平台會使用 Cassandra 做為執行階段平面資料的後端資料儲存庫。根據預設,任何與 Cassandra 的用戶端通訊都需要驗證。有多位用戶端使用者與 Cassandra 進行通訊。系統會為這些使用者提供預設密碼。如要瞭解變更預設密碼的必要步驟,請參閱「在覆寫檔案中變更預設密碼」。

這些使用者 (包括預設使用者) 的說明如下:

  1. DML 使用者:用於用戶端讀取及寫入 Cassandra 的資料 (KMS、KVM、快取和配額)。
  2. DDL 使用者:MART 用於任何資料定義工作,例如建立、更新和刪除鍵空間。
  3. 管理員使用者:用於在 Cassandra 叢集中執行的任何管理活動。
  4. 預設 Cassandra 使用者:啟用驗證功能且使用者名稱為 cassandra 時,Cassandra 會建立預設使用者
  5. JMX 使用者:用於驗證 Cassandra JMX 介面並與其通訊。
  6. Jolokia 使用者:用於驗證 Cassandra JMX API 並與其通訊。

關於預設 Cassandra 使用者

建立 Apigee 混合叢集並啟用 Cassandra 驗證功能後,初始使用者帳戶會是使用者名稱為 cassandra 的預設 Cassandra 使用者。預設的 cassandra 使用者會擔任超級使用者的角色,負責新增使用者角色和修改資料庫結構定義等工作。

Apigee 混合 apigee-cassandra-user-setup 工作會使用預設 cassandra 使用者建立新角色,並更新與此預設使用者相關聯的密碼。執行 apigee-cassandra-user-setup 工作時,會在初次安裝 Apigee 混合執行個體、後續執行個體升級,以及在區域擴充作業中佈建新執行個體。

執行 Apigee 混合 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。您可以在 values.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 密鑰中設定使用者名稱和密碼

本節說明如何設定 Cassandra 使用 Kubernetes 密鑰進行驗證。

建立密鑰

請使用下列範本設定 Kubernetes 密鑰。將範本儲存為 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 編碼。

將密鑰套用至叢集。例如:

kubectl apply -f SECRET_FILE

將密鑰新增至覆寫檔案:

cassandra:
  auth:
    secret: SECRET_NAME

將更新後的 Cassandra 覆寫值套用至叢集:

helm upgrade datastore apigee-datastore/ \
--namespace APIGEE_NAMESPACE \
--atomic \
-f OVERRIDES_FILE.yaml

查看 Cassandra 記錄

請在 Cassandra 啟動後立即檢查記錄。下方記錄顯示 Cassandra 用戶端連線已加密。

kubectl logs apigee-cassandra-2 -n APIGEE_NAMESPACE -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...