如何 0 成本启动全员 AI 技能提升?戳> 了解详情
写点什么

如何通过 Kubernetes 网络策略隔离 1500 个微服务

  • 2020-01-19
  • 本文字数:1184 字

    阅读完需:约 4 分钟

如何通过Kubernetes网络策略隔离1500个微服务

Monzo 安全团队撰文分享了他们实现 Kubernetes 网络策略的经历,该策略通过 Calico 的 API 为 1500 个微服务提供了隔离。


Monzo 是一家面向移动端的数字银行,它们在 AWS 上运行其核心基础设施。除了使用Kubernetes托管其微服务外,Monzo 还使用Apache Cassandra 作为主要数据库,使用 Apache Kafka 进行消息传递,并使用 Go 实现了其大部分程序代码。Monzo 安全团队将采用零信任网络作为他们的目标之一。零信任平台的原则是,网络内外的任何一个实体都是不被信任的,要访问私有信息必须要经过验证。Monzo 后端的每个服务只允许访问一个经过预先批准的服务列表。Monzo 大约拥有 1500 个服务,超过 9300 个服务间的交互,这也让该任务变得非常困难。在构建了一个通过分析代码来派生策略的自定义工具集之后,Monzo 团队在 Kubernetes 上使用了针对 Calico 的网络策略来提供隔离。


团队首先通过隔离一个服务来测试他们的初步方案。他们编写了一个名为 rpcmap 的自定义工具,这个工具可以通过分析静态代码来发现服务之间的依赖关系。根据 Monzo 后端工程师Jack Kleeman的说法,他们在集成测试或运行时选择静态分析的方式而不是观察的方式,主要是因为:


Monzo 有很多代码路径,没有一个可以涵盖所有内容的集成测试。在运行时,某项服务很少被调用并不意味着它从不会被调用;一间银行可以有一些每年只运行一次的服务进程。


规则必须按照可管理和可读的方式存储,而且不能破坏现有的服务。Monzo 安全团队采用了 Kubernetes 的 NetworkPolicy 来执行规则探测,并使用Calico网络插件来实现网络策略。这种初始方法在可测试性方面非常脆弱,并把维护规则列表的责任交由管理调用服务的团队负责。另一个引入的缺点就是开发团队必须手动编辑 Kubernetes 的配置文件。


为解决这些问题,Kleeman 说:“跟 Calico 社区讨论了网络策略的测试问题后,我们发现可以使用 Calico 的一些无法被 Kubernetes 访问的特性来测试我们的策略。”其中的一个特性允许流量访问网络策略通常不允许的内容,随后记录下来这种情况。Kubernetes网络策略通常采用选择器和标签的方式,在没有采用任何策略的时候,Kubernetes 允许 pod 之间的所有通信。Monzo 将他们的策略配置在最后运行,并监控网络流量来确定哪些服务会丢失数据包。


此后,团队将服务允许的流量列表切换为调用服务的一个属性,而不是目标服务的属性。服务通过标签声明它们在策略的入口(ingress)规范中需要访问到的服务。针对那些调用大量其他服务的服务,例如监控服务,则会按照“服务类型”进行分组,按照这样的准则,就没有必要列出每个服务了。rpcmap 被配置为每次提交时运行,部署管道把规则文件转换为服务标签。团队计划在未来使用服务网格而不是 CNI(容器网络接口)层来实现这一点,他们已经迁移到了一个使用 Envy 的自定义网格。


原文链接:


How Monzo Isolated Their Microservices Using Kubernetes Network Policies


2020-01-19 09:003610

评论

发布
暂无评论
发现更多内容

模块9-设计电商秒杀系统

卡西毛豆静爸

#架构训练营

springboot线程池的使用和扩展

程序员欣宸

Java 线程池 5月月更

渗透必备:Kali中安装漏洞靶场Vulhub

喀拉峻

网络安全 漏洞 渗透 靶场

跑赚项目-stepn后续-如何月入过万(33/100)

hackstoic

投资 web3

在线模拟解析Crontab表达式执行时间

入门小站

工具

在线Excel列提取导出工具

入门小站

工具

[Day35]-[二叉树]-二叉树的锯齿形层序遍历

方勇(gopher)

LeetCode 二叉树 数据结构算法

《敏捷软件测试》的作者将“Agile Testing”改为“Holistic Testing”

BY林子

软件测试 敏捷测试 持续测试

TypeScript 原始数据类型

Emperor_LawD

typescript 基础 5月月更

架构实战营毕业总结

卡西毛豆静爸

架构训练营

撸了一个Spring Boot + VUE 框架开发的分布式网盘系统「源码开源」

Java架构追梦

spring java面试 后端开发

Nginx解决跨域问题

乌龟哥哥

5月月更

【JAVA秘籍功法篇-分布式事务】事务的实现原理

王老狮

分布式事务 CAP原理 BASE理论 ACID 事物的实现

Java并发JUC(java.util.concurrent)线程池

芝士味的椒盐

Java Java多线程 5月月更

AI大咖说-如何评价论文的创新性

AIWeker

人工智能 5月月更 论文写作

2022 之Python操作 Excel,xlrd 与 xlwt 模块一文掌握

梦想橡皮擦

5月月更

【愚公系列】2022 年 05 月 二十三种设计模式(四)-原型模式(Prototype Pattern)

愚公搬代码

5月月更

开源字节技术架构

源字节1号

软件开发 后端开发

无死角窥探的焦虑:AI如何反击隐私侵占?

脑极体

linux手误rm可能不需要跑路

入门小站

Linux

算法:动态规划-斐波那契数列问题

正向成长

动态规划

GitHub霸榜月余的24万字Java面试手册,竟是阿里机密

Java架构追梦

Java 程序员 后端开发

[Day35-02]-[二叉树]-求根节点到叶节点数字之和

方勇(gopher)

LeetCode 二叉树 数据结构算法

《深入理解计算机系统》读书笔记——第二章(一)

如浴春风

5月月更

HUAWEI永远滴神!华为顶级网络专家总结出了这份网络协议开源手册

Java架构追梦

华为 后端开发 网络协议、

网络安全日常学习之渗透测试思路总结

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 漏洞挖掘

四、应用高可用之容量设计

穿过生命散发芬芳

5月月更 容量设计

EasyRecovery2022最新版电脑数据恢复工具

茶色酒

数据恢复软件

架构实战营模块四作业

哈啰–J

Java并发JUC(java.util.concurrent)集合不安全

芝士味的椒盐

Java Java集合框架 5月月更

leecode上的代码到pycharm运行解决历程

武师叔

5月月更

如何通过Kubernetes网络策略隔离1500个微服务_容器_Hrishikesh Barua_InfoQ精选文章