安裝及管理 Spanner Omni 授權

本文說明如何儲存及處理授權金鑰、在部署作業中安裝授權金鑰、更新即將到期的金鑰,以及在所有節點中驗證安裝作業。

如要執行正式環境,您必須安裝商業版 Spanner Omni 授權金鑰。在非正式環境中,您可以部署 Spanner Omni,並在四個或更少 vCPU 的單一伺服器設定中使用備份和還原功能,不必提供授權金鑰。無論使用多少伺服器或 vCPU,預設或開發人員授權都不支援工作人員功能。如要購買商業授權來使用 Worker,請與 Google 聯絡。

如要瞭解可用的授權類型、版本和功能,請參閱 Spanner Omni 版本總覽。

儲存授權金鑰

請將 Spanner Omni 授權金鑰視為極為機密的憑證。如果有人盜用授權金鑰,Google 會在日後的 Spanner Omni 版本中將其設為無效。為避免金鑰外洩,請實作下列生命週期規範。建議您使用自動化系統插入金鑰,而不是以純文字形式寫入永久儲存空間。以下各節說明如何儲存授權金鑰、保護自動部署檔案,以及設定執行階段傳輸。

儲存在中央密鑰管理工具中

請勿將授權金鑰提交至來源控管,也不要以硬式編碼方式將授權金鑰加入設定檔。請務必將金鑰儲存在集中式憑證儲存空間,例如:

部署自動化

透過 Terraform 或 Ansible 等自動化工具部署時,請勿將授權金鑰當做純文字設定變數傳遞:

  • Terraform:在部署執行階段使用資料來源動態擷取授權金鑰。使用 sensitive = true 屬性標記變數,防止金鑰顯示在執行控制台記錄中。
  • Ansible:透過密碼管理員外掛程式 (例如 google.cloud.gcp_secret_manager 或 community.hashicorp.vault) 執行設定時,將金鑰保留在記憶體中;如果金鑰儲存在存放區中,則使用 Ansible Vault 加密金鑰。

在執行階段傳輸授權金鑰

請使用下列技術將授權金鑰傳送至資料庫程序,避免未經授權的使用者存取:

以 VM 為基礎的部署作業 (雲端或地端部署)

  • 以 Identity and Access Management (IAM) 為基礎的插入:將資料庫 VM 與代管服務帳戶或 IAM 角色建立關聯。在啟動或佈建期間 (例如使用 Ansible),請使用這個身分從密碼管理工具擷取授權金鑰,並存入記憶體或存取受限的目錄。
  • 作業系統權限:如果將金鑰寫入磁碟,請限制檔案存取權,確保只有執行 Spanner Omni 程序的使用者可以查看檔案 (例如 chmod 400 /path/to/license)。請嚴格限制主機的 SSH 存取權。

Kubernetes Deployment

  • 使用 Secrets Store CSI 驅動程式:使用標準的 Secrets Store CSI 驅動程式,將授權金鑰從外部密碼管理工具直接掛接到 Spanner Omni Pod 中,做為暫時記憶體磁碟區 (tmpfs)。憑證只會存在於記憶體中,Pod 終止時就會消失。
  • 避免使用內建 Kubernetes Secret:請勿使用內建 Kubernetes Secret,因為這類 Secret 只會使用 base64 編碼,並保留在 etcd 中。

安裝授權金鑰

如要安裝或更新授權金鑰,請讓 Spanner Omni 伺服器以本機路徑 (例如 /path/to/your/license) 存取金鑰。

如要將授權金鑰路徑傳遞至伺服器,請在執行 spanner start 或 spanner start-single-server 指令時,使用 --license-file-path 旗標或 SPANNER_LICENSE_FILE_PATH 環境變數。

例如:

spanner start --root \
  --license-file-path=LICENSE_KEY_FILE_PATH \
  --server-address=RESOLVABLE_HOSTNAME \
  --zone=ZONE_NAME \
  --base-dir=SPANNER_BASE_DIR

或者,您也可以使用環境變數提供授權路徑:

SPANNER_LICENSE_FILE_PATH=LICENSE_KEY_FILE_PATH \
  spanner start --root \
    --server-address=RESOLVABLE_HOSTNAME \
    --zone=ZONE_NAME \
    --base-dir=SPANNER_BASE_DIR

更改下列內容:

  • LICENSE_KEY_FILE_PATH:授權金鑰檔案的本機路徑。
  • RESOLVABLE_HOSTNAME:節點伺服器的可解析主機名稱或 IP 位址。
  • ZONE_NAME:部署作業的可用區名稱。
  • SPANNER_BASE_DIR:儲存伺服器檔案的基底目錄。

或者,您也可以將授權金鑰放在伺服器預期的路徑:BASE_DIR/license/license。如果是 Kubernetes 部署作業,BASE_DIR 預設為 /spanner。

更新即將到期的授權

如要更新、延長或續訂有效部署中的 Developer 版授權,請申請永久授權。如要延長即將到期的概念驗證授權,或購買商業授權,請與 Google 聯絡。收到新授權後,請提供授權路徑,並對 Spanner Omni 伺服器啟動輪流重新啟動:

  1. 讓每個節點都能存取新的授權檔案。
  2. 一次重新啟動一個伺服器節點,執行滾動式重新啟動。
  3. 在推出期間監控部署作業的健康狀態。如有任何節點無法重新啟動或發生錯誤,請復原至先前可正常運作的設定,並檢查伺服器記錄,確保系統已正確提供新授權。

使用 Helm (Kubernetes) 安裝授權金鑰

如果使用 Google 提供的 Helm 圖表進行部署,您可以在升級期間動態傳遞授權檔案的路徑。

由於 Helm 的 --set-file 旗標需要磁碟上的實體路徑,請勿將授權金鑰儲存至永久檔案。請改為從密鑰管理工具擷取金鑰,並存入暫時性臨時檔案或記憶體內路徑 (例如 Linux 上的 /dev/shm)。將這個路徑傳遞至 Helm,然後立即刪除或清除檔案。這樣可確保系統不會將純文字憑證留在磁碟上,避免憑證保留在本機或意外提交至版本控管。

helm upgrade --install spanner-omni \
  --set-file licenseKey=LICENSE_KEY_FILE_PATH

更改下列內容:

  • LICENSE_KEY_FILE_PATH:授權金鑰檔案的本機路徑。

驗證授權安裝

由於您會在叢集中的每個有效伺服器節點上安裝授權金鑰,因此可以檢查處理要求的其中一個伺服器節點狀態,驗證安裝作業。對端點使用 describe 指令:

spanner deployment describe --deployment-endpoint=SERVER_ADDRESS

更改下列內容:

  • SERVER_ADDRESS:伺服器節點的位址。

執行叢集範圍的稽核作業

如要確認 VM 叢集或 Kubernetes StatefulSet 中的所有節點都已安裝正確的授權金鑰,請執行叢集範圍的稽核指令:

spanner admin license check

叢集範圍的稽核會檢查資料庫拓撲中的每個伺服器。因此,請務必先確認所有節點伺服器都已連線且可透過網路存取,再執行這項指令。

解讀稽核結果

請參閱下表,瞭解叢集稽核結果:

叢集狀態 輸出類型 說明和必要措施
Uniform (預期) 單一授權 ID 所有節點都使用相同的授權金鑰和類型。您不需要進一步採取任何行動。
有高有低 (需要採取行動) 授權 ID 和伺服器清單 系統在節點間偵測到不同的授權金鑰 (例如在停滯的滾動式更新期間)。調查列出的節點,確保已正確套用新的授權檔案。

維持商業授權的法規遵循狀態

如果您使用 Spanner Omni 商業授權,請務必遵守授權協議。維持合規性有助於避免帳單爭議,並追蹤及向 Google 報告叢集資源用量。請完成下列步驟,確保遵守 Spanner Omni 商業授權協議:

  1. 在每個帳單週期結束時執行 Spanner Omni 用量工具,收集叢集 vCPU 用量指標:

    spanner admin license report --row-format=CSV
    
  2. 請與客戶技術顧問 (TAM) 或 Google 帳戶團隊合作,確認貴機構偏好的提交管道。

  3. 在下個月 5 號前,將產生的酬載提交給 Google。

後續步驟