保护Kubernetes集群的三大要素

译文
云计算 云原生
Kubernetes改变了我们构建、部署和运行应用程序的方式,已成为运行大规模基础设施的事实标准。

随着基于容器的技术迅速得到采用,组织日益关注Kubernetes集群的安全性。虽然云和企业发行版提供了可靠的安全功能,但它们需要根据组织的安全要求进行调整。

本文将介绍保护Kubernetes集群需要考虑的三个基本方面:

  • 基于角色的访问控制(RBA)
  • 开放策略代理(OPA)
  • 网络策略

基于角色的访问控制

假设一家组织有三个应用程序团队(蓝队、绿队和红队)。由于这些团队开发不同的产品,应该授予它们访问Kubernetes集群的不同权限。比如说,绿队和红队不应查看、访问或删除蓝队部署的集群。

RBAC是一种控制用户可以访问哪些Kubernetes资源的方法。虽然RBAC在默认情况下启用,但必须加以配置才能使用它。

RBAC有五个关键要素:

  • 主题——用户和进程
  • 资源——应限制访问的对象
  • 动作——可以执行的操作(常常名为动作)集合
  • 角色——将API资源与动作连接起来的对象
  • 角色绑定——将角色与主题连接起来的对象

不妨回到前面的那家组织,定义只有蓝队才能创建、删除和列出Pod、部署(Deployment)和服务(Service)的策略。

我们先创建一个名为“role-blue”的角色对象,我们在其中定义可以对特定的Kubernetes资源执行的操作。在这个特定情况下,角色允许对资源:Pod、部署和服务执行“创建”、“删除”和“列表”等操作。

接下来,我们创建一个名为“blue-rb”的角色绑定。这个角色绑定属于“blue-ns”,它将上面创建的角色“role-blue”与名为“blue”的蓝队联系起来。

一旦将这些资源运用到集群,“blue”团队的用户就能够执行“role-blue”中定义的操作。

开放策略代理

开放策略代理(OPA)是一种通用策略引擎,可以跨整个堆栈统一策略实施。它的高级声明性语言提供了将策略指定为代码的灵活性。您可以使用OPA在Kubernetes、CI/CD管道或API 网关中实施策略。不妨深入了解如何在Kubernetes中使用和实施它。

Kubernetes实施OPA的机制名为Gatekeeper。它被设计和部署成准入控制器,负责拦截请求、处理请求,并返回允许或拒绝的响应。

如果允许,对象会部署到集群上;否则,请求将被拒绝,并向用户提供反馈。管理员可以定义策略,指示Kubernetes限制容器或命名空间可以消耗的内存或CPU等资源,仅批准基于来自特定注册中心的镜像的容器,限制NodePort服务创建,或执行标准命名。

比如说,这是一个示例模板和约束策略,只有在命名空间中配置ResourceQuota后才允许创建Pod。


网络策略

网络策略与常规防火墙非常相似,不同之处在于它们以应用程序为中心。您为应用程序定义网络策略后,Kubernetes会自动将这些规则运用于关联的容器,这是由于容器会在高度动态的环境中不断创建和终止。网络策略控制进出这些容器的流量。

默认情况下,进出Pod的网络流量不受限制。一个好的开头是设置拒绝所有流量的规则,然后只允许必要的流量。

默认情况下,Kubernetes使用平面网络结构,允许任何Pod与集群中的其他Pod或服务进行通信。在有多个应用程序或多级应用程序的集群中,纵深防御在保护通信层方面起到了关键作用。网络策略使我们能够做到这一点。

这是一个“app1-network-policy”,它在“blue”命名空间中为标签为“role=db”的Pod运用以下规则:

  • [Ingress] 允许通过端口6379的来自ipBlock 172.17.0.0/24的连接。
  • [Ingress] 如果来自其他Pod的连接被标记为“role=frontend”,并且如果属于端口6379上带有标签“project=myproject”的命名空间,允许这些连接。
  • [Egress] Pod可以通过5978端口与IP范围为10.0.0.0/24的其他Pod进行通信。

原文标题:3 key elements to protect a Kubernetes cluster​,作者:Avinash Desireddy

责任编辑:华轩 来源: 51CTO
相关推荐

2015-11-19 19:28:33

企业

2010-01-13 17:55:37

VB.NET语法规则

2022-07-06 09:54:27

物联网安全物联网

2019-09-16 16:27:43

网络存储虚拟化

2021-07-05 09:18:08

UPS电源

2022-11-28 10:25:32

灾难恢复DR数据备份

2010-01-06 15:26:14

JSON语法

2011-05-11 17:28:59

2018-07-27 14:09:20

2010-08-26 22:27:58

2010-01-18 16:12:08

2020-11-05 15:07:01

制造业数字化转型

2017-02-13 18:53:43

云存储ZadaraIDC

2009-02-18 10:19:00

2011-06-29 10:13:49

服务器灾难恢复

2018-11-02 13:03:06

物联网设备物联网IOT

2016-03-10 10:07:22

设计首页开发

2018-05-26 16:11:30

2015-10-28 10:40:54

主机托管数据中心

2011-03-16 16:09:04

点赞
收藏

51CTO技术栈公众号