Spanner Omni 的驗證和授權

本文說明安全 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 總覽」。