服務帳戶金鑰輪替

服務帳戶金鑰是私密金鑰,可讓您以服務帳戶身分進行驗證。金鑰輪替是指以新金鑰取代現有金鑰,然後使取代的金鑰失效。建議您定期輪替管理的所有金鑰,包括服務帳戶金鑰。

輪替服務帳戶金鑰有助於降低金鑰外洩或遭竊帶來的風險。如果金鑰外洩,惡意行為者可能要過幾天或幾週才會發現。定期輪替服務帳戶金鑰,可提高遭外洩金鑰失效的機率,避免遭到惡意人士利用。

建立服務帳戶金鑰輪替程序,也有助於在懷疑服務帳戶金鑰遭盜用時迅速採取行動。

金鑰輪替頻率

建議您至少每 90 天輪替一次金鑰,以降低金鑰外洩帶來的風險。

如果您認為服務帳戶金鑰遭到盜用,建議立即輪替金鑰。

金鑰輪替程序

如要輪替服務帳戶金鑰,請按照下列步驟操作:

  1. 找出需要輪替的服務帳戶金鑰。
  2. 為相同服務帳戶建立新金鑰。
  3. 在所有應用程式中,以新金鑰取代現有金鑰。
  4. 停用已替換的金鑰,並監控應用程式,確認應用程式是否正常運作。
  5. 刪除已取代的服務帳戶金鑰。

您可以透過集中式密鑰管理服務或自訂通知系統完成這些步驟。

集中式密鑰管理服務

許多集中式密鑰管理服務 (例如 HashiCorp Vault) 都提供自動密鑰輪替功能。您可以使用這些服務儲存及輪替服務帳戶金鑰。

我們不建議使用 Google Cloud's Secret Manager 儲存及輪替服務帳戶金鑰。這是因為應用程式需要Google Cloud 可辨識的身分,才能存取 Secret Manager 密鑰。如果應用程式已有可辨識的身分,應用程式即可使用該身分進行驗證,而不必使用服務帳戶金鑰。 Google Cloud Google Cloud

其他雲端密鑰管理服務 (例如 Azure KeyVault 和 AWS Secret Manager) 也適用相同概念。如果應用程式已有這些雲端供應商可辨識的身分,應用程式就能使用該身分向 Google Cloud 進行驗證,而不必使用服務帳戶金鑰。

自訂通知系統

服務帳戶金鑰輪替的另一種做法是建立系統,在需要輪替金鑰時傳送通知。舉例來說,您可以建立系統,在偵測到超過 90 天前建立的金鑰時傳送快訊。

首先,您需要找出需要輪替的金鑰。如要找出這些金鑰,建議使用 Cloud Asset Inventory 搜尋特定時間前建立的所有服務帳戶金鑰。

舉例來說,下列指令會列出 ID 為 123456789012 的機構中,在 2023-03-10 00:00:00 UTC 之前建立的所有服務帳戶金鑰:

gcloud asset search-all-resources \
    --scope="organizations/123456789012" \
    --query="createTime < 2023-03-10" \
    --asset-types="iam.googleapis.com/ServiceAccountKey" \
    --order-by="createTime"

如要進一步瞭解如何在 Cloud Asset Inventory 中搜尋資源,請參閱「搜尋資源」。找出需要輪替的金鑰後,您可以向適當的團隊傳送通知。

收到輪替金鑰通知的使用者應採取下列行動:

  1. 為同一個服務帳戶建立新金鑰
  2. 在所有應用程式中,以新金鑰取代現有金鑰。
  3. 停用取代的金鑰,並監控應用程式,確認應用程式是否正常運作。
  4. 確認應用程式運作正常後,刪除已替換的金鑰

服務帳戶金鑰到期

我們不建議使用會過期的服務帳戶金鑰進行金鑰輪替。這是因為如果未適當輪替金鑰,過期的金鑰可能會導致服務中斷。如要進一步瞭解服務帳戶金鑰到期的用途,請參閱使用者代管金鑰的到期時間

後續步驟