查看 GKE 的审核日志

本页面介绍如何在 Cloud Audit Logs 中查看有关部署状态和政策强制执行的信息。

如需详细了解本页面中使用的 Cloud Audit Logs 界面术语,请参阅查看日志

您可以在单个信息中心内评估相互依赖的各个 Google Cloud 产品中的应用安全状况,包括 Binary Authorization 政策强制执行情况。如需了解详情,请参阅安全监控

概览

当您使用 Binary Authorization 将容器映像部署到 Google Kubernetes Engine (GKE) 时,GKE 会将有关部署的详细信息写入 Google Cloud Observability 中的审核日志。这些审核日志条目包括强制执行状态信息。您可以通过 Google Cloud 控制台或者命令行中的 gcloud logging read 命令查看这些日志条目。

对于本指南后面部分的搜索,您将访问 Cloud Audit Logs 并选择包含要查看的事件的项目。

如需获取对 Cloud Audit Logs 的常规访问权限,请执行以下操作:

  1. 转到 Google Cloud 控制台中的 Google Cloud Observability 日志记录 > 日志 (Logs Explorer) 页面:

    转到 Logs Explorer

  2. 选择要查看其 Cloud Audit Logs 的 Google Cloud 项目。

强制执行状态消息

GKE 会针对以下强制执行情况向审核日志写入消息:

  • 被阻止的部署:部署之前因 Binary Authorization 政策而被阻止。
  • 紧急访问权限事件:部署使用紧急访问权限机制绕过了政策检查。如需了解详情,请参阅使用紧急访问权限
  • 应急开启:因 Binary Authorization 后端不可用而允许部署。
  • 试运行:因 Binary Authorization 政策中设置了试运行模式而允许在违反政策的情况下部署。

Cloud Audit Logs 中阻止的部署事件

如果容器映像因违反 Binary Authorization 政策而被阻止,您可以在 Cloud Audit Logs 中查找阻止的部署事件。

查询 Cloud Audit Logs 以查找阻止的部署事件

本部分介绍如何查询 Cloud Audit Logs 以查找阻止的部署事件。

Logs Explorer

如需在 Cloud Audit Logs Logs Explorer 中查看阻止的部署事件,请执行以下操作:

  1. 转到“Logs Explorer”页面

  2. 在搜索查询框中输入以下查询:

    resource.type="k8s_cluster"
    logName:"cloudaudit.googleapis.com%2Factivity"
    (protoPayload.methodName="io.k8s.core.v1.pods.create" OR
     protoPayload.methodName="io.k8s.core.v1.pods.update")
    protoPayload.response.status="Failure"
    (protoPayload.response.reason="VIOLATES_POLICY" OR
    protoPayload.response.reason="Forbidden")
    NOT "kube-system"
    NOT "istio-system"
    

  3. 在时间范围选择器中选择时间范围。

gcloud

如需使用 Google Cloud CLI 在 Cloud Audit Logs 中查看过去一周的违反政策事件,请运行以下命令:

gcloud logging read --order="desc" --freshness=7d \
  'resource.type="k8s_cluster"
   logName:"cloudaudit.googleapis.com%2Factivity"
   (protoPayload.methodName="io.k8s.core.v1.pods.create" OR
    protoPayload.methodName="io.k8s.core.v1.pods.update")
   protoPayload.response.status="Failure"
   (protoPayload.response.reason="VIOLATES_POLICY" OR
   protoPayload.response.reason="Forbidden")
   NOT "kube-system"
   NOT "istio-system"'

Cloud Audit Logs 中的 Breakglass 事件

借助 Binary Authorization,您可以在 Pod 规范中使用 Breakglass 标签替换该政策。使用 Breakglass 部署映像时,Binary Authorization 会在 Cloud Audit Logs 中记录 Breakglass 事件。以下部分介绍了如何查询这些事件。

查询 Cloud Audit Logs 以查找指定了 Breakglass 的 Pod。

Logs Explorer

如需在 Cloud Audit Logs Logs Explorer 中查看 Breakglass 事件,请执行以下操作:

  1. 转到“Logs Explorer”页面

  2. 在搜索查询框中输入以下内容:

    resource.type="k8s_cluster"
    logName:"cloudaudit.googleapis.com%2Factivity"
    (protoPayload.methodName="io.k8s.core.v1.pods.create" OR
    protoPayload.methodName="io.k8s.core.v1.pods.update")
    "image-policy.k8s.io/break-glass"
    
  3. 在时间范围选择器中选择时间范围。

gcloud

如需使用 gcloud CLI 在 Cloud Audit Logs 中查看过去一周的 Breakglass 事件,请运行以下命令:

gcloud logging read --order="desc" --freshness=7d \
  'resource.type="k8s_cluster" AND
  logName:"cloudaudit.googleapis.com%2Factivity" AND
  (protoPayload.methodName="io.k8s.core.v1.pods.create" OR
    protoPayload.methodName="io.k8s.core.v1.pods.update") AND
  "image-policy.k8s.io/break-glass"'

Cloud Audit Logs 中的应急开启事件

尝试部署容器映像时,如果 Binary Authorization 强制执行不可用或超时,就会发生应急开启事件,此时允许部署相应容器映像。

在这种情况下,验证结果未知,系统会记录一则日志条目。

查询 Cloud Audit Logs 中的应急开启事件

Logs Explorer

如需在 Cloud Audit Logs Logs Explorer 中查看应急开启事件,请执行以下操作:

  1. 转到“Logs Explorer”页面

  2. 在搜索查询框中输入以下内容:

    resource.type="k8s_cluster"
    logName:"cloudaudit.googleapis.com%2Factivity"
    (protoPayload.methodName="io.k8s.core.v1.pods.create" OR
     protoPayload.methodName="io.k8s.core.v1.pods.update")
    ("image-policy.k8s.io/failed-open" OR
     "imagepolicywebhook.image-policy.k8s.io/failed-open" OR
     "failed-open.validating.webhook.admission.k8s.io")
    
  3. 在时间范围选择器中选择时间范围。

gcloud

如需使用 gcloud CLI 在 Cloud Audit Logs 中查看过去一周的应急开启事件,请运行以下命令:

gcloud logging read --order="desc" --freshness=7d \
  'resource.type="k8s_cluster"
   logName:"cloudaudit.googleapis.com%2Factivity"
   (protoPayload.methodName="io.k8s.core.v1.pods.create" OR
    protoPayload.methodName="io.k8s.core.v1.pods.update")
   ("image-policy.k8s.io/failed-open" OR
    "imagepolicywebhook.image-policy.k8s.io/failed-open" OR
    "failed-open.validating.webhook.admission.k8s.io")'

Cloud Audit Logs 中的试运行事件

试运行模式是政策中的一种强制执行模式,允许部署不符合规则的映像,但会将有关部署的详细信息写入审核日志中。借助试运行模式,您可以在政策生效之前在生产环境中对其进行测试。

如果容器映像未能通过政策中的必要检查,但通过试运行模式被允许部署,则 Cloud Audit Logs 将包含 imagepolicywebhook.image-policy.k8s.io/dry-run: "true"

查询 Cloud Audit Logs 中的试运行事件

Logs Explorer

如需在 Cloud Audit Logs Logs Explorer 中查看试运行事件,请执行以下操作:

  1. 转到“Logs Explorer”页面

  2. 在搜索查询框中输入以下内容:

    resource.type="k8s_cluster"
    logName:"cloudaudit.googleapis.com%2Factivity"
    (protoPayload.methodName="io.k8s.core.v1.pods.create" OR
     protoPayload.methodName="io.k8s.core.v1.pods.update")
    labels."imagepolicywebhook.image-policy.k8s.io/dry-run"="true"
    
  3. 在时间范围选择器中选择时间范围。

gcloud

如需使用 gcloud CLI 在 Cloud Audit Logs 中查看过去一周的试运行部署事件,请运行以下命令:

gcloud logging read --order="desc" --freshness=7d \
  'labels."imagepolicywebhook.image-policy.k8s.io/dry-run"="true"'