保護服務帳戶金鑰

Google Distributed Cloud (GDC) 實體隔離方案設備的服務帳戶金鑰管理功能,可協助您防止未經授權的工作負載驗證和提權。與使用者帳戶不同,服務帳戶會使用 ECDSA 金鑰組 (而非密碼) 進行驗證,因此每個私人服務帳戶金鑰都等同於永久憑證。套用儲存、輪替和到期最佳做法,可減少專案和組織的曝險。

服務帳戶金鑰威脅

如果服務帳戶金鑰未受保護,環境會面臨下列威脅:

  • 憑證外洩:服務帳戶金鑰可能會不小心存放在不該存放的位置。惡意人士可能會使用外洩的服務帳戶金鑰進行驗證,並存取您的環境。

  • 提權:如果惡意人士取得安全性不佳的服務帳戶金鑰,可能會利用該金鑰提升權限。

  • 資訊揭露:服務帳戶金鑰可能會不小心揭露機密資料。

  • 不可否認性:惡意人士可能會使用服務帳戶金鑰進行驗證,並讓服務帳戶代表他們執行作業,藉此隱藏身分和動作。

防範憑證外洩

服務帳戶金鑰與使用者名稱和密碼一樣,都是一種憑證。如果使用者可以存取有效的服務帳戶金鑰,就能使用該金鑰進行驗證,並存取對應服務帳戶有權存取的資源。

對惡意人士來說,服務帳戶金鑰可能比外洩的密碼更有價值。舉例來說,如果使用者帳戶已設定使用兩步驟驗證和登入身分確認問題,則嘗試使用外洩密碼登入不太可能成功。相較之下,使用外洩的服務帳戶金鑰進行驗證則可能成功,因為服務帳戶不受任何額外登入驗證的限制。

惡意人士可能會透過下列方式尋找服務帳戶金鑰:

  • 開放原始碼專案的程式碼存放區。
  • 遭入侵服務的公開資料轉儲。

除了公開位置,惡意人士也可能在遭入侵的私人位置尋找服務帳戶金鑰。例如:

  • 電子郵件收件匣
  • 檔案共用區
  • 備份儲存空間
  • 暫存檔案系統目錄

如要有效降低服務帳戶金鑰外洩的風險,可以減少流通的金鑰數量,並避免建立新的金鑰。下列各節說明如何限制流通的服務帳戶金鑰數量,以及哪些其他措施可協助您降低服務帳戶外洩的風險。

避免將服務帳戶金鑰留在暫時位置

建立服務帳戶金鑰後,請立即將金鑰移至要儲存的位置。請確認您未不小心將副本留在電腦的下載資料夾或資源回收筒中。

請勿在使用者之間傳遞服務帳戶金鑰

部署需要服務帳戶金鑰的應用程式時,您可能沒有自行建立服務帳戶金鑰的權限。您可能需要請其他人為您建立服務帳戶金鑰。

請勿將服務帳戶金鑰提交至原始碼存放區

服務帳戶金鑰是憑證,必須防止未經授權的存取。如果將服務帳戶金鑰提交至原始碼存放區,未經授權的使用者和惡意人士存取金鑰的風險就會增加:

  • 惡意人士可能會掃描公開原始碼存放區的原始碼,尋找外洩的金鑰。

  • 日後,您可能會決定將私人來源存放區轉換為公開存放區,而未先檢查其中是否有金鑰。

  • 其他團隊成員可能會將原始碼副本儲存在工作站上。

處理使用服務帳戶金鑰的程式碼時,請務必將服務帳戶金鑰與原始碼分開儲存,降低不小心將金鑰提交至原始碼存放區的風險。在許多情況下,您可以在開發期間完全不使用服務帳戶金鑰,改用個人憑證,進一步降低這項風險。

請勿在程式二進位檔中嵌入服務帳戶金鑰

服務帳戶金鑰是符合特定模式的字串,即使嵌入其他檔案或二進位檔,也能加以識別。如果惡意人士取得二進位檔,就能擷取嵌入其中的任何服務帳戶金鑰。

伺服器端應用程式的程式二進位檔可能會託管在構件存放區中,也可能會複製到開發人員工作站進行偵錯。將服務帳戶金鑰與程式二進位檔分開,有助於確保可存取二進位檔的使用者不會隱含取得服務帳戶憑證的存取權。

  • 請勿將服務帳戶用於用戶端應用程式,例如工具、電腦程式或行動應用程式。
  • 如果是伺服器端應用程式,請勿將服務帳戶金鑰嵌入二進位檔。請改為將金鑰與應用程式二進位檔分開。

輪替服務帳戶金鑰,降低金鑰外洩造成的安全性風險

雖然您可以降低意外洩漏服務帳戶金鑰的可能性,但可能難以完全消除風險。

金鑰輪替是指將現有金鑰替換為新金鑰,然後將替換的金鑰失效。建議您定期輪替所有管理的金鑰,包括服務帳戶金鑰。

輪替服務帳戶金鑰,有助於降低金鑰外洩或遭竊的風險。如果金鑰外洩,惡意人士可能需要幾天或幾週的時間才能發現。如果定期輪替服務帳戶金鑰,惡意人士取得外洩金鑰時,金鑰失效的機率較高。

設定到期時間,讓金鑰自動失效

根據預設,您建立的服務帳戶金鑰有效期限為一年,在您刪除前都有效。您也可以自行設定到期時間。為服務帳戶金鑰設定到期時間,可縮短永久憑證的生命週期,降低安全性風險。不過,設定到期時間也會帶來其他風險,例如工作負載可能會在金鑰到期時失敗。

如果需要暫時存取需要服務帳戶金鑰的系統,請使用到期時間。舉例來說,在下列情況下,請使用到期時間:

  • 在非正式環境中,為只能使用服務帳戶金鑰驗證的應用程式開發程式碼。
  • 使用只能透過服務帳戶金鑰驗證的第三方工具。

請避免在下列情況使用到期時間:

  • 正式環境工作負載。在正式環境中,服務帳戶金鑰過期可能會導致意外中斷。建議您改用不會過期的金鑰,並透過金鑰輪替管理金鑰生命週期。
  • 需要永久存取權的非正式環境工作負載,例如持續整合 (CI) 管道。
  • 金鑰輪替系統,可防止金鑰在指定時間後遭到使用。

如要限制服務帳戶金鑰的有效期限,您可以為專案、資料夾或組織中新建立的金鑰設定到期時間。到期時間不適用於現有金鑰。

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

為執行應用程式的每部機器使用專屬金鑰

為縮小可疑活動的潛在來源範圍,請為每個應用程式副本建立個別金鑰。這樣一來,您就能使用許多服務新增至稽核記錄的 serviceAccountKeyName 欄位,區分活動來源機器。