快速入門導覽課程:透過持續驗證監控 Pod 安全性
瞭解如何透過以檢查為準的政策,開始使用二進位授權連續驗證 (CV)。在本快速入門導覽中,您將使用下列 CV 檢查,持續驗證執行中的 Pod 是否符合下列條件:
事前準備
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
Install the Google Cloud CLI.
-
如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
-
如要初始化 gcloud CLI,請執行下列指令:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Binary Authorization and Google Kubernetes Engine APIs:
gcloud services enable container.googleapis.com
binaryauthorization.googleapis.com -
Install the Google Cloud CLI.
-
如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
-
如要初始化 gcloud CLI,請執行下列指令:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Binary Authorization and Google Kubernetes Engine APIs:
gcloud services enable container.googleapis.com
binaryauthorization.googleapis.com - 安裝
kubectl
指令列工具。 - 如果二進位授權政策和 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
如要建立啟用檢查式平台政策的叢集,請執行下列指令:
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-south1
POLICY_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
POLICY_PROJECT_ID
:儲存政策的專案 IDPOLICY_ID
:政策 IDCLUSTER_PROJECT_ID
:叢集專案 ID
等待叢集更新完成。
取得
kubectl
的憑證:gcloud container clusters get-credentials CLUSTER_NAME
部署映像檔:
kubectl run hello-app \ --image=us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
圖片
us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
在過去 30 天內上傳至存放區,因此通過新鮮度檢查。但由於圖片不在us-central1-docker.pkg.dev/my-project/my-directory
中,因此無法通過信任目錄檢查。因此,CV 會在 Cloud Logging 中產生TrustedDirectoryCheck
記錄項目。policyName
:CV 偵測到違規行為時使用的平台政策checkResults
:結果區塊,包含下列欄位:explanation
:錯誤訊息checkSetName
:檢查集的displayName
值checkSetIndex
:政策中檢查集的索引checkName
:檢查名稱checkIndex
:檢查集中的檢查索引verdict
:導致記錄項目的結果,在本例中為NOT_CONFORMANT
,因為檢查未通過。
CLUSTER_NAME
:叢集名稱LOCATION
:叢集位置CLUSTER_PROJECT_ID
:叢集專案 IDCLUSTER_NAME
:叢集名稱LOCATION
:叢集位置CLUSTER_PROJECT_ID
:叢集專案 IDPOLICY_ID
:政策 IDPOLICY_PROJECT_ID
:政策專案 ID
建立平台政策
如要設定 CV GKE 平台政策,請按照下列步驟操作:
建立或更新叢集
如要在叢集上啟用 CV,您可以建立新叢集或更新現有叢集。
部署映像檔
查看記錄
Pod 部署完成後,記錄項目會在 24 小時內顯示在 Cloud Logging 中,但最快可能只要幾小時就會顯示。
如要在 Cloud Logging 中查看記錄,請使用下列篩選器:
logName:"binaryauthorization.googleapis.com%2Fcontinuous_validation" "policyName"
hello-app
Pod 的記錄檔與下列內容類似。部分欄位可能會因專案 ID、叢集名稱等而異。
{
"insertId": "637c2de7-0000-2b64-b671-24058876bb74",
"jsonPayload": {
"podEvent": {
"endTime": "2022-11-22T01:14:30.430151Z",
"policyName": "projects/1234567890/platforms/gke/policies/my-policy",
"images": [
{
"result": "DENY",
"checkResults": [
{
"explanation": "TrustedDirectoryCheck at index 0 with display name \"My trusted directory check\" has verdict NOT_CONFORMANT. Image is not in a trusted directory",
"checkSetName": "Default check set",
"checkSetIndex": "0",
"checkName": "My trusted directory check",
"verdict": "NON_CONFORMANT",
"checkType": "TrustedDirectoryCheck",
"checkIndex": "0"
}
],
"image": "us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0"
}
],
"verdict": "VIOLATES_POLICY",
"podNamespace": "default",
"deployTime": "2022-11-22T01:06:53Z",
"pod": "hello-app"
},
"@type": "type.googleapis.com/google.cloud.binaryauthorization.v1beta1.ContinuousValidationEvent"
},
"resource": {
"type": "k8s_cluster",
"labels": {
"project_id": "my-project",
"location": "us-central1-a",
"cluster_name": "my-cluster"
}
},
"timestamp": "2022-11-22T01:44:28.729881832Z",
"severity": "WARNING",
"logName": "projects/my-project/logs/binaryauthorization.googleapis.com%2Fcontinuous_validation",
"receiveTimestamp": "2022-11-22T03:35:47.171905337Z"
}
記錄項目會顯示違反政策的相關資訊,包括下列欄位:
部分檢查項目會提供額外資訊,協助您瞭解檢查項目未通過的原因。
由於圖片通過了新鮮度檢查,因此記錄中不會顯示新鮮度檢查。
清除所用資源
如要避免系統向您的 Google Cloud 帳戶收取本頁面所用資源的費用,請刪除含有這些資源的 Google Cloud 專案。
本節說明如何清除您稍早在本指南中設定的 CV 監控。
您可以在叢集中停用 CV 監控,或同時停用二進位授權和 CV。
在叢集中停用二進位授權
如要在叢集中停用 CV 和二進位授權強制執行功能,請執行下列指令:
gcloud beta container clusters update CLUSTER_NAME \
--binauthz-evaluation-mode=DISABLED \
--location=LOCATION \
--project=CLUSTER_PROJECT_ID
更改下列內容:
在叢集中停用以檢查為準的政策監控功能
如要在叢集中停用以檢查為準的 CV 政策,並使用 Binary Authorization 強制執行政策重新啟用強制執行功能,請執行下列指令:
gcloud beta container clusters update CLUSTER_NAME \
--binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCE \
--location=LOCATION \
--project="CLUSTER_PROJECT_ID"
更改下列內容:
請注意,--binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCE
等同於舊版旗標 --enable-binauthz
。
刪除政策
如要刪除政策,請執行下列指令。如要停用以檢查為準的政策稽核功能,不必刪除以檢查為準的平台政策。
gcloud beta container binauthz policy delete POLICY_ID \
--platform=gke \
--project="POLICY_PROJECT_ID"
更改下列內容: