Kubernetes从网络策略到安全策略

简介: 编者注:今天的文章由 Bernard Van De Walle( Aporeto 公司 Kubernetes 项目带头人)撰写,文章描述如何使用新的方法来实现Kubernetes 网络策略。 Kubernetes 网络策略 Kubernetes 支持网络策略的新 API,为隔离应用和减少攻击层面提供复杂的模型。

编者注:今天的文章由 Bernard Van De Walle( Aporeto 公司 Kubernetes 项目带头人)撰写,文章描述 如何使用新的方法来实现Kubernetes 网络策略。

Kubernetes 网络策略

Kubernetes 支持网络策略的新 API,为隔离应用和减少攻击层面提供复杂的模型。这个功能由 SIG-Network group 演化而来,可以通过内置标签和 Kubernetes 创建的选择器,令定义网络策略变得轻松、优雅。

Kubernetes 将这个功能留给到第三方来实施这些网络策略,同时不需要提供默认实现。

我们希望引入一种新的方法来思考“安全”、“网络策略”。要说明的是,安全和可达性是两个不同的问题:将 Pod 识别和策略定义转换成网络约束,比如 IP 地址、子网如此之类的。

然而,我们也从过去的经验中知道,使用外部控制面板也可以引入新的挑战:ACL 的发行版本要求 Kubernetes workers 之间较高的同步性; 每当创建一个新的 Pod,其余 Pod 上的 ACL 都需要进行更新,因为旧的 Pod 上面更新的 Pod 上的一些策略是相关的。当共享状态机制能够在小一些的规模中运行的时候,高度的相关性显然是二次问题,在大规模集群中,他们往往有汇聚性、安全性以及最终的一致性问题。

从网络策略到安全策略

在 Aporeto,我们使用不同的方法来实施网络策略,从策略那里解耦网络。我们将我们的解决方案开源为 Trireme,旨在将网络策略转化为授权策略,为 Pod 之间的交流实施透明的身份验证和授权功能。相比于使用 ACL 或者滤包器来实施策略,Trireme 使用的是授权功能。在这样的功能之下,容器使用跟策略要求匹配的身份只需要收到容器发过来的流量。Trireme 中,授权功能和验证功能都覆盖在 TCP 协调序列。身边识别(一整套标签)被俘获为一个 JWT,由 local keys 标记,在 Syn/SynAck 协调中转换。收到的 worker 验证之后,JWT 被可信任授权机构(身份验证步骤)标记,并且验证接受链接策略的缓存文件。一旦接受连接,剩下通过 Linux 内核的流量,以及所有的保护策略有潜力提供服务(如果需要的话,也包括连接追踪功能)。目前的实施使用简单的用户空间程序,可以捕捉最开始的协商数据包,并且附加授权信息作为有效载荷。JWT 包括在 Ack 数据包期间验证的 nonce,还能够抵御中间人攻击、回方式攻击。

20161226214609

Trireme 实施直接跟 Kubernetes master 交流,不需要外部 controller,在策略更新和 Pod 实例化的时候接收消息提示,这样的话就可以根据需要维护策略的本地缓存,更新授权规则。在需要同步的 Trireme 组件之间没有共享的状态。Trireme 可以作为独立的进程在每个 worker 上部署,也可以在每个 worker 上使用 Daemon Sets。在接下来的例子中,Kubernetes 拥有 Trireme Pod 的生命周期。

Trireme 的简化来源于安全策略与网络传输的分离。不考虑用来进行 Pod 交流的网络组合,策略实施直接跟连接上呈现的标签有关。这种身份识别给予运维人员极大的灵活性,即使没有将安全策略实施到网络实施细节,也可以使用任意网络组合。同样,联邦集群上的安全策略变得简单、可行。

Kubernetes 和 Trireme 部署

Kubernetes 弹性扩容、为容器部署和微服务提供可扩展的安全支持这些方面有着独一无二的地位。为实施这些策略,Trireme 提供简单、安全、可调度机制。

通过使用提供的 Daemon Set,你可以尝试在 Kubernetes 上部署 Trireme。你需要修改一些基于自己的集群架构的 YAML 参数。所有的步骤可以点击这里查看,文件中还包括了一个 3 层策略的例子,可以用来测试流量模式:https://github.com/aporeto-inc/trireme-kubernetes/tree/master/deployment。

本文转自中文社区-Kubernetes从网络策略到安全策略


相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
1月前
|
人工智能 弹性计算 运维
ACK Edge与IDC:高效容器网络通信新突破
本文介绍如何基于ACK Edge以及高效的容器网络插件管理IDC进行容器化。
|
16天前
|
运维 供应链 安全
阿里云先知安全沙龙(武汉站) - 网络空间安全中的红蓝对抗实践
网络空间安全中的红蓝对抗场景通过模拟真实的攻防演练,帮助国家关键基础设施单位提升安全水平。具体案例包括快递单位、航空公司、一线城市及智能汽车品牌等,在演练中发现潜在攻击路径,有效识别和防范风险,确保系统稳定运行。演练涵盖情报收集、无差别攻击、针对性打击、稳固据点、横向渗透和控制目标等关键步骤,全面提升防护能力。
|
14天前
|
数据采集 网络协议 JavaScript
网络爬虫性能提升:requests.Session的会话持久化策略
网络爬虫性能提升:requests.Session的会话持久化策略
|
20天前
|
人工智能 搜索推荐 决策智能
不靠更复杂的策略,仅凭和大模型训练对齐,零样本零经验单LLM调用,成为网络任务智能体新SOTA
近期研究通过调整网络智能体的观察和动作空间,使其与大型语言模型(LLM)的能力对齐,显著提升了基于LLM的网络智能体性能。AgentOccam智能体在WebArena基准上超越了先前方法,成功率提升26.6个点(+161%)。该研究强调了与LLM训练目标一致的重要性,为网络任务自动化提供了新思路,但也指出其性能受限于LLM能力及任务复杂度。论文链接:https://arxiv.org/abs/2410.13825。
50 12
|
21天前
|
Kubernetes 网络协议 应用服务中间件
Kubernetes Ingress:灵活的集群外部网络访问的利器
《Kubernetes Ingress:集群外部访问的利器-打造灵活的集群网络》介绍了如何通过Ingress实现Kubernetes集群的外部访问。前提条件是已拥有Kubernetes集群并安装了kubectl工具。文章详细讲解了Ingress的基本组成(Ingress Controller和资源对象),选择合适的版本,以及具体的安装步骤,如下载配置文件、部署Nginx Ingress Controller等。此外,还提供了常见问题的解决方案,例如镜像下载失败的应对措施。最后,通过部署示例应用展示了Ingress的实际使用方法。
45 2
|
25天前
|
人工智能 运维 监控
超越传统网络防护,下一代防火墙安全策略解读
超越传统网络防护,下一代防火墙安全策略解读
61 6
|
1月前
|
云安全 人工智能 安全
|
1月前
|
存储 安全 网络安全
云计算与网络安全:探索云服务的安全挑战与策略
在数字化的浪潮下,云计算成为企业转型的重要推手。然而,随着云服务的普及,网络安全问题也日益凸显。本文将深入探讨云计算环境下的安全挑战,并提出相应的防护策略,旨在为企业构建安全的云环境提供指导。
|
1月前
|
存储 缓存 监控
Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
本文介绍了Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
142 7
|
2月前
|
分布式计算 运维 API
针对MaxCompute经典网络域名下线,Dataphin应对策略的公告
针对MaxCompute经典网络域名下线,Dataphin应对策略的公告
295 7