为什么微服务是一个安全问题

也许您不想将所有遗留应用程序分解为微服务,但您可以考虑从安全功能开始。
781 位读者喜欢这个。
Improve your DevOps security game with Ansible Vault

Opensource.com

我写这篇文章的标题时很纠结,我担心它看起来像标题党。如果您因为标题党的样子而来看这篇文章,那么对不起。1 我希望您无论如何都会留下来:这里有很多有趣的2 观点和许多3 脚注。我并非想暗示微服务会导致 安全 问题——当然,像任何组件一样,它们可能会导致安全问题——而是微服务是那些参与安全工作的人员感兴趣的合适对象。我会更进一步说:我认为对于那些关注安全的人来说,它们是一个极好的架构构造。

这是为什么呢?嗯,对于我们这些对 系统安全 感兴趣的人来说,目前的世界是一个有趣的地方。我们看到分布式系统的增长,因为带宽便宜且延迟低。再加上部署到云的便利性,越来越多的架构师开始意识到他们可以将应用程序分解,不仅分解为多个层,还分解为层内的多个组件。当然,当一个层中的各个组件执行相同的工作时,负载均衡器会有所帮助,但是将不同的服务作为小型组件公开的能力导致了 微服务 的设计、实施和部署的增长。

那么,微服务到底是什么?我非常喜欢 维基百科的定义,尽管有趣的是,那里没有提到安全。4 我喜欢微服务的其中一点是,当设计良好时,它们符合 Peter H. Salus 对 Unix 哲学 的描述的前两点

  1. 编写只做一件事并做好这件事的程序。
  2. 编写协同工作的程序。
  3. 编写处理文本流的程序,因为这是一个通用接口。

最后一点的相关性稍差,因为 Unix 哲学通常用于指代独立的应用程序,这些应用程序通常具有命令实例化。然而,它确实概括了微服务的基本要求之一:它们必须具有明确定义的接口。

我所说的“明确定义”不仅仅是指对任何外部可访问 API 的方法的描述,还包括微服务的正常运行:输入和输出——以及,如果存在任何副作用。正如我在之前的文章“优秀系统架构的 5 个特质”中所描述的那样,如果您要设计一个系统,数据和实体描述至关重要。在这里,在我们对微服务的描述中,我们看到了为什么这些如此重要,因为对我而言,微服务架构的关键定义特征是可分解性。如果您要分解5 您的架构,您需要非常非常清楚哪些“位”(组件)将要做什么。

这就是安全开始发挥作用的地方。对特定组件应该做什么的清晰描述使您可以

  • 检查您的设计
  • 确保您的实现符合描述
  • 提出可重用的单元测试来检查功能
  • 跟踪实现中的错误并纠正它们
  • 测试意外结果
  • 监控异常行为
  • 审核实际行为以供将来审查

现在,所有这些事情在更大的架构中都是可能的吗?是的,它们是可能的。但是,当实体链接在一起或以更复杂的配置组合时,它们变得越来越困难。当您有更小的部分可以协同工作时,确保正确的实现和行为要容易得多。如果您不能确定各个组件是否在做他们应该做的事情,那么推导出复杂的系统行为——和异常行为——要困难得多。

然而,事情并没有止步于此。正如我在许多 之前的场合 中提到的那样,编写好的安全代码是困难的。7 证明它做了它应该做的事情更加困难。因此,完全有理由将具有特定安全要求的代码——密码检查、加密、密码密钥管理、授权等——限制在小的、明确定义的块中。然后,您可以执行我上面提到的所有操作,以尽力确保其正确完成。

然而还有更多。我们都知道,并非每个人都擅长编写与安全相关的代码。通过分解您的架构,使所有安全敏感的代码都限制在明确定义的组件中,您就有机会让您最好的安全人员来处理这些代码,并限制 J. Random Coder8 将某些绕过或降级关键安全控制的东西放入其中的风险。

它也可以作为学习的机会:能够指出一个设计/实现/测试/监控元组并说:“这就是应该如何完成的。听,读,标记,学习,并内化消化。9”总是好的。

您应该着手将所有遗留应用程序分解为微服务吗?可能不会。但是考虑到您可以获得的所有好处,您可以考虑从安全功能开始。


1好吧,有一点——总是很高兴有读者。

2我知道它们很有趣:我写的。

3可能没那么有趣。

4在撰写本文时。我——或者你们中的一位——完全有可能编辑文章来改变这一点。

5这听起来像是一个园艺术语,这很有趣。并不是说我真的很喜欢园艺,但仍然如此。6

6有趣的是,我最初写的是,“……如果您要分解您的架构……”,这听起来像是以 IT 为主题的谋杀电影的标语。

7经常阅读的读者可能还记得提到过优秀的电影《幕后危机》。

8还存在其他通用角色;请随意选择。

9不是密码摘要:我不认为这是最初的作者所想的。

本文最初发表在 Alice, Eve, and Bob—安全博客 上,并经许可转载。

User profile image.
自 1997 年左右以来,我一直从事开源工作,并且从那时起一直在家庭和工作中运行 (GNU) Linux 作为我的主要桌面:并非总是容易的…… 我是一名安全专家和架构师,Enarx 项目的联合创始人,目前是一家初创公司的 CEO

3 条评论

没想到微服务可能会构成安全威胁。感谢您提醒我们。非常内容丰富的文章,非常感谢 Mike 的发布。

Jamesh
https://tutuappx.com/

Jamesh -

所以 - 尽管微服务_可能_像任何其他安全组件一样,构成安全威胁,但本文的主要论点是它们实际上可以成为安全_优势_。

-Mike。

好文章

© . All rights reserved.