本文說明安全 Spanner Omni 部署作業如何透過驗證和授權控管存取權。您可以建立及管理使用者,並指派角色來定義權限。使用者可以透過下列其中一種方法進行驗證:
- 密碼驗證:使用 OPAQUE 密碼通訊協定。這個通訊協定會為後續要求提供已簽署的存取權杖,進而提升安全性。
- 用戶端憑證驗證:使用與 API 伺服器憑證相同的憑證授權單位 (CA) 簽署的憑證。憑證的
Common Name會識別使用者。
Spanner Omni 的授權作業會使用 Identity and Access Management (IAM) 角色和權限名稱,與 Spanner 類似。您可以指派角色給使用者,授予特定權限。Spanner Omni 的 IAM 與 Spanner IAM 不同。舉例來說,這項功能不支援自訂角色,且包含特定的 Spanner Omni 權限。
使用者
在安全部署中,使用者必須具備存取權,才能存取 Spanner Omni API。您可以使用 Spanner Omni CLI 建立、更新及刪除使用者。根據預設,每個 Spanner Omni 部署作業都會建立單一 admin 使用者,密碼為 admin。
建立使用者
建立新使用者,指派不同角色並稽核用量。下列指令會為新使用者指派 roles/spanner.databaseUser 角色,讓他們可以讀取及寫入 Spanner Omni 資料庫。
spanner users create USER_NAME --roles=roles/spanner.databaseUser
刪除使用者
從系統中刪除過時的使用者:
spanner users delete USER_NAME
更新使用者
更新使用者的狀態和角色。這項指令會覆寫現有狀態和角色:
spanner users update USER_NAME --roles=NEW_ROLES --state=ACTIVE
驗證
在安全部署中,使用者必須先登入,才能存取 Spanner Omni 部署作業。
Spanner Omni 提供兩種使用者驗證機制:
| 機制 | 說明 |
|---|---|
| 密碼 | 使用者輸入使用者名稱和密碼。 |
| 用戶端憑證 | 用戶端會使用由 API 伺服器憑證簽署的相同憑證授權單位 (CA) 簽署的憑證。 |
密碼
密碼驗證需要輸入使用者名稱和密碼。只有在伺服器上啟用 TLS 時,這項功能才會運作。
spanner auth login USER_NAME
Spanner Omni 會實作 OPAQUE 通訊協定,避免將密碼傳送至伺服器,保護系統免於中間人攻擊。Spanner Omni 不會在伺服器上儲存任何密碼,因此即使伺服器遭到未經授權的存取,使用者憑證也不會外洩。成功驗證後,Spanner Omni 會傳回已簽署的存取權杖。將存取權杖附加至所有後續要求。Spanner Omni CLI 會將存取權杖儲存在 ~/.config/spanner/access_token/token.txt 中。為維護系統安全,請勿與他人共用這個權杖。
根據預設,存取權杖的有效期限為 60 分鐘。60 分鐘後,伺服器會拒絕存取權杖,您必須重新登入。Spanner Omni 會簽署存取權杖,防止遭到竄改。
為避免密碼顯示在您可能會查看的位置 (例如環境變數或指令列旗標),Spanner Omni CLI 指令會透過兩種方式接受密碼:
- 遮蓋輸入內容的提示。
- 檔案中的字串。Spanner Omni 會驗證檔案權限為 600,以隨機資料覆寫檔案,並在讀取後刪除檔案。
詳情請執行 spanner auth --help。
用戶端憑證
如要使用用戶端憑證驗證,用戶端必須使用與 API 伺服器憑證相同的憑證授權單位 (CA) 簽署的憑證。在憑證的 Common Name 欄位中,加入有效且處於啟用狀態的使用者名稱。執行授權時,您指派的角色會決定您是否有權執行要求的作業。如要將用戶端憑證附加至要求,請使用 --ca-certificate-file 和 --client-certificate-directory 標記。以下是列出資料庫的範例:
spanner databases list --ca-certificate-file PATH_TO_CA_CERT --client-certificate-directory PATH_TO_CLIENT_CERT_DIR
您也可以使用用戶端憑證登入:
spanner auth login USER_NAME --ca-certificate-file PATH_TO_CA_CERT --client-certificate-directory PATH_TO_CLIENT_CERT_DIR
授權
Spanner Omni 使用的IAM 角色和權限名稱,與 Spanner 大致相同。建立使用者時,您可以指派一或多個角色給該使用者。每個角色都包含一或多項權限。
如要列出 Spanner Omni 中可用的角色,請使用下列指令:
spanner roles list
如要瞭解 Spanner Omni 的 IAM 權限,請參閱「IAM 總覽」。