保護服務帳戶金鑰

服務帳戶沒有密碼,這點與一般使用者不同。服務帳戶會改用 ECDSA 金鑰組進行驗證。由於 RSA 金鑰組的私密金鑰可讓您以服務帳戶身分進行驗證,因此存取私密金鑰就如同知道使用者的密碼。私密金鑰又稱為服務帳戶金鑰。如未妥善管理服務帳戶金鑰,可能會產生安全性風險。

與服務帳戶金鑰相關的主要威脅如下:

  • 憑證外洩:服務帳戶金鑰可能會不慎儲存在不應儲存的位置。不肖人士可能會使用外洩的服務帳戶金鑰進行驗證,並取得您環境的存取權。

  • 權限升級:如果惡意行為人取得安全性不佳的服務帳戶金鑰,他們可能會使用該金鑰升級權限。

  • 資訊揭露:服務帳戶金鑰可能會意外揭露機密資料。

  • 不可否認性:透過服務帳戶金鑰進行驗證,並允許服務帳戶代表您執行作業,惡意行為者可能會隱藏自己的身分和動作。

本頁面說明管理、使用及保護服務帳戶金鑰的最佳做法。

防範憑證外洩

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

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

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

  • 開放原始碼專案的原始碼存放區。
  • 遭入侵服務的公開資料傾印。

除了公開位置外,不肖人士也可能在他們入侵的私人位置尋找服務帳戶金鑰。相關例子包括:

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

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

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

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

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

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

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

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

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

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

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

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

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

服務帳戶金鑰是符合特定模式的字串,即使內嵌在其他檔案或二進位檔中,也能識別出來。如果惡意行為人有權存取二進位檔,就能擷取內嵌在二進位檔中的任何服務帳戶金鑰。

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

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

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

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

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

輪替服務帳戶金鑰有助於降低金鑰外洩或遭竊帶來的風險。如果金鑰外洩,不肖分子可能要過幾天或幾週才會發現。定期輪替服務帳戶金鑰,可提高不肖份子取得金鑰時,金鑰已失效的機率。

使用到期時間讓金鑰自動過期

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

如要暫時存取需要服務帳戶金鑰的系統,請使用有效時間。舉例來說,在執行下列操作時,請使用到期時間:

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

請避免在下列情況使用有效期限:

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

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

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

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

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