啟用 Cassandra 驗證

根據預設,Cassandra 安裝作業不會啟用驗證機制。也就是說,任何人都可以存取 Cassandra。您可以在安裝 Edge 後或在安裝程序中啟用驗證機制。

您可以使用 Cassandra CREATE/ALTER/DROP USER 陳述式新增、移除及修改使用者。詳情請參閱 Cassandra SQL 殼層指令

  • 請記得在用於安裝或升級 Edge 元件的設定檔中,更新功能性 Cassandra 使用者名稱和密碼。這樣一來,邊緣運算作業期間就不會發生任何中斷情形,或至少將中斷情形降到最低。
  • 在安裝期間啟用 Cassandra 驗證

    您可以在安裝時啟用 Cassandra 驗證功能。

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

    CASS_AUTH=y # The default value is n.

    下列 Edge 元件會存取 Cassandra:

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

    安裝這些元件時,您必須在設定檔中設定使用者名稱和密碼:

    CASS_USERNAME=cassandra_username
    CASS_PASSWORD=cassandra_password

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

    如要在安裝 Cassandra 後變更 Cassandra 憑證,請按照下列步驟操作:

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

      在此情況下:

      1. cassIP 是 Cassandra 節點的 IP 位址。
      2. 9042 是 Cassandra 的預設通訊埠。
    2. cqlsh> 提示中執行下列指令,更新密碼:
      ALTER USER cassandra_username/var> WITH PASSWORD 'new_cassandra_password';
    3. 結束 cqlsh 工具,如以下範例所示:
      exit
    4. 如果您尚未安裝管理伺服器、訊息處理器、路由器、Qpid 伺服器或 Postgres 伺服器,請在設定檔中設定下列屬性,然後安裝這些元件:
      CASS_USERNAME=cassandra_username
      CASS_PASSWORD=new_cassandra_password
    5. 如果您已安裝管理伺服器、訊息處理器、路由器、Qpid 伺服器或 Postgres 伺服器,請參閱「重設 Edge 密碼」一文,瞭解如何更新這些元件以使用新密碼。

    在安裝後啟用 Cassandra 驗證

    如要在安裝後啟用驗證功能,請按照下列步驟操作:

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

    更新連線至 Cassandra 的 Edge 元件

    請按照下列程序,使用新的憑證更新所有與 Cassandra 通訊的 Edge 元件。請注意,您必須先執行這個步驟,才能實際更新 Cassandra 憑證:

    1. 在管理伺服器節點上執行下列指令:
      /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 替換為適當的服務名稱。舉例來說,執行 Router 服務的步驟時,請使用下列指令:

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

    啟用驗證機制

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

    1. 建立靜默設定檔,並加入下列內容:
      # Specify IP address or DNS name of cassandra node
      IP1=192.168.1.1
      IP2=192.168.1.2
      IP3=192.168.1.3
      # Must resolve to IP address or DNS name of host
      HOSTIP=$(hostname -i)
      # Set to ‘y’ to enable Cassandra authentication.
      CASS_AUTH=y # Possible values are ‘y/n’
      # Cassandra username. If it does not exist, this user would be created as a SUPERUSER
      CASS_USERNAME=cassandra_username # Default value is cassandra - don't use for production
      # Cassandra Password. If CASS_USERNAME does not exist, create SUPERUSER with this as password
      CASS_PASSWORD=cassandra_password # Default value is cassandra - don't use for production
      # Space-separated IP/DNS names of the Cassandra hosts
      CASS_HOSTS="$IP1:1,1 $IP2:1,1 $IP3:1,1"
      
      # Username of an existing C* user. Only needed if you have disabled or changed details of the default cassandra user(‘cassandra’)
      CASS_EXISTING_USERNAME=existing_cassandra_username
      # Password of an existing C* user. Only needed if you have disabled or change password of the default cassandra user(‘cassandra’)
      CASS_EXISTING_PASSWORD=existing_cassandra_password
      # Cassandra port
      CASS_PORT=9042 # The default port is 9042.
    2. 登入第一個 Cassandra 節點,並執行下列指令:

      apigee-service apigee-cassandra enable_cassandra_authentication -f CONFIG

      您可以選擇將屬性做為指令引數傳遞至指令碼,如以下範例所示:

      CASS_AUTH=y HOSTIP=$(hostname -i) CASS_PORT=9042 CASS_EXISTING_USERNAME=existing_cassandra_username CASS_EXISTING_PASSWORD=existing_cassandra_password CASS_USERNAME=cassandra_username CASS_PASSWORD=cassandra_password  CASS_HOSTS="192.168.1.1:1,1 192.168.1.2:1,1 192.168.1.3:1,1" apigee-service apigee-cassandra enable_cassandra_authentication

      注意事項:

      • 對於預設的 Cassandra 憑證,上述指令會啟用 Cassandra 驗證機制,並重新啟動 Cassandra。
      • 如果是使用非預設憑證,這個指令也會變更複寫因數、建立超級使用者,並在 system_auth keyspace 上執行修復作業。
    3. 針對所有 Cassandra 節點重複執行步驟 1 和 2。