二進位授權概念

本頁面提供與二進位授權相關的概念資訊。

政策

二進位授權政策 (也稱為專案單例政策) 是一組規則,可控管容器映像檔的部署作業。

持續驗證 (CV) 使用的政策類型不同,稱為平台政策

政策包含下列部分:

您可以使用下列任一方法設定政策:

  • Google Cloud 控制台
  • gcloud 指令

使用 gcloud 指令時,您會匯出 YAML 格式的政策定義並加以修改,然後再匯入專案。YAML 格式會反映二進位授權儲存空間中政策的內部結構。如要進一步瞭解這個格式,請參閱政策 YAML 參考資料

每個 Google Cloud 專案只能有一項政策。您必須在執行部署平台的專案中設定政策。在單一專案設定中,政策和所有下層資源 (驗證者驗證) 都位於同一專案中。如要建立權責劃分,可以使用多專案設定。在這種設定中,部署平台可以在一個專案中執行,驗證者可以位於另一個專案,而驗證結果可以位於其他專案。

如要在支援的平台上設定及使用二進位授權,請參閱「依平台設定」一文。

請參閱 GKE 的多專案設定範例。

規則

設定政策時,您需要定義政策規則。規則會定義映像檔必須滿足的限制,才能部署。一項政策會有一項預設規則,並可視平台而定,包含特定規則。詳情請參閱各平台支援的規則類型

每項規則都可以設定評估模式強制執行模式。舉例來說,規則可以要求映像檔必須有已簽署的認證,才能部署。

預設規則

每項政策都有預設規則。這項規則適用於任何不符合特定規則的部署要求。在政策 YAML 檔案中,預設規則是在 defaultAdmissionRule 節點中指定。

如要進一步瞭解如何設定預設規則,請參閱「設定政策」。

專屬規則

您可以在政策中新增一或多項特定規則。這類規則適用於要部署至特定叢集、服務帳戶或身分的映像檔。特定規則的支援情形會因平台而異。詳情請參閱各平台支援的規則類型

在政策 YAML 檔案中,每個叢集專屬規則都會在 clusterAdmissionRule 節點中指定。

各平台支援的規則類型

下表列出各部署平台支援的規則類型。

平台 預設規則 專屬規則
GKE 支援 叢集
Kubernetes 命名空間
Kubernetes 服務帳戶
Cloud Run 支援 不支援
GKE 附加叢集 支援 叢集
Kubernetes 命名空間
Kubernetes 服務帳戶
GKE on AWS 支援 叢集
Kubernetes 命名空間
Kubernetes 服務帳戶
Google Distributed Cloud 支援 叢集
Kubernetes 命名空間
Kubernetes 服務帳戶
Google Distributed Cloud 支援 叢集
Kubernetes 命名空間
Kubernetes 服務帳戶
Cloud Service Mesh 支援 Cloud Service Mesh 服務身分

評估模式

每項規則都有「評估模式」,可指定 Binary Authorization 對規則強制執行的限制類型。規則的評估模式是使用政策 YAML 檔案中的 evaluationMode 屬性指定。

評估模式有三種:

  • 允許所有映像檔:允許部署所有映像檔。
  • 拒絕所有映像檔:禁止部署所有映像檔。
  • 要求認證:要求簽署者先以數位方式簽署映像檔摘要,並建立認證,才能進行部署。 部署時,二進位授權強制執行者會使用驗證者驗證認證中的簽章,然後部署相關聯的映像檔。

強制執行模式

每項規則也都有強制執行模式,可指定映像檔不符合規則時,GKE 採取的動作。規則可採用下列強制執行模式:

  • 封鎖並稽核記錄:封鎖不符合規則的映像檔部署作業,並在稽核記錄中寫入訊息,說明映像檔未部署的原因。

  • 模擬測試:僅限稽核記錄:模擬測試模式是政策中的強制執行模式,允許部署不符規定的映像檔,但會將部署作業的詳細資料寫入 Cloud Audit Logs。在實際強制執行政策前,您可以使用模擬執行模式測試政策,例如在正式環境中測試。

大多數生產規則都使用「封鎖並稽核記錄」強制執行模式。模擬執行:僅限稽核記錄主要用於測試環境中的政策,確保政策生效前運作正常。

規則的強制執行模式是在政策 YAML 檔案中,使用 enforcementMode 屬性指定。

如要進一步瞭解寫入 Cloud 稽核記錄的訊息,請參閱「查看稽核記錄 (GKE、Google Distributed Cloud、Cloud Service Mesh)」或「查看稽核記錄 (Cloud Run)」。

持續驗證

持續驗證 (CV) 是二進位授權的一項功能,可定期檢查與執行中 Pod 相關聯的映像檔,確保持續符合政策規定。

進一步瞭解 CV

豁免圖片

豁免圖片是指不受政策規則限制的圖片。 二進位授權一律允許部署豁免映像檔。每個專案都有一個豁免映像檔的許可清單,由登錄路徑指定。根據預設,路徑 gcr.io/google_containers/*k8s.gcr.io/** 和其他路徑中的映像檔會遭到排除,因為這些路徑包含 GKE 啟動叢集所需的資源,且預設政策已啟用。

如要將豁免圖片加入許可清單,請在政策檔案中新增下列內容:

admissionWhitelistPatterns:
  - namePattern: EXEMPT_IMAGE_PATH

EXEMPT_IMAGE_PATH 替換為要排除的圖片路徑。如要排除其他圖片,請新增其他 - namePattern 項目。進一步瞭解 admissionWhitelistPatterns

許可清單模式

如要將註冊資料庫位置符合指定路徑的所有映像檔加入許可清單:

gcr.io/example-project/*

如要將註冊資料庫位置是指定路徑 (例如 gcr.io/example-project/my-directory/helloworld) 任何子目錄的所有映像檔加入允許清單:

gcr.io/example-project/**

如要將特定圖片加入允許清單,請按照下列步驟操作:

gcr.io/example-project/helloworld

如要依標記將特定版本的映像檔加入許可清單,請執行下列步驟:

gcr.io/example-project/helloworld:latest
gcr.io/example-project/helloworld:my-tag

如要將映像檔的所有版本和標記加入允許清單:

gcr.io/example-project/helloworld@*

如要依摘要將特定版本的映像檔加入允許清單,請執行下列操作:

gcr.io/example-project/helloworld@sha256:77b0b75136b9bd0fd36fb50f4c92ae0dbdbbe164ab67885e736fa4374e0cbb8c

進一步瞭解如何使用容器映像摘要

瞭解如何使用Google Cloud 主控台指令列工具REST API 管理豁免映像檔。

Google 維護的系統映像檔

信任 Google 維護的所有系統映像檔會導致二進位授權從後續政策評估中,排除 Google 維護的系統映像檔清單。啟用這項設定後,政策執行作業不會封鎖 GKE 要求的映像檔。系統政策的評估作業會在使用者政策評估作業之前進行,且兩者會一併評估。

您可以使用政策 YAML 檔案中的 globalPolicyEvaluationMode 屬性,啟用或停用這項設定。您可以使用下列指令查看系統政策內容:

gcloud alpha container binauthz policy export-system-policy

認證

「認證」是認證圖片的數位文件。部署期間,二進位授權會先驗證認證,再允許部署映像檔。

建立認證的程序有時稱為「簽署映像檔」。 映像檔建構完成後,就會建立認證。每個這類圖片都有全域專屬摘要。簽署者會使用金鑰組中的私密金鑰簽署映像檔摘要,並使用簽章建立認證。在部署時,二進位授權執行者會使用驗證者公開金鑰,驗證認證中的簽名。通常一個驗證者會對應到一個簽署者。

認證表示相關聯的映像檔是透過成功執行特定必要程序所建構。舉例來說,如果簽署者是品質保證 (QA) 職能的代表,認證可能表示映像檔已通過所有必要的端對端功能測試 (在預先發布環境中)。

如要在二進位授權中啟用認證,請將政策的 evaluationMode 設為 REQUIRE_ATTESTATION

瞭解如何建立及使用認證者和認證

簽署者

簽署者是建立認證的人員或自動化程序,方法是使用私密金鑰簽署專屬圖片描述元。在部署相關聯的映像檔之前,系統會先在部署時,透過儲存在驗證者中的對應公開金鑰驗證認證。

瞭解如何建立及使用認證者和認證

驗證者

驗證者是二進位授權用來在映像檔部署時驗證認證的 Google Cloud 資源。認證者包含與簽署者用來簽署映像檔摘要並建立認證的私密金鑰相對應的公開金鑰。二進位授權執行程式會在部署時使用認證者,限制哪些映像檔可部署至具有隨附可驗證認證的項目,這些認證是在部署前建立。

驗證者通常由安全營運人員管理,他們也會管理公開和私密金鑰配對;簽署者通常是軟體工程師或 DevOps QA 或法規遵循人員,負責產生可部署的映像檔、使用私密金鑰簽署映像檔,以及在嘗試部署映像檔前建立認證。

驗證者具備:

設定含有「需要認證」規則的政策時,您必須為每個需要驗證映像檔是否可供部署的人員或程序新增驗證者。您可以使用 Google Cloud 控制台、gcloud介面或 Binary Authorization REST API 新增驗證者。

瞭解如何建立及使用認證者和認證

加密編譯金鑰

如果政策包含「需要認證」規則,二進位授權會在部署時使用數位簽章驗證映像檔。

系統會產生金鑰組。私密金鑰簽署者用來簽署圖片描述元。這會建立認證

然後,系統會建立 attestor 並儲存在政策中。上傳與用於簽署的私密金鑰相對應的公開金鑰,並附加至驗證者。

嘗試部署映像檔時,二進位授權會使用政策中的驗證者來驗證映像檔的認證。如果可以驗證認證,系統就會部署映像檔。

Binary Authorization 支援兩種類型的金鑰:

  • 公開金鑰基礎架構 (X.509) (PKIX)
  • PGP

PKIX 金鑰可儲存在本機、外部或 Cloud Key Management Service 中。

建立加密金鑰和驗證者

Artifact Analysis 附註

二進位授權會使用構件分析功能,儲存授權程序中使用的可信中繼資料。您建立的每個認證者都必須建立一個構件分析記事。每項認證都會儲存為這則附註的例項。

當二進位授權評估規則時,如果規則要求驗證者驗證映像檔,二進位授權會檢查 Artifact Analysis 儲存空間,確認是否提供必要的認證。