NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

如何通过 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:003127

评论

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

倪光南院士在 PingCAP 用户峰会的现场致辞

PingCAP

数据库 TiDB pingCAP

软件开发必读!华为云软件开发生产线CodeArts深度体验指南

华为云PaaS服务小智

华为 软件开发 华为云

粗粮细作,铁合金行业的节能降耗

用友BIP

冶金

Ubuntu 18.04系统编译安装MySQL 5.7教程。

百度搜索:蓝易云

MySQL 云计算 Linux ubuntu 运维

Ubuntu 18.04系统编译安装PHP教程。

百度搜索:蓝易云

php 云计算 Linux ubuntu 运维

文心大模型3.5国际评测拿下7个满分,大二学生1分钟AI作画估值百万!

飞桨PaddlePaddle

人工智能 百度 paddle 飞桨 文心大模型

LLM Data Pipelines: 解析大语言模型训练数据集处理的复杂流程

Baihai IDP

人工智能 LLM 白海科技 数据集处理流程

Python案例实现|租房网站数据表的处理与分析

TiAmo

Python 数据分析 爬虫

如何更快地渲染?深入了解3D渲染性能的指南

Finovy Cloud

点云标注在自动驾驶中的优化策略

来自四九城儿

云环境与服务器的四大区别简单聊聊

行云管家

云计算 云服务器 云环境

告别传统人肉运维,实现360°可观测!奇点云数据存算引擎DataKun R2.0发布

Geek_2d6073

Ubuntu 18.04系统编译安装Pure-Ftpd教程。

百度搜索:蓝易云

云计算 Linux ubuntu 运维 Pure-FTPd

高性能网络 SIG 月度动态:再获认可!3 位成员成为 Linux 内核社区 reviewer

OpenAnolis小助手

Linux 内核 高性能网络 龙蜥sig smc

几种验证端口开启的方法

林十二XII

深入探析数智时代下的分布式系统架构设计

不在线第一只蜗牛

AI 低代码 分布式架构 数智时代

【专业 TypeScript 实战】15 个高级技巧,开创卓越开发之路!

汽车之家客户端前端团队

学习SAFe大规模敏捷开发培训有什么好处?

顿顿顿

Scrum 敏捷开发 SAFe框架

百度商业AI技术创新大赛区域赛落幕,各大高校科技新秀角逐复赛

百度Geek说

人工智能 百度 AIGC 企业号 7 月 PK 榜

Java框架——SSM框架增删改查

java易二三

SSM框架 java 编程

保护 TDengine 查询性能——3.0 如何大幅降低乱序数据干扰?

爱倒腾的程序员

数据库

创业大赛|第二届“金靴奔跑”创新创业大赛!

科兴未来News

点云标注在自动驾驶中的难点

来自四九城儿

IPQ5018|WIFI6|DR5018 vs DR5018M what's the difference?

wallyslilly

ipq5018

IPQ4019 VS IPQ4018 as example-how to choose a suitable WiFi solution?

wifi6-yiyi

IPQ4019 ipq4029 wifi5

Java的异常处理

java易二三

异常处理 java 编程 #编程

TE智库 |《中国通用大模型内容生成及安全性能力评测》报告发布,深度测评中国大模型玩家

TE智库

大型企业采购云管平台的需求是什么?选择哪家厂商好?

行云管家

云计算 企业上云 云管平台

Ubuntu 18.04系统编译安装Apache教程。

百度搜索:蓝易云

Apache 云计算 Linux ubuntu 运维

HashMap | 利用白话文讲解其底层知识点

派大星

java 编程

结合线上线下环境,提供产品的服务...

Bonaparte

产品 产品经理 产品设计 产品思维 产品服务

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