Anthos 安全蓝图:审核和监控违反政策的情况

本文档介绍了如何审核和监控您的 Anthos 集群,以确定它们是否存在违反您所附加的安全最佳做法和政策的情况。其中简要介绍了如何审核和监控政策及相应原因,并介绍了执行此任务时需要用到的 Google Cloud 控制措施。

本文档是提供有关如何使用 Anthos 的指导性指南的系列蓝图中的一篇。

简介

您的集群设置了有助于保护对资源的访问权限的政策。您可以审核和监控违反这些政策的情况,从而提升安全性。审核和监控可让您深入了解集群的当前状态,但不会阻止任何会规避政策的操作。为了帮助防范更改,您还应该采取措施来强制执行政策

监控与审核类似,但监控的目的略有不同。典型的监控解决方案包括收集指标的方法、用于查看系统和应用状态的信息中心,以及在检测到异常情况时发送提醒的方法。相比之下,审核用于验证系统的状态,通常根据系统需要满足且由您指定的一组政策进行验证。

对于审核和监控,您需要考虑以下要求:

  • 您实施了哪些强制控制措施,以及如何审核或监控违反政策的情况。
  • 您需要整合的监控解决方案还是隔离的解决方案。

了解您需要的安全控制措施

本部分探讨了执行以下操作所需的控制措施:

  • 按照强制执行政策指南中的说明,实施与政策执行相辅相成的审核。

  • 实现一个监控解决方案,使其无论部署在何处,都可以与 Anthos GKE 集群配合使用。

命名空间

为应使用相同政策的资源加标签

借助命名空间,您可以为集群内的相关资源(例如 Pod、Service 和副本控制器)提供范围。通过使用命名空间,您可以将相关资源的管理责任作为一个单元进行委派。因此,命名空间是大多数安全模式不可或缺的一部分。

命名空间是控制平面隔离的一项重要功能。不过,它们不提供节点隔离、数据平面隔离和网络隔离。

一种常用的方法是为各个应用创建命名空间。例如,您可以为应用的界面组件创建命名空间 myapp-frontend

Anthos Config Management

将配置应用于您的 Anthos 集群

管理 Anthos 集群时的一个最佳做法是使用 Anthos Config Management,它可以使已注册的集群与配置保持同步。配置是存储在代码库中的 YAML 或 JSON 文件,包含您可以通过 kubectl apply 命令手动应用于集群的相同类型的配置详细信息。借助 Anthos Config Management,您可以像管理应用一样管理政策和基础架构部署,只需采用“政策即代码”的方法即可。

您可以将 Anthos Config Management 与作为您声明的政策的单一可信来源的 Git 代码库结合使用。Anthos Config Management 可以管理访问权限控制政策,例如 RBAC、资源配额、命名空间和平台级基础架构部署。Anthos Config Management 以声明性的方式运作,它会不断检查集群状态并将其调整到配置中声明的状态,实施相应的政策。

Anthos 政策控制器

强制要求遵守政策

Anthos 政策控制器是一个 Kubernetes 动态准入控制器,用于强制实施由 Open Policy Agent (OPA) 执行的基于 CustomResourceDefinition(基于 CRD)的政策。

准入控制器是 Kubernetes 插件,用于在对象持久保留之前,但在请求经过身份验证和授权之后拦截对 Kubernetes API 服务器的请求。您可以使用准入控制器来限制集群的使用方式。

如需使用政策控制器,请在限制条件模板中声明一组限制条件。在集群中部署限制条件模板后,您可以创建由限制条件模板定义的各个限制条件 CRD

下图显示了政策控制器如何使用 OPA 限制条件框架来定义和强制执行政策。

OPA 限制条件框架接收请求并强制执行适用于其他资源访问权限的政策。

上图显示了以下信息:

  1. 根据限制条件模板创建限制条件。
  2. 通过应用限制条件对于集群启用政策。
  3. 一个请求传入,触发准入审核,结果是允许或拒绝决定。
  4. 持续审核会根据政策评估集群上的所有活跃对象。

您可以使用政策控制器强制执行自定义政策,例如强制应用标签。借助政策控制器,您能够应用大多数可使用 PodSecurityPolicies 应用的限制条件。但由于以下原因,它们通常需要较低的操作开销:

  • 政策控制器包含一个默认模板库,其中包含限制条件模板,这意味着您不需要像使用 PodSecurityPolicies 那样为常见场景编写自己的政策。
  • 您无需像使用 PodSecurityPolicies 时那样管理角色绑定。
  • 政策控制器支持试运行模式,以便您可以在应用限制条件之前对其进行验证。
  • 您可以将政策的范围限定为命名空间,这样,您就可以逐渐地增加限制性较强的政策。这与 Canary 版本策略类似,您可以借此控制可能会产生意外影响的政策的发布风险。例如,您的发布可能会发现您不允许某个 Pod 访问某个卷,但该 Pod 应该可以访问该卷。
  • 政策控制器提供了一种应用政策的方式,无论它们是自定义限制条件还是在 Gatekeeper 代码库中定义的 PodSecurityPolicies 限制条件。

如需详细了解如何使用政策控制器强制执行您制定的政策,请参阅 Anthos Config Management 政策控制器

Kubernetes Engine Operations

监控 GKE 集群

Kubernetes Engine Operations 用于监控 GKE 集群。它可同时管理 Cloud Monitoring 和 Cloud Logging 服务,并具有针对 GKE 集群定制的 Kubernetes Engine Operations 信息中心。Kubernetes Engine Operations 具有一组 GKE 受监控的资源,这些资源表示集群、节点、Pod 和容器等资源。虽然您可以为 GKEGKE On-Prem 集群停用 Kubernetes Engine Operations,但我们建议您对这些产品保持启用状态。

Security Health Analytics

发现漏洞

Security Health Analytics 可通过识别 Google Cloud 资源中可能存在的错误配置和违规情况,以及建议相应的纠正措施,帮助您防范突发事件。Security Health Analytics 扫描工具会生成漏洞发现类型(可在 Security Command Center 中找到)。容器扫描工具发现与 GKE 容器配置相关,并且属于 CONTAINER_SCANNER 扫描工具类型。

Security Command Center 与 Pub/Sub 的集成

您可以使用通知应用Security Command Center 内获取发现结果的相关提醒。该应用可订阅通知 Pub/Sub 主题,并向已配置的渠道(如电子邮件或短信)发送通知。

Cloud Asset Inventory

监控 Google Cloud 资源

借助 Cloud Asset Inventory,您可以通过实时通知监控您订阅的资源和政策更改。您可以监控组织、文件夹或项目中支持的资源类型政策类型的更改,或您指定的其他资源的更改。您可以通过创建 Feed 来设置订阅。支持的资源类型包括 GKE 资源类型和 Cloud IAM 政策类型。

您可以监控安全敏感型资源,例如防火墙规则和 IAM 政策更改。对这些资源的任何更改都会立即通过 Pub/Sub 发送通知,以便您在需要时快速采取措施。

实时通知会连接到您现有的工作负载。借助此功能,您可以合并操作,例如创建 Cloud Functions 函数,以在检测到资源更改后逆转更改。

使用 Cloud Audit Logs 发出提醒

GKE 集群将 Kubernetes Audit LoggingCloud Audit LogsCloud Logging 集成。您可以使用 Kubernetes Engine Operations,根据您的日志条目设置指标。然后,您可以使用基于日志的指标来设置提醒政策

提醒政策指定了通知渠道,您可以通过这些渠道指定希望如何得知提醒政策已被触发。您可以设置通知处理程序,方法是使用 Cloud RunCloud Functions 在响应中执行操作,例如还原更改或通过电子邮件通知您。

综合应用

为了整合控制措施,请确定您的审核和监控需求。然后,确定本指南中探讨的控制措施的范围以及需要配置这些控制措施的阶段,如下面的步骤所述:

  1. 在开始配置集群之前,请参阅混合云和多云环境的监控和日志记录模式,以帮助确定所需的隔离级别。

  2. 创建集群。按照适用的集群安全强化指南(GKEGKE On-Prem)中的指导信息进行操作。创建集群时,请务必遵循安全强化指南并使用 --enable-network-policy 标志;网络政策是必需的。此步骤让您可以在稍后实现防火墙规则,以限制在集群中的 Pod 之间传输的流量。

  3. 定义 Pod 所需的命名空间和标签。这提供了一个名称范围,允许您使用政策和 Kubernetes 服务帐号。

  4. 使用 Anthos Config Management 安装政策控制器

    按照强制执行政策指南中的指导信息进行操作。

  5. 配置 Kubernetes Engine Operations,以满足您的需求:

  6. 配置 Kubernetes Engine Operations 提醒政策、通知和处理程序。

  7. 配置来自 Cloud Asset Inventory 的实时通知。

  8. 设置一个流程,用于定期审核通过 Security Health Analytics 扫描生成的容器发现结果