为集群开启强制注入Sidecar安全策略

ACK安全策略管理功能提供了符合Kubernetes容器应用场景的安全策略规则。其中,新增了ASM限制Pod必须注入ASM Sidecar策略,进一步提升接入ASM的集群安全性。本文介绍如何在ACK集群中开启强制注入Sidecar策略以及演示此策略开启后的效果。

背景信息

策略治理

Kubernetes 1.21起,PodSecurityPolicy(PSP)被标记为弃用(Deprecated)状态。为此,ACK升级了原先基于PSP的策略管理功能。基于使用OPA策略的Gatekeeper Admission Controller,ACK扩展了相应的策略治理状态统计、日志上报检索等能力,同时内置了种类丰富的策略治理规则库,提供符合更多Kubernetes应用场景的策略规则。在规则配置上,您可以在控制台上白屏化配置,降低使用策略治理相关能力的门槛。

策略类型包括以下大类:

  • Infra:基础设施层资源相关的策略类型。

  • Compliance:基于阿里云K8s加固Kubernetes合规规范定制的策略类型。

  • PSP:替代Pod Security Policy(PSP)能力的策略类型。

  • K8s-general:基于最佳安全实践对Kubernetes资源配置进行安全加固约束的通用策略类型。

Sidecar注入

Sidecar所支持的功能可以从应用程序的容器中抽象出来,并在作为同一Pod中的独立容器提供的代理中实现。为了充分利用这些功能,应用程序中的每个服务都需要在其Pod中运行一个Sidecar代理。Sidecar代理拦截到该服务的所有入站和出站TCP通信,并与服务网格ASM控制面通信。

前提条件

  • 集群版本为v1.16及以上。如需升级集群,请参见手动升级集群

  • 如需使用RAM用户进行策略管理时,请确保该RAM用户拥有以下授权:

    • cs:DescribePolicies:列举策略治理规则库列表

    • cs:DescribePoliceDetails:获取策略规则模板详情

    • cs:DescribePolicyGovernanceInCluster:获取集群策略治理详情

    • cs:DescribePolicyInstances:获取集群中当前部署的策略实例列表

    • cs:DescribePolicyInstancesStatus:获取集群当前不同策略类型对应的实例部署状态

    • cs:DeployPolicyInstance:在指定集群中部署策略规则实例

    • cs:DeletePolicyInstance:在指定集群中删除策略规则实例

    • cs:ModifyPolicyInstance:在指定集群中修改策略规则实例

    关于如何自定义RAM授权策略,请参见使用RAM授予集群及云资源访问权限

配置方式

集群添加到ASM实例后,默认不会开启命名空间级的自动注入。若集群中开启了此策略,相关命名空间Pod的创建动作不会成功或创建后集群会收到高危安全警告,并产生对应违规审计的告警日志。配置流程如下:

image
  1. 登录容器服务管理控制台,在左侧导航栏选择集群列表

  2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择安全管理 > 策略管理

  3. 策略管理页面,按页面提示完成组件的安装或升级(如有),然后按需进行以下开启操作。

    1. 从安全策略列表开启强制注入策略。

      1. 单击我的策略页签,查看集群所有可部署的策略名称。

      2. 在策略列表中找到ASMSidecarInjectionEnforced策略,点击条目右侧操作列的开启

      3. 按照以下内容填写策略配置,然后单击创建

        配置项

        说明

        实施动作

        您可以根据实际需求选择:

        • 拦截:违反策略规则约束的指定资源部署会被拦截。

        • 警告:违反策略规则约束的指定资源仍旧可以部署,只会产生对应违规审计的告警日志。

        作用范围

        指定策略实例实施在集群中哪些命名空间,您也可以选择在所有命名空间(不推荐)。

        参数配置

        留空即可。

    2. 直接创建策略实例。

      单击我的策略页签,然后单击创建策略实例,在创建策略实例对话框配置相关参数。

      配置项

      说明

      策略类型

      选择策略类型infra。更多信息,请参见容器安全策略规则库说明

      策略名称

      根据选择的策略类型,在策略名称下拉列表中选择ASMSidecarInjectionEnforced策略模板名称。

      实施动作

      您可以根据实际需求选择:

      • 拦截:违反策略规则约束的指定资源部署会被拦截。

      • 警告:违反策略规则约束的指定资源仍旧可以部署,只会产生对应违规审计的告警日志。

      作用范围

      指定策略实例实施在集群中哪些命名空间,您也可以选择在所有命名空间(不推荐)。

      参数配置

      留空即可。

  4. 验证策略。

    1. default命名空间未开启自动注入,同时ACK开启强制注入策略,实施动作选择拦截

      1. 部署httpbin应用

      2. 查看工作负载。

        可以看到容器组创建失败。

        image

      3. 单击策略实施总览页签,在7天策略实施记录列表中出现了拦截记录。

        image

    2. 编辑策略,修改实施动作警告

      1. 重新部署httpbin应用。

      2. 查看工作负载。

        可以看到应用部署成功。

        image

      3. 单击策略实施总览页签,在7天策略实施记录列表中出现了警告记录。

        image