本文說明如何儲存及處理授權金鑰、在部署作業中安裝授權金鑰、更新即將到期的金鑰,以及在所有節點中驗證安裝作業。
如要執行正式環境,您必須安裝商業版 Spanner Omni 授權金鑰。在非正式環境中,您可以部署 Spanner Omni,並在四個或更少 vCPU 的單一伺服器設定中使用備份和還原功能,不必提供授權金鑰。無論使用多少伺服器或 vCPU,預設或開發人員授權都不支援工作人員功能。如要購買商業授權來使用 Worker,請與 Google 聯絡。
如要瞭解可用的授權類型、版本和功能,請參閱 Spanner Omni 版本總覽。
儲存授權金鑰
請將 Spanner Omni 授權金鑰視為極為機密的憑證。如果有人盜用授權金鑰,Google 會在日後的 Spanner Omni 版本中將其設為無效。為避免金鑰外洩,請實作下列生命週期規範。建議您使用自動化系統插入金鑰,而不是以純文字形式寫入永久儲存空間。以下各節說明如何儲存授權金鑰、保護自動部署檔案,以及設定執行階段傳輸。
儲存在中央密鑰管理工具中
請勿將授權金鑰提交至來源控管,也不要以硬式編碼方式將授權金鑰加入設定檔。請務必將金鑰儲存在集中式憑證儲存空間,例如:
- 雲端: Google Cloud Secret Manager、Amazon Web Services (AWS) Secrets Manager 或 Microsoft 的 Azure Key Vault。
- 與平台無關: HashiCorp Vault。
部署自動化
透過 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 伺服器啟動輪流重新啟動:
- 讓每個節點都能存取新的授權檔案。
- 一次重新啟動一個伺服器節點,執行滾動式重新啟動。
- 在推出期間監控部署作業的健康狀態。如有任何節點無法重新啟動或發生錯誤,請復原至先前可正常運作的設定,並檢查伺服器記錄,確保系統已正確提供新授權。
使用 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 商業授權協議:
在每個帳單週期結束時執行 Spanner Omni 用量工具,收集叢集 vCPU 用量指標:
spanner admin license report --row-format=CSV請與客戶技術顧問 (TAM) 或 Google 帳戶團隊合作,確認貴機構偏好的提交管道。
在下個月 5 號前,將產生的酬載提交給 Google。