本頁說明如何使用二進位授權持續驗證 (CV) 安全漏洞檢查,監控與 CV 啟用 Google Kubernetes Engine (GKE) 叢集上執行的 Pod 相關聯的安全漏洞。
費用
本指南使用下列 Google Cloud 服務:
- Artifact Analysis
- 二進位授權,但 CV 在預先發布版階段免費提供
- GKE
您可以使用 Pricing Calculator 根據預測用量估算費用。
事前準備
- 登入 Google Cloud 帳戶。如果您是 Google Cloud新手,歡迎 建立帳戶,親自評估產品在實際工作環境中的成效。新客戶還能獲得價值 $300 美元的免費抵免額,可用於執行、測試及部署工作負載。
-
安裝 Google Cloud CLI。
-
若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI。
-
執行下列指令,初始化 gcloud CLI:
gcloud init -
選取或建立專案所需的角色
- 選取專案:選取專案時,不需要具備特定 IAM 角色,只要您在專案中獲派角色,即可選取該專案。
-
建立專案:如要建立專案,您需要專案建立者角色 (
roles/resourcemanager.projectCreator),其中包含resourcemanager.projects.create權限。瞭解如何授予角色。
-
建立 Google Cloud 專案:
gcloud projects create PROJECT_ID
將
PROJECT_ID替換為您要建立的 Google Cloud 專案名稱。 -
選取您建立的 Google Cloud 專案:
gcloud config set project PROJECT_ID
將
PROJECT_ID替換為 Google Cloud 專案名稱。
啟用 Artifact Analysis、二進位授權和 Google Kubernetes Engine API:
啟用 API 時所需的角色
您必須具備
serviceusage.services.enable權限,才能啟用 API。如果您建立了專案,可能已透過「擁有者」角色 (roles/owner) 取得這項權限。否則,您可以透過「服務使用情形管理員」角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色。gcloud services enable binaryauthorization.googleapis.com
containeranalysis.googleapis.com container.googleapis.com -
安裝 Google Cloud CLI。
-
若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI。
-
執行下列指令,初始化 gcloud CLI:
gcloud init -
選取或建立專案所需的角色
- 選取專案:選取專案時,不需要具備特定 IAM 角色,只要您在專案中獲派角色,即可選取該專案。
-
建立專案:如要建立專案,您需要專案建立者角色 (
roles/resourcemanager.projectCreator),其中包含resourcemanager.projects.create權限。瞭解如何授予角色。
-
建立 Google Cloud 專案:
gcloud projects create PROJECT_ID
將
PROJECT_ID替換為您要建立的 Google Cloud 專案名稱。 -
選取您建立的 Google Cloud 專案:
gcloud config set project PROJECT_ID
將
PROJECT_ID替換為 Google Cloud 專案名稱。
啟用 Artifact Analysis、二進位授權和 Google Kubernetes Engine API:
啟用 API 時所需的角色
您必須具備
serviceusage.services.enable權限,才能啟用 API。如果您建立了專案,可能已透過「擁有者」角色 (roles/owner) 取得這項權限。否則,您可以透過「服務使用情形管理員」角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色。gcloud services enable binaryauthorization.googleapis.com
containeranalysis.googleapis.com container.googleapis.com - 確認 gcloud CLI 已更新至最新版本。
- 安裝
kubectl指令列工具。 - 如果二進位授權政策和 GKE 叢集位於不同專案,請務必在這兩個專案中啟用二進位授權。
必要的角色
本節說明如何為這項檢查設定角色。
總覽
如果您在同一個專案中執行本指南提及的所有產品,則不需要設定任何權限。啟用二進位授權時,系統會正確設定角色。如果您在不同專案中執行產品,請務必按照本節所述設定角色。
為確保每個專案中的 Binary Authorization 服務代理程式具備評估 CV 漏洞檢查的必要權限,請要求管理員在每個專案中,將下列 IAM 角色授予 Binary Authorization 服務代理程式:
-
如果叢集專案與政策專案不同:
在叢集專案二進位授權服務代理人上,授予二進位授權政策評估者 (
roles/binaryauthorization.policyEvaluator) 角色,以便存取政策專案。 -
如果構件專案與政策專案不同:
在政策專案的二進位授權服務代理程式上,指派「容器分析例項檢視者」 (
roles/containeranalysis.occurrences.viewer),以便存取安全漏洞資訊
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
管理員或許也能透過自訂角色或其他預先定義的角色,授予每個專案的二進位授權服務代理程式必要權限。
使用 gcloud CLI 授予角色
為確保每個專案中的服務帳戶都具備評估這項檢查所需的權限,請將下列 IAM 角色授予每個專案中的服務帳戶:
如果執行叢集的專案與政策所在的專案不同,您必須授予叢集專案的二進位授權服務代理權限,才能存取政策專案中的政策。
取得叢集專案的二進位授權服務代理:
PROJECT_NUMBER=$(gcloud projects list \ --filter="projectId:CLUSTER_PROJECT_ID" \ --format="value(PROJECT_NUMBER)") CLUSTER_SERVICE_ACCOUNT="service-$PROJECT_NUMBER@gcp-sa-binaryauthorization.iam.gserviceaccount.com"將
CLUSTER_PROJECT_ID替換為叢集的專案 ID。允許 CV 評估叢集上的政策:
gcloud projects add-iam-policy-binding POLICY_PROJECT_ID \ --member="serviceAccount:$CLUSTER_SERVICE_ACCOUNT" \ --role='roles/binaryauthorization.policyEvaluator'將
POLICY_PROJECT_ID替換為包含政策的專案 ID。
如果 Artifact Analysis 專案與二進位授權政策專案不同,請按照下列步驟操作:
取得政策專案的二進位授權服務代理人:
PROJECT_NUMBER=$(gcloud projects list \ --filter="projectId:POLICY_PROJECT_ID" \ --format="value(PROJECT_NUMBER)") SERVICE_ACCOUNT="service-$PROJECT_NUMBER@gcp-sa-binaryauthorization.iam.gserviceaccount.com"將
POLICY_PROJECT_ID替換為包含政策的專案 ID。授予角色:
gcloud projects add-iam-policy-binding VULNERABILITY_PROJECT_ID \ --member="serviceAccount:$SERVICE_ACCOUNT" \ --role='roles/containeranalysis.occurrences.viewer'將
VULNERABILITY_PROJECT_ID替換為您執行 Artifact Analysis 的專案 ID。
建立平台政策
如要建立具有安全漏洞檢查功能的 CV 平台政策,請按照下列步驟操作:
建立平台政策 YAML 檔案:
cat > /tmp/my-policy.yaml <<EOF gkePolicy: checkSets: - checks: - vulnerabilityCheck: maximumFixableSeverity: MEDIUM maximumUnfixableSeverity: HIGH allowedCves: - CVE_ALLOWED blockedCves: - CVE_BLOCKED containerAnalysisVulnerabilityProjects: projects/VULNERABILITY_PROJECT displayName: My vulnerability check displayName: My vulnerability check set EOF建立平台政策。
使用下方的任何指令資料之前,請先替換以下項目:
- POLICY_ID:您選擇的平台政策 ID。如果政策位於其他專案,可以使用完整資源名稱:
projects/POLICY_PROJECT_ID/platforms/gke/policies/POLICY_ID。 - POLICY_PATH:政策檔案的路徑。
- POLICY_PROJECT_ID:政策專案 ID。
執行下列指令:
Linux、macOS 或 Cloud Shell
gcloud beta container binauthz policy create POLICY_ID \ --platform=gke \ --policy-file=POLICY_PATH \ --project=POLICY_PROJECT_ID
Windows (PowerShell)
gcloud beta container binauthz policy create POLICY_ID ` --platform
- POLICY_ID:您選擇的平台政策 ID。如果政策位於其他專案,可以使用完整資源名稱: