快速入门:通过持续验证监控 Pod 的安全性
了解如何使用基于检查的政策来开始进行 Binary Authorization 持续验证 (CV)。在本快速入门中,您将使用以下 CV 检查来持续验证正在运行的 Pod 是否满足以下条件:
准备工作
-
安装 Google Cloud CLI。
-
配置 gcloud CLI 以使用您的联合身份。
如需了解详情,请参阅使用联合身份登录 gcloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
gcloud init -
选择或创建项目所需的角色
- 选择项目:选择项目不需要特定的 IAM 角色,您可以选择已获授角色的任何项目。
-
创建项目:如需创建项目,您需要拥有 Project Creator 角色 (
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 项目名称。
启用 Binary Authorization API 和 Google Kubernetes Engine API:
启用 API 所需的角色
如需启用 API,您需要拥有
serviceusage.services.enable权限。如果您创建了项目,则可能已经通过 Owner 角色 (roles/owner) 获得了此权限。否则,您可以通过 Service Usage Admin 角色 (roles/serviceusage.serviceUsageAdmin) 获得此权限。了解如何授予角色。gcloud services enable container.googleapis.com
binaryauthorization.googleapis.com - 安装
kubectl命令行工具。 - 如果您的 Binary Authorization 政策和 GKE 集群位于不同的项目中,请确保两个项目中都启用了 Binary Authorization。
创建平台政策
如需设置 CV GKE 平台政策,请执行以下操作:
创建平台政策 YAML 文件:
cat << EOF > /tmp/my-policy.yaml gkePolicy: checkSets: - checks: - trustedDirectoryCheck: trustedDirPatterns: - us-central1-docker.pkg.dev/my-project/my-directory displayName: My trusted directory check - imageFreshnessCheck: maxUploadAgeDays: 30 displayName: My image freshness check displayName: My trusted directory and image freshness check set EOF此政策会检查以下条件:
Pod 的映像存储在名为
us-central1-docker.pkg.dev/my-project/my-directory的 Artifact Registry 代码库中。Pod 的映像在过去 30 天内上传到 Artifact Registry 或 Container Registry 代码库。
创建平台政策:
gcloud beta container binauthz policy create POLICY_ID \ --platform=gke \ --policy-file=/tmp/my-policy.yaml \ --project=POLICY_PROJECT_ID请替换以下内容:
POLICY_ID:您选择的 IDPOLICY_PROJECT_ID:政策项目 ID
创建或更新集群
如需在集群上启用 CV,您可以创建新集群或更新现有集群。
如需创建集群并启用基于检查的平台政策,请运行以下命令:
gcloud beta container clusters create CLUSTER_NAME\ --location=LOCATION \ --binauthz-evaluation-mode=POLICY_BINDINGS \ --binauthz-policy-bindings=name=projects/POLICY_PROJECT_ID/platforms/gke/policies/POLICY_ID \ --project=CLUSTER_PROJECT_ID请替换以下内容:
CLUSTER_NAME:集群的名称LOCATION:位置,例如:us-central1或asia-south1POLICY_PROJECT_ID:存储政策的项目的 IDPOLICY_ID:政策 IDCLUSTER_PROJECT_ID:集群项目 ID
等待集群创建完成。
如需更新现有的已启用基于检查的政策的集群,请运行以下命令。
gcloud beta container clusters update CLUSTER_NAME \ --location=LOCATION \ --binauthz-evaluation-mode=POLICY_BINDINGS \ --binauthz-policy-bindings=name=projects/POLICY_PROJECT_ID/platforms/gke/policies/POLICY_ID \ --project=CLUSTER_PROJECT_ID请替换以下内容:
CLUSTER_NAME:集群的名称LOCATION:位置,例如:us-central1或asia-south1