二進制授權(Binary Authorization)是什麼?3 大功能與部署流程完整介紹

二進制授權(Binary Authorization)是什麼?3 大功能與部署流程完整介紹

今天要來聊聊使用 Kubernetes 時重要卻常被忽略的議題「微服務的來源安全」試想一下,Kubernetes 叢集裡運行著許多微服務,作為小零件推動著系統運作。但這些零件從何而來?能否安全執行?這次就來了解未經驗證的映象檔有哪些隱憂,以及如何透過 Google Cloud 推出的二進制授權(Binary Authorization)有效進行安全性控管吧!

未經驗證的映像檔有哪些隱憂?

以資安的角度,未經驗證的映像檔來源,可能有以下風險:

3 大資安風險

  • 惡意行為者入侵叢集:惡意行為者可能會試圖入侵 Kubernetes 叢集,如果成功獲得足夠的權限,惡意行為者就可以在無限制映像檔案來源的情況下,從未知來源部署其他容器,這些容器可能包含惡意程式碼,例如木馬或蠕蟲,可用於竊取資料或破壞系統。
  • 授權使用者意外地執行不需要的容器:具有建立 Pod 權限的授權使用者可能會在叢集內執行不需要的容器,這些容器可能包含漏洞或安全風險。
  • 授權使用者意外地覆蓋 Docker 映像標籤:授權使用者可能會將含有潛藏程式碼的容器映像檔標記覆蓋 Artifact Registry 內映像檔的標籤。導致叢集使用映像檔標籤拉取映像檔時,含有潛藏程式碼的容器成為部署的一部分。

 

二進制授權(Binary Authorization)介紹

服務概述

為了幫助客戶解決這些問題,Google Cloud 提供了二進制授權(Binary Authorization)
,透過在你的叢集強制執行部署時安全控制項,保證 Google Kubernetes Engine (GKE) 上僅部署受信任的容器鏡像。

DevOps 或安全團隊可以要求對來源映像檔進行簽名,在部署時強制執行簽名驗證。通過這種強制驗證,各團隊即可確保構建與發佈流程中僅使用驗證後的映像檔,進而更嚴格地管控組織的環境。對 Binary Authorization 服務有初步了解之後,接下來,將說明其服務 3 大功能及認識專有名詞。

3 大功能

Binary Authorization 和 Container Analysis API 是基於開放原始碼專案 Kritis 和 Grafeas 所開發的託管服務。Binary Authorization 服務將確保僅符合特定標準的容器映像檔,才能被部署到生產環境。主要功能可分為三大項:

  • 設定政策: 使用者可以制定一系列「規則」,例如要求映像檔通過漏洞掃描、擁有簽署的 Attestation 等等。
  • 驗證映像檔: 在部署前 Binary Authorization 會檢查映像是否符合設定的政策,等同經過一道道關卡驗證。
  • 阻止違規映像檔: 只有通過所有檢查的映像檔才能被部署,未經授權或不符合安全標準的映像檔將被拒絕,無法部署進正式環境中。

專有名詞介紹

  • Binary Authorization policy : 以 YAML 形式組成,定義一套 Rules ,用來管理容器映像檔的部署流程。每個 Rules 除了有一個預設規則之外,還可以設定「評估模式」(允許哪些來源的映像檔)和「強制模式」(欲採取的行動)。 
  • Container Analysis API:為整個安全流程的基礎建設,扮演著兩個關鍵角色:軟體資源元資料管理中心和 Grafeas API 實現,可儲存並支援查詢和檢索所有軟體工件的關鍵元資料。使用者可透過 Container Analysis API 儲存簽署映像檔後產生的 Attestation ,在部署時,讓 Binary Authorization 透過存取 Container Analysis API,確認映像檔是否經過特定流程的合法驗證。
  • Attestation:用於認證容器映像的數位文件。在簽署映像檔時產生,並以 Occurrence 的形式存放在 Container Analysis API 的 Note 之中。在部署時,Binary Authorization 會在允許部署映像檔之前存取 Container Analysis API 並驗證 Attestation。
  • Signers:是透過使用私鑰簽署映像檔的唯一辨識碼(Digest)來創建 Attestation 的人或自動化流程。
  • Attestor:就像一個身份驗證官,由 Google Cloud 資源負責管理,Attestor 會保存 Signers 使用的私鑰所對應的公鑰,用於核實 Attestation 的真實性。在部署過程中,只有附帶經過 Attestor 驗證的 Attestation 的映像檔才能被部署。
  • Note:存放於 Artifact Analysis(基於 Container Analysis API),Note 裡面存放著軟體元資源的重要資訊,在 Artifact Analysis notes 會存放簽署後產生的 Attestation(以 Occurrence 的形式)
  • Occurrence :顯示軟體資源的重要資訊,在這裡會表述簽署後產生的 Attestation。
 

二進制授權(Binary Authorization)部署與驗證流程

部署流程

如何使用 Binary Authorization 加入 CI/CD 流程(請參照圖片 1~5 步驟):

  • 步驟1:用於構建容器映像檔的程式碼會被推送到原始碼儲存庫,例如 Github,Cloud Source Repositories。
  • 步驟2:使用持續整合(Continuous Integration)工具,如 Cloud Build 建置和測試容器。
  • 步驟3:建置完成後,容器映像檔會被推送到 Container Registry/Artifact Registry 或其他用於存放映像檔的 Registry。
  • 步驟4:Signers 使用加密金鑰對,對容器映像檔進行簽署,產生的 Attestation 會以 Occurrence 的形式存放在 Container Analysis API 的 Note 內。
  • 步驟5:在部署時,Attestor 會使用金鑰對中的公鑰來驗證 Attestation。Binary Authorization 會強制執行政策,要求部署的容器映像檔必須具有驗證過的 Attestation。

0208-1_Binary Athorization_部署流程

截圖自:Binary Authorization 產品頁
©2024 Google

增加簽署流程

在簽署的流程中,使用者也可添加多個額外的簽署流程,更嚴格地管控組織內的環境,其中包括:執行單元測試、原始碼分析檢查、授權驗證、漏洞分析等等。每個步驟都可以被賦予「Attestation」,也就是 Signers 進行該步驟完成後的簽署。在流程中,使用者甚至可以為每個步驟使用不同的金鑰,這樣每個 Attestation 步驟就可以由不同的人、系統來執行簽署。

0208-2_Binary Athorization_增加簽署流程

截圖自:cloudskillsboost

驗證流程

Binary Authorization 如何驗證已簽署完的映像檔(請參照圖片 1~4 流程)

在部署的過程中,Kubernetes Admission Controller 在收到建立或更新 Pod 的 API 請求時,會進行以下步驟:

  • 向 Binary Authorization API 發送一個 WebHook 來請求 policy 決策。
  • Binary Authorization 會查詢 policy 內相關的 Rules。
  • 如果有必要 Container Analysis API 也會被查詢,以取得必要的 Attestation occurrences。
  • 判斷政策
    • 如果容器映像檔符合政策,則允許它運行。
    • 如果容器映像檔不符政策,則會向 API 客戶端返回一個錯誤訊息,並說明為什麼被阻止。

0208-3_Binary Athorization_驗證流程

截圖自:cloudskillsboost

 

結論

在今天的文章中,我們探討了如何使用 Binary Authorization 來保護 Google Kubernetes Engine (GKE) 部署流程中的安全。透過 Binary Authorization,使用者可以確保只有通過驗證的容器映像檔可以部署到生產環境中。這可以大幅降低遭受惡意軟體攻擊或組織內不合規操作的風險。

這次介紹了 Binary Authorization 服務 3 大功能、部署與驗證等完整流程。各位如果有任何 Binary Authorization 服務上的疑問,歡迎聯絡 Cloud Ace 獲得更進一步的資訊。

延伸閱讀:

Cloud Ace 研討會主頁