服務帳戶沒有密碼,這點與一般使用者不同。服務帳戶會改用 ECDSA 金鑰組進行驗證。由於 RSA 金鑰組的私密金鑰可讓您以服務帳戶身分進行驗證,因此存取私密金鑰就如同知道使用者的密碼。私密金鑰又稱為服務帳戶金鑰。如未妥善管理服務帳戶金鑰,可能會產生安全性風險。
與服務帳戶金鑰相關的主要威脅如下:
憑證外洩:服務帳戶金鑰可能會不慎儲存在不應儲存的位置。不肖人士可能會使用外洩的服務帳戶金鑰進行驗證,並取得您環境的存取權。
權限升級:如果惡意行為人取得安全性不佳的服務帳戶金鑰,他們可能會使用該金鑰升級權限。
資訊揭露:服務帳戶金鑰可能會意外揭露機密資料。
不可否認性:透過服務帳戶金鑰進行驗證,並允許服務帳戶代表您執行作業,惡意行為者可能會隱藏自己的身分和動作。
本頁面說明管理、使用及保護服務帳戶金鑰的最佳做法。
防範憑證外洩
服務帳戶金鑰與使用者名稱和密碼類似,都是一種憑證。如果使用者可以存取有效的服務帳戶金鑰,就能使用該金鑰進行驗證,並存取相應服務帳戶有權存取的資源。
不肖人士可能會認為服務帳戶金鑰比外洩的密碼更有價值。舉例來說,如果使用者帳戶已設定兩步驟驗證和登入身分確認問題,使用者就不太可能使用外洩的密碼登入帳戶。相較之下,如果使用外洩的服務帳戶金鑰進行驗證,則很可能會成功,因為服務帳戶不受任何額外的登入驗證限制。
惡意行為者可能會透過下列方式尋找服務帳戶金鑰:
- 開放原始碼專案的原始碼存放區。
- 遭入侵服務的公開資料傾印。
除了公開位置外,不肖人士也可能在他們入侵的私人位置尋找服務帳戶金鑰。相關例子包括:
- 電子郵件收件匣
- 檔案共用區
- 備份儲存空間
- 暫時性檔案系統目錄
如要有效降低服務帳戶金鑰外洩的風險,請減少流通的金鑰數量,並避免建立新金鑰。下列各節說明如何限制流通中的服務帳戶金鑰數量,以及其他有助於降低服務帳戶外洩風險的措施。
避免將服務帳戶金鑰留在暫時位置
建立服務帳戶金鑰後,請立即將金鑰移至您要儲存的位置。請確認您沒有不小心將副本留在電腦的下載資料夾或資源回收筒。
請勿在使用者之間傳遞服務帳戶金鑰
部署需要服務帳戶金鑰的應用程式時,您可能沒有權限自行建立服務帳戶金鑰。您可能需要請其他人為您建立服務帳戶金鑰。
請勿將服務帳戶金鑰提交至原始碼存放區
服務帳戶金鑰是憑證,必須防止未經授權的存取。如果將服務帳戶金鑰提交至原始碼存放區,金鑰遭未經授權的使用者和惡意行為者存取的風險就會提高:
惡意行為者可能會掃描公開原始碼存放區的原始碼,尋找外洩的金鑰。
日後您可能會決定將私人來源存放區設為公開存放區,但未先檢查是否有金鑰。
其他團隊成員可能會將原始碼副本儲存在工作站。
使用服務帳戶金鑰處理程式碼時,請務必將服務帳戶金鑰與原始碼分開儲存,以免不小心將金鑰提交至原始碼存放區。在許多情況下,您可以在開發期間完全不使用服務帳戶金鑰,改用個人憑證,進一步降低這項風險。
請勿在程式二進位檔中嵌入服務帳戶金鑰
服務帳戶金鑰是符合特定模式的字串,即使內嵌在其他檔案或二進位檔中,也能識別出來。如果惡意行為人有權存取二進位檔,就能擷取內嵌在二進位檔中的任何服務帳戶金鑰。
伺服器端應用程式的程式二進位檔可能存放在構件存放區,也可能複製到開發人員工作站,以利進行偵錯。將服務帳戶金鑰與程式二進位檔分開,有助於確保可存取二進位檔的使用者不會間接取得服務帳戶憑證。
- 如果是工具、電腦程式或行動應用程式等用戶端應用程式,請勿使用服務帳戶。
- 如果是伺服器端應用程式,請勿將服務帳戶金鑰嵌入二進位檔。請改為將金鑰與應用程式二進位檔分開。
輪替服務帳戶金鑰,降低金鑰外洩造成的安全性風險
雖然您可以降低服務帳戶金鑰遭意外洩漏的機率,但很難完全消除風險。
金鑰輪替是指以新金鑰取代現有金鑰,然後使取代的金鑰失效。建議您定期輪替管理的所有金鑰,包括服務帳戶金鑰。
輪替服務帳戶金鑰有助於降低金鑰外洩或遭竊帶來的風險。如果金鑰外洩,不肖分子可能要過幾天或幾週才會發現。定期輪替服務帳戶金鑰,可提高不肖份子取得金鑰時,金鑰已失效的機率。
使用到期時間讓金鑰自動過期
根據預設,您建立的服務帳戶金鑰效期為一年,且在您刪除前都有效。您也可以自行設定到期時間。為服務帳戶金鑰設定到期時間,可縮短永久憑證的生命週期,進而降低安全性風險。不過,設定到期時間也會帶來其他風險,例如金鑰到期時,工作負載可能會失敗。
如要暫時存取需要服務帳戶金鑰的系統,請使用有效時間。舉例來說,在執行下列操作時,請使用到期時間:
- 在非正式環境中開發程式碼,以供只能使用服務帳戶金鑰驗證的應用程式使用。
- 使用只能透過服務帳戶金鑰驗證的第三方工具。
請避免在下列情況使用有效期限:
- 正式環境工作負載。在正式環境中,過期的服務帳戶金鑰可能會導致意外中斷。請改用不會過期的金鑰,並透過金鑰輪替管理金鑰生命週期。
- 需要永久存取權的非正式環境工作負載,例如持續整合 (CI) 管道。
- 金鑰輪替系統,可防止金鑰在指定時間後繼續使用。
如要限制服務帳戶金鑰的有效期限,您可以在專案、資料夾或機構中,為新建立的金鑰設定到期時間。現有金鑰不受效期限制。
建立服務帳戶金鑰輪替程序,也有助於在懷疑服務帳戶金鑰遭盜用時迅速採取行動。
為執行應用程式的每部機器使用專屬金鑰
為協助您縮小可疑活動的潛在來源範圍,請為每個應用程式副本建立個別金鑰。這樣一來,您就能使用許多服務新增至稽核記錄的 serviceAccountKeyName
欄位,區分活動的來源機器。