随着分布式系统日益复杂,定义和实施 Kubernetes 集群的策略以确保环境的安全性、可靠性和合规性——当然也是为了构建可扩展性的支撑结构,变得至关重要。
因此,我们很高兴宣布 VMware Tanzu Mission Control 现在有了更多的策略相关的改进,旨在增强 Kubernetes 安全性。平台团队现在可以改变工作负载的安全上下文(security context),并修改默认的 Open Policy Agent(OPA)Gatekeeper策略设置。
Tanzu Mission Control推出动态修改,或称变异(mutation)策略是因为它们可以显著增强组织的安全措施,使其能够保持一种始终开启的安全姿态。这些策略可以对pod的功能施加限制,以帮助阻止恶意行为。例如,它们可以禁止使用特权容器或禁止容器作为root操作,从而有助于最大程度地降低潜在安全漏洞的风险。此外,它支持那些正在将集群迁移出Pod Security Policies(PSPs)的客户,同时仍然保持其组织的安全姿态。它还支持平台团队采用“左移(shift left)”安全策略,有助于减轻开发人员在Kubernetes安全策略和设置这个不断变化的世界中所面临的负担。这有助于在企业范围内始终强制保证平台团队所需的安全状态,无论使用哪种Kubernetes发行版。
我们发布的第二部分涵盖了修改默认的OPA Gatekeeper策略设置的能力,例如增加资源限制,以实现更好的治理,使用户能够更好地调整对高使用率的集群的资源分配。此外,它还给要求高安全性及合规性的公司,如金融领域的公司等,提供了覆盖默认设置的能力,例如修改失败策略和超时秒数等,以更有效地锁定其基础设施。
在跨集群和跨环境中自动执行策略
Tanzu Mission Control目前能够帮助平台团队应用多种类型的策略,包括:
访问 – 能够为每个组或个人授予对集群或单独的命名空间的访问权限。
网络 – 可以将应用程序分隔开并确保其不会接收到不需要的流量。
镜像仓库 – 有能力只允许从已知和可信的仓库中拉取镜像,防止来自不受信任来源的镜像像,并避免使用如Docker hub等外部来源。
配额 – 使用预配置和自定义模板,限制您的集群中指定的多个命名空间的总体资源使用数量。
安全 – 能够限制容器的功能和特权升级,并配置策略以进行监视而无需执行,以便可以识别违规者。
自定义 – 使用模板实施额外的业务规则,执行那些未被其他内置策略类型覆盖的策略。
PSP和OPA Gatekeeper都可以用于在Kubernetes环境中执行安全策略,但它们的方法和能力有所不同。
在其他原生Kubernetes安全组件(例如Antrea Network Policies)之外,VMware使用OPA作为Tanzu Mission Control中的策略引擎,用于安全、自定义和镜像相关的策略,因为它具有更广泛的灵活性(例如支持可变策略),并且是一个拥有充满活力社区的Cloud Native Computing Foundation(CNCF)的已毕业开源项目。
随着PSP在Kubernetes v1.25及更高版本中被移除,许多使用这个解决方案的组织可能会措手不及,不得不赶紧更新他们的部署和配置。因此,利用OPA Gatekeeper可以帮助确保工作负载在必要的更新和应用更改发生时是符合标准的。
OPA Gatekeeper的好处包括支持“dryrun”等操作,它允许用户创建一个策略而不强制执行它,并通过“Insights”页面查看任何违规情况,以修复他们的工作负载或更新策略、当确认策略设置没问题后,可以再将执行行为更改为“拒绝”。管理员可以在细粒度级别(群集、群集组或组织)定义策略并相应地执行它们,使其成为一个更强大的解决方案,用于规模化管理安全策略。管理员还可以使用基于标签的命名空间选择器来包括和排除特定的命名空间,确保集群符合安全策略。
通过提供在Kubernetes环境中执行策略的更强大和灵活的方式,OPA Gatekeeper提供了更好的治理能力,以在集群间执行策略。
这就是为什么我们在Tanzu Mission Control中通过增加策略相关功能来提升Kubernetes的安全,包括可以修改容器和Pod的安全上下文并修改默认的OPA Gatekeeper策略设置。
不再有验证错误:使用变异(mutation)策略设置更多规则
变异策略与验证安全策略不同,因为它们不会阻止创建可能违反策略的 Kubernetes 资源。相反,它们将在运行时更新或改变该请求以创建所需的资源。
因此,变异策略是提高 Kubernetes 对象可靠性和一致性的强大工具,通过强制实施策略限制并确保对象始终处于有效状态。
要创建变异策略,平台管理员必须前往策略分配下的Mutation选项页,并单击创建变异策略。Tanzu Mission Control目前提供对PodSecurity的动态修改,未来将支持更多选项。
平台管理员可以为其策略输入名称,并选择安全上下文中的需要修改的多个字段,以便在该集群中有人创建Pod时,它将继承这些安全相关属性值。
一个常见的变异策略示例是确保所有提交的工作负载都配置了runAsUser、runAsNonRoot和disallowPrivilegeEscalation。Gatekeeper Admission控制器根据变异策略中定义的属性验证资源,并根据您配置的条件(Always、IfFieldExists、IfFieldDoesNotExist)通过Admission控制器为资源添加属性。
(在Tanzu Mission Control中创建具有修改值的变异策略)
Pod安全性扩展:更新Gatekeeper的设置
如上所述,Tanzu Mission Control有各种类型的警戒策略,其中一些(例如安全性、镜像、自定义和变异)是使用OPA Gatekeeper开源工具执行的。
当Tanzu Mission Control在集群上安装Gatekeeper时,会应用一些默认设置和配置值。
现在,通过新的策略设置功能,各组织可以在TMC界面的左侧菜单中的管理页面内的设置选项卡中覆盖其中的一些值。
这意味着组织和管理员可以调整Gatekeeper部署设置以适应其所有级别,例如组织、集群组和集群。此初始版本允许修改Validating Webhook的配置(更改失败策略和超时秒数)以及控制器管理器部署和自动部署设置(通过改变副本数和CPU内存限制)。
这种增加的灵活性的一个例子是覆盖Gatekeeper的默认验证Webhook策略,该策略目前(默认情况下)设置为“忽略”,即如果Gatekeeper在集群上宕机,也仍允许Cron作业和其他工作负载被接受和创建。通过将该默认设置更改为“失败”,管理员将能够确保拒绝任何工作负载或作业,直到Gatekeeper再次可用。
能够在利用OPA Gatekeeper的关键安全功能的同时覆盖策略设置,使Tanzu Mission Control成为跨多云Kubernetes集群的企业策略管理的非常强大的选择。
(Tanzu Mission Control的管理区域中的“设置”选项卡视图)
(在Tanzu Mission Control的新设置功能中,验证Webhook配置)
访问策略已支持Kubernetes服务账户(servicee account)
Tanzu Mission Control现在允许在访问策略中创建角色绑定(role binding)时将Kubernetes服务帐户作为实体类型使用。通过这个更新,管理员可以在整个集群群集中管理服务帐户访问,而不是在每个群集上单独管理,从而减少了专门处理此类操作的时间,他们还可以跨集群审计策略。
在Kubernetes中,服务帐户身份类型非常重要,因为它们确定服务帐户在集群中具有的访问和权限级别,这对于维护集群的安全性和完整性至关重要。
能够向服务帐户添加策略非常有价值,因为它有助于进一步确保只有经过授权的服务和用户可以访问Kubernetes集群中的资源,而服务帐户仅限于执行其任务所需的资源。这再次提高了集群的安全性和稳定性,尤其是在多租户环境中。
内容来源|公众号:VMware 中国研发中心