保護 Cloud Run 函式
本頁面概略說明如何控管與 Cloud Run 函式資源的互動情形。
存取權控管
您可以透過兩種方式控管 Cloud Run 函式的存取權:
透過身分識別保護存取權
控制函式存取權的方法之一,是要求要求實體使用憑證來識別自己。憑證是某種「名稱」,由實體知道或可存取的機密資料保護,例如密碼或硬體加密裝置。根據預設,函式會以私密方式部署,並需要這類憑證,但您也可以將函式部署為公開,也就是不需要憑證。
這個程序的第一步是驗證憑證,確保要求者就是聲稱的使用者,並提供正確的名稱和密碼組合。這個步驟稱為 (Authentication
)。
驗證要求者的身分後,即可評估其存取層級和所授權的權限。這個步驟稱為 (Authorization
)。
驗證
Cloud Run 函式支援兩種不同的身分,也稱為原則實體:
- 服務帳戶:這是一種特殊帳戶,可做為非人類身分的身份,例如函式、應用程式或 VM。這些方法可讓您驗證非人物。
- 使用者帳戶:這些帳戶代表使用者,可能是個別 Google 帳戶持有人,或是 Google 控管實體 (例如 Google 群組) 的一部分。
無論是服務帳戶還是使用者帳戶,憑證的名稱部分通常是與帳戶相關聯的電子郵件地址。使用者帳戶的機密通常是密碼,而服務帳戶的機密通常是與帳戶一併建立的金鑰組的私密金鑰。
不過,使用者密碼和服務帳戶金鑰本身就非常強大:它們可提供對資料和功能的廣泛存取權,且在主動撤銷或變更前,這些權限都會持續有效。因此,為了限制憑證外洩時可能造成的潛在損害, Google Cloud 會將核心憑證替換為以其為基礎的短期憑證 (即 權杖),這類憑證的有效期限有限,並會在要求序列中即時建立。符記會隨要求傳遞,用於安全驗證帳戶。
Cloud Run 函式會使用兩種符記:存取憑證和 ID 符記。存取權杖通常用於驗證 API 呼叫,而 ID 權杖則用於驗證對開發人員建立的程式碼的呼叫,例如函式呼叫另一個函式。權杖本身是使用 OAuth 2 架構和其擴充功能 Open Identity Connect 建立,但這個程序複雜且容易出錯,因此強烈建議您使用 Cloud 用戶端程式庫來管理這個程序。
授權
確認要求實體的身分後,必須評估要求者可執行的操作。這項評估會根據驗證帳戶在設定時所授予的權限進行。Cloud Run 函式會使用Identity and Access Management (IAM) 執行這項操作。角色是指為了方便起見而將個別權限分組的集合,可直接指派給帳戶,也可以透過稱為政策的設定指派。角色集合中的每個個別權限通常會對應至要求服務公開的單一 REST API 呼叫。如要進一步瞭解這項程序,請參閱「透過 IAM 授予存取權」。
網路存取權控管
您也可以為個別功能指定網路設定,限制存取權。這樣就能精準控管函式與網路的進出流量。
隔離和沙箱
在內部,系統會使用 gVisor 沙箱平台隔離函式例項。根據設計,函式無法存取其他函式的作業環境。
執行環境更新
經過一段時間的穩定性測試之後,Google 會提供安全性修補程式和維護更新內容。Cloud Run 函式可能會將更新內容套用至執行環境的其他方面,例如作業系統或內含套件。這些更新內容有助於確保函式的執行環境安全無虞。
Cloud Run 函式安全性更新
您可以選擇下列其中一種安全性更新政策:
自動更新 (預設):執行階段環境的更新和安全性修補程式會在執行階段映像檔的新版本中發布。經過一段時間的穩定性和可靠性測試後,更新的執行階段會推送至所有函式,進而達到零停機時間更新。Cloud Run 函式 (第 1 代) 和 Cloud Run 函式支援自動安全性更新功能。如要採用語言層級安全性修正,您可能需要重建使用編譯語言 (例如 Go 或 Java) 的函式。
關於部署更新:除非另有說明,否則只有在部署或重新部署函式時,才會將更新和安全性修補程式套用至執行階段。您可以在 Cloud Run 函式 (第 1 代) 和 Cloud Run 函式中查看部署作業更新。
您可以使用 gcloud functions deploy
指令中的 --runtime-update-policy
標記變更執行階段更新政策。
如要進一步瞭解執行環境安全性更新,請參閱安全性更新政策。