多集群Kubernetes管理和访问

译文
云计算 云原生 应用安全
随着云计算和Kubernetes成为开展业务的一种标准,安全性成为现代应用程序开发的最大障碍之一。为了降低安全风险,企业不能在每个集群的基础上管理访问控制,而找不到可扩展的方法将会导致配置错误、漏洞和合规审计失败。

译者 | 李睿

审校 | 孙淑娟

人们可以想象有这样一座巨大的堡垒,这个堡垒有厚重的墙壁、坚固的大门,以及瞭望塔和护城河,以免受攻击。堡垒有多层防御可以阻止攻击者,虽然攻击者可能会游过护城河,但必须翻越高墙才能进入堡垒。因此,攻击者可能只会破坏单层防御,但多层防御会使其难以进入堡垒。

如果仔细观察,发现这些防御层都做了阻止攻击者入侵这样一件事。这正是保护应用程序所需要的——防止未经授权的访问的多层防御。谈到Kubernetes访问控制,需要管理许多不同的组件。Kubernetes集群本质上是复杂和动态的,这使得它们很容易受到网络攻击。

本文探讨对多个Kubernetes集群进行访问时如何管理的基本注意事项,有助于企业更好地规划Kubernetes的整体安全性。

隔离Kubernetes API服务器

在Kubernetes集群中,通常是采用控制平台控制节点,用节点控制Pod,用Pod控制容器,用容器控制应用程序。但是能够控制平台的是什么?Kubernetes公开了允许企业配置整个Kubernetes集群的API,因此保护对Kubernetes API的访问是保持Kubernetes安全性方面最关键的考虑因素之一。由于Kubernetes完全由API驱动,因此控制和限制谁可以访问集群以及允许他们执行哪些操作是第一道防线。

以下来看看Kubernetes访问控制的三个步骤。在身份验证过程开始之前,确保正确配置网络访问控制和TLS连接是首要任务。

(1)API认证

访问控制的第一步是验证请求。建议尽可能使用外部身份验证服务。例如,如果企业已经使用身份提供程序(IdP)管理用户帐户,例如Okta、GSuite和Azure AD,以对用户进行身份验证。Kubernetes API服务器并不保证身份验证程序的运行顺序,因此确保用户只绑定到单个身份验证方法非常重要。对以前使用过的身份验证方法和令牌进行定期检查,如果不再使用,则将其停用,这一点也很重要。

(2)API授权

一旦通过身份验证,Kubernetes会检查请求是否被授权。基于角色的访问控制(RBAC)是授权API访问的首选方式。在默认情况下,应该了解四个内置的Kubernetes角色——集群管理员(cluster-admin)、管理员(admin)、编辑(edit)、查看(view)。集群角色可用于设置集群资源(例如节点)的权限,而其角色可用于命名空间资源(例如pod)。Kubernetes中的RBAC具有一定的复杂性和人工操作。

(3)准入控制

在成功验证和授权执行特定任务后,最后一步是准入控制以修改或验证请求。Kubernetes提供了几个模块来帮助定义和自定义允许在集群上运行的内容,例如资源请求限制和强制执行Pod安全策略。准入控制器还可用于通过Webhook扩展Kubernetes API服务器,以实现高级安全性,例如实现图像扫描。

基于角色的访问控制(RBAC)

Kubernetes被如此大规模采用的原因之一是因为社区的蓬勃发展和定期更新。Kubernetes 1.6中引入的关键更新之一是基于角色的访问控制(RBAC)。虽然基本身份验证和授权由RBAC负责,但角色的创建和维护在多个集群环境中变得至关重要。如果将内置集群管理角色授予任何用户,他们实际上可以在集群中执行任何操作。管理和跟踪角色和访问权限是一项挑战。

对于具有大型多集群环境的企业,将创建和删除大量资源,这通常会增加未使用或丢失角色无人看管的风险。而在将来创建新角色时,某些非活动角色绑定可能会意外授予权限。发生这种情况是因为角色绑定可以引用不再存在的角色。将来如果使用相同的角色名称,这些未使用的角色绑定可以授予原本不应该存在的权限。

集群的复杂性和动态性

随着集群、角色和用户数量的增加,确保控制需要用户、组、角色和权限的适当可见性。每次添加新角色时,都需要配置额外的规则。对于大型企业来说,这可能意味着需要管理数百甚至数千条规则。由于缺乏一个集中的系统来管理集群中的所有角色,这是管理员面临最糟糕的噩梦。

Kubernetes受欢迎的原因之一是它本质上是可扩展的。它配备了开箱即用的安全工具,允许应用程序和基础设施根据需求进行扩展。这意味着Kubernetes集群可以是短暂的,可以立即创建和销毁。每次创建或销毁集群时,都必须为特定用户配置访问权限。如果对集群的访问没有得到适当的管理,这可能会导致安全漏洞,可能会授予对整个集群的未经授权的访问权限。

结论

如今的大多数团队分布在企业内的不同业务部门。在通常情况下,开发人员、测试人员、业务分析师和顾问都可能在同一个应用程序上工作——每个人都需要访问不同的集群或同一集群的不同组件。为不同用户提供正确级别的访问权限,并在必要时撤销该访问权限非常重要。

Kubernetes是一个由节点、集群、Pod、容器、卷等多个组件组成的协调良好的系统。在规模上,可以将数百个这样的组件分布在世界各地的多个集群中。识别“谁”需要“什么”,访问“哪个”资源变得具有挑战性。只有到那时,才会意识到对Kubernetes安全工具的需求,它不仅可以与企业的基础设施无缝集成,还可以提供一种安全且统一的方式来管理对多个集群的访问。

原文标题:Multi-Cluster Kubernetes Management and Access,作者:Kyle Hunter

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

2021-02-07 08:00:00

Kubernetes集群云原生

2021-11-22 16:21:28

Kubernetes 运维开源

2021-08-31 07:00:26

Kubernetes Clusternet开源

2021-12-30 07:42:13

Kubernetes集群架构

2021-02-18 09:28:32

Kubernetes开源SaaS

2022-04-15 09:30:00

Kubernetes云计算多云

2022-07-24 21:11:19

KubernetesLinux

2021-12-24 10:47:49

Kubernetes容器化微服务

2018-11-20 09:35:42

开源技术 数据

2020-07-08 08:03:37

KubernetesLens集群

2022-01-12 11:55:43

Kubernetes多集群Linux

2022-04-04 17:41:22

分布式IT安全

2022-08-14 20:48:41

KubernetesArgoCD

2022-07-11 09:46:43

Kubernetes开源Linux

2021-10-25 06:25:22

红帽KubernetesOpenShift 4

2022-01-17 11:05:11

CFSSLKubernetesLinux

2023-11-01 07:55:44

K8sKubernetes

2022-09-23 09:28:11

KubeSealKubernetesSecret

2022-05-12 14:25:44

Kubernetesvcluster

2024-02-21 07:48:37

KubeSlice云原生Kubernetes
点赞
收藏

51CTO技术栈公众号