社区编辑申请
注册/登录
保护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
相关推荐

2022-06-09 13:45:18

vivoK8S集群Kubernetes

2022-06-03 09:41:03

DockerKubernetes容器

2022-06-06 14:35:59

KubevirtKubernetes虚拟机

2022-06-15 08:21:49

Linux运维工程师

2022-06-16 17:02:49

微软智能云混合云Azure

2021-10-25 06:25:22

2022-06-27 19:16:12

KubernetesK8s 集群

2022-06-04 07:26:47

Thanos集群Prometheus

2022-06-30 10:22:26

K8s可观测Prometheus

2022-06-01 09:38:36

KubernetesPod容器

2022-05-12 10:51:07

KubeGemsPaaS开源

2022-05-09 09:52:28

K8sLens开源

2022-06-29 11:01:17

K8s数据库Cassandra

2022-05-31 08:04:03

Redis高可用集群

2022-05-23 11:03:53

云原生技术DockerIstio

2022-03-29 09:21:21

DevOps开发

2022-05-09 15:08:56

存储厂商NFV领域华为

2022-06-02 14:18:44

kubeadm云原生

2022-06-28 13:25:19

K8sPrometheusGrafana

2022-06-12 10:55:48

AmbariApachePMC 成员

同话题下的热门内容

监控Kubernetes的最佳实践、工具和方法探讨一下云原生带来的收益和陷阱过去五年,PolarDB云原生数据库是如何进行性能优化的?平台即代码的未来是Kubernetes扩展做大做强云计算市场须立足实际2022 年会是您采用多云的一年吗?无服务器计算正在成为云原生的下一个发展方向Kubernetes 资源拓扑感知调度优化

编辑推荐

Service Mesh真的是云原生应用的绝配吗云原生桌面:虚拟桌面的解构与重新定义解密云原生---看企业云的未来云原生技术及其未来发展趋势展望如何评估云原生NFV中的容器化VNF部署
我收藏的内容
点赞
收藏

51CTO技术栈公众号