啟用 Cassandra 驗證

根據預設,Cassandra 安裝但不啟用驗證功能。這代表任何人都可以存取 Cassandra。您可以在安裝 Edge 後啟用驗證功能,或在安裝過程中啟用驗證功能。

如果決定在 Cassandra 上啟用驗證,系統會使用下列預設憑證:

  • 使用者名稱 =「cassandra」
  • 密碼 =「cassandra」

您可以使用這個帳戶、為這個帳戶設定其他密碼,或是建立新的 Cassandra 使用者。使用 Cassandra CREATE/ALTER/DROP USER 陳述式新增、移除及修改使用者。

詳情請參閱 Cassandra SQL 殼層指令

在安裝期間啟用 Cassandra 驗證

您可以在安裝時啟用 Cassandra 驗證。不過,雖然您可以在安裝 Cassandra 時啟用驗證功能,但無法變更預設的使用者名稱和密碼。 Cassandra 安裝完成後,您必須手動執行該步驟。

如要在安裝時啟用 Cassandra 驗證,請在所有 Cassandra 節點的設定檔中加入 CASS_AUTH 屬性:

CASS_AUTH=y # The default value is n.

下列 Edge 元件可存取 Cassandra:

  • 管理伺服器
  • 訊息處理器
  • 路由器
  • Qpid 伺服器
  • Postgres 伺服器

因此,在安裝這些元件時,您必須在設定檔中設定下列屬性,才能指定 Cassandra 憑證:

CASS_USERNAME=cassandra
CASS_PASSWORD=cassandra

您可以在安裝 Cassandra 後變更 Cassandra 憑證。不過,如果您已經安裝管理伺服器、訊息處理器、路由器、Qpid 伺服器或 Postgres 伺服器,您也必須更新這些元件來使用新憑證。

如何在安裝 Cassandra 後變更 Cassandra 憑證:

  1. 使用 cqlsh 工具和預設憑證登入任一 Cassandra 節點。您只需在一個節點上變更密碼,系統就會對環狀中的所有 Cassandra 節點廣播:
    /opt/apigee/apigee-cassandra/bin/cqlsh cassIP 9042 -u cassandra -p cassandra

    在此情況下:

    1. cassIP 是 Cassandra 節點的 IP 位址。
    2. 9042 是預設的 Cassandra 通訊埠。
    3. 預設使用者為 cassandra
    4. 預設密碼為 cassandra。如果之前變更過密碼,請使用目前的密碼。如果密碼含有任何特殊字元,請用單引號括住。
  2. cqlsh> 提示中執行下列指令,以更新密碼:
    ALTER USER cassandra WITH PASSWORD 'NEW_PASSWORD';
  3. 結束 cqlsh 工具,如以下範例所示:
    exit
  4. 如果您尚未安裝管理伺服器、訊息處理器、路由器、Qpid 伺服器或 Postgres 伺服器,請在設定檔中設定下列屬性,然後安裝這些元件:
    CASS_USERNAME=cassandra
    CASS_PASSWORD=NEW_PASSWORD
  5. 如果您已安裝管理伺服器、訊息處理器、路由器、Qpid 伺服器或 Postgres 伺服器,請參閱「重設邊緣密碼」一文,瞭解更新這些元件來使用新密碼的程序。

啟用安裝後的 Cassandra 驗證

如何啟用驗證功能:

  • 使用 Cassandra 使用者名稱和密碼更新所有連線至 Cassandra 的 Edge 元件。
  • 在所有 Cassandra 節點上啟用驗證功能。
  • 在任何節點上設定 Cassandra 使用者名稱和密碼。您只需要變更一個 Cassandra 節點上的憑證,這些憑證就會廣播到環環中的所有 Cassandra 節點。

請按照下列程序,更新與 Cassandra 通訊的所有 Edge 元件使用新憑證。請注意,在您實際更新 Cassandra 憑證之前,請先執行此步驟:

  1. 在 Management Server 節點中,執行下列指令:
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server
      store_cassandra_credentials -u cassandra_username -p cassandra_password

    您也可以選擇將檔案傳送至包含新使用者名稱和密碼的指令:

    apigee-service edge-management-server store_cassandra_credentials  -f configFile

    其中 configFile 包含下列內容:

    CASS_USERNAME=cassandra_username # Default is cassandra
    CASS_PASSWORD='cassandra_password' # Default is cassandra; wrap in single quotes if it includes special chars

    這個指令會自動重新啟動管理伺服器。

  2. 針對下列各項服務重複步驟 1:
    • 所有訊息處理器
    • 所有路由器
    • 所有 Qpid 伺服器 (edge-qpid-server)
    • Postgres 伺服器 (edge-postgres-server)

    針對每項服務重複步驟 1 時,請將上述指令中的 edge-management-server 替換為適當的服務名稱。舉例來說,當您執行路由器服務的步驟時,請使用下列指令:

    /opt/apigee/apigee-service/bin/apigee-service edge-router
      store_cassandra_credentials -u cassandra -p cassandra

請按照下列程序啟用 Cassandra 驗證,並設定使用者名稱和密碼:

  1. 登入第一個 Cassandra 節點。
  2. 執行以下指令:
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra
      enable_cassandra_authentication -e y

    這個指令會啟用驗證並重新啟動 Cassandra。

  3. 對所有 Cassandra 節點重複步驟 1 和 2。
  4. 使用 cqlsh 工具和預設憑證登入任一 Cassandra 節點。您只需要變更一個 Cassandra 節點的密碼,該節點就會廣播到環環中的所有 Cassandra 節點:
    /opt/apigee/apigee-cassandra/bin/cqlsh cassIP 9042 -u cassandra -p cassandra

    地點

    • cassIP 是 Cassandra 節點的 IP 位址。
    • 9042 是 Cassandra 通訊埠。
    • 預設使用者為 cassandra
    • 預設密碼為 cassandra。如果之前變更過密碼,請使用目前的密碼。
  5. cqlsh> 提示中執行下列指令,以更新密碼:
    ALTER USER cassandra WITH PASSWORD 'NEW_PASSWORD';
  6. cqlsh> 提示下執行下列指令,確保鍵空間隨時可用。

    針對單一資料中心:

    ALTER KEYSPACE system_auth WITH replication = {'class': 'NetworkTopologyStrategy', 'dc-1': '3'};

    對於兩個資料中心:

    ALTER KEYSPACE system_auth WITH replication = {'class': 'NetworkTopologyStrategy', 'dc-1': '3', 'dc-2': '3'};
  7. 退出 cqlsh 工具:
    exit
  8. 執行 nodetool repair,確保變更已推送至所有 Cassandra 節點,如以下範例所示:
    /opt/apigee/apigee-cassandra/bin/nodetool [-u username -pw 'password'] repair system_auth

    只有在為 Cassandra 啟用 JMX 驗證時,才需要傳送使用者名稱和密碼。