AICon 上海站|日程100%上线,解锁Al未来! 了解详情
写点什么

微服务与安全

  • 2016-11-20
  • 本文字数:1364 字

    阅读完需:约 4 分钟

“我们都知道洗手在预防疾病传播上的重要性,但是在面对应用安全问题时,类似的行为却变成了马后炮。我们已经掌握了在开发工作流中加入测试的做法,但是对于安全问题却常假定稍后会有其他的人去解决。”这是 Sam Newman 近期在伦敦微服务大会主题演讲中所提出的观点。他的演讲内容围绕微服务环境中的安全问题而展开。

Newman 当前供职于 Atomist ,他认为各个微服务构成了一种六边形的形态,其中每种微服务的命名是与它们的业务职责相对应的。这些微服务具备自治能力。Newman 特别指出,这些微服务的自治能力主要来自于它们的独立可部署性。

单体系统通常会具有一个边界,以及一个需要得到保护的数据库。如果攻击者借助安全漏洞闯入了这样的系统,他很有可能会窃取到系统内的全部东西。如果基于微服务的系统具备了适当的安全性,我们就可以限制攻击者窃取的权限,以及在一次攻击破坏了某个服务后所能窃取到的东西。但是在使用微服务的同时,也暴露了更大的可攻击面,使得更多的服务器可被攻击。单体进程内的方法调用,现在变成了对远程API 的网络调用。另外为大量服务器手动打补丁容易出现漏打补丁的情况。

通常我们在发现渗透或潜在的攻击时并不会采取理性思考。我们通常会修补漏洞以防止被再次利用,而不是退后一步从整体看待这个问题。这意味着我们常将钱花在了错误的事情上,反而将容易受攻击的缺陷留在了系统中。

正确的做法应该是建立威胁模型,并仔细思考如何在防范攻击问题上合理地分配你的精力。Newman 给出了他们所使用的两个例子,分别是由Bruce Schneider 提出的 Attack trees 以及使用了 STRIDE 和 DREAD 威胁建模技术的 Microsoft 安全开发生命周期

增强安全性的一个简单做法是对包括内部网络在内的所有地方都使用 HTTPS。该做法可确保消息载体不会被篡改,而且不会出现恶意的冒牌服务器。 Let’s encrypt 是一个免费且自动化的认证机构,它的目标是试图为在公共网络中随意获取 HTTPS 认证提供便利。Newman 指出 Let’s encrypt 最重要的特点在于它是自动化的。服务器在对客户端进行验证时需要客户端认证,但是通常情况下管理这些认证信息会是一种负担。

Newman 认为 Docker 是一项伟大的技术,但是他同时也指出许多受信任的官方镜像都具有严重的缺陷,这意味着安装了这些镜像的系统同时也包含了该镜像的缺陷。Newman 极力推荐使用 clair 这类工具,它具有缺陷静态分析及日常打补丁的功能。

检测或是对已发生的攻击事件了如指掌对防止新的攻击是十分有用的,但是在运行中的服务器上发现新的缺陷也是十分重要的。一般情况下攻击会在日志中留下痕迹,因此 Newman 指出,我们首先要去做的一件事情是如何在一个集中的地点获取对所有日志的访问。这不仅是出于安全方面的考虑,而且是来自应用开发上的考虑。

除了预防和检测问题,Newman 还指出对漏洞问题做出响应和恢复受攻击系统的重要性。你如何对一个安全漏洞问题做出响应并就该问题与客户进行沟通?你如何去恢复一个被攻击的系统?在数据散布到微服务系统中去之后,从备份进行恢复会变得更加困难。

明年的伦敦微服务大会将在11 月6 日至7 日期间召开。

查看英文原文: Microservices and Security


感谢薛命灯对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016-11-20 18:003639
用户头像

发布了 227 篇内容, 共 78.9 次阅读, 收获喜欢 28 次。

关注

评论

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

聊聊架构模式的变迁:从分层架构到微服务架构

华为云开发者联盟

架构 软件 微服务 分布式架构 软件设计

面试官:你说说ReentrantLock和Synchronized区别

叫练

AQS 多线程 ReentrantLock lock 独占锁

Mybatis系列全解(三):Mybatis简单CRUD使用介绍

潘大壮

Java 后端 mybatis mybatis源码

如何方便记忆和理解类图里的线条

华为云开发者联盟

Java 函数 二叉箭头 类对象

产品训练营 - 对二次作业

Wangyunnfei

产品经理第二周作业

朱琴

CNCF CTO解读:2021云原生最新趋势

华为云原生团队

开源 Kubernetes 开发者 云原生 边缘技术

Mybatis系列全解(五):全网最全!详解Mybatis的Mapper映射文件

潘大壮

Java 后端 mybatis mybatis源码

面试加分项!Android项目开发如何设计整体架构?学习路线+知识点梳理

欢喜学安卓

android 程序员 面试 移动开发

阿里开始“拆”中台?!中台建设何去何从?

博文视点Broadview

从关键技术到实践成果,华为云下一代视频编解码技术优化应用的探索

华为云开发者联盟

AI 5G RTC 视频编码 vr

实习流水帐(一)

YUKI0506

Mybatis系列全解(一):手写一套持久层框架

潘大壮

Java 后端 mybatis mybatis源码

产品经理训练营 - 第二章作业

Ryun

抽奖小助手——利益相关者

墨狂之逸才

作业

让我思考一会儿

Spring 是如何解决循环依赖的?

程序员小航

Java spring 源码 循环依赖

一点点感慨--移民二代

张老蔫

28天写作

产品经理训练营 - 第二周作业

泡面加煎蛋

anyRTC在音频领域的探索

anyRTC开发者

ios android 音视频 WebRTC 在线教育

Mybatis系列全解(四):全网最全!Mybatis配置文件XML全貌详解

潘大壮

Java 后端 mybatis mybatis源码

产品经理的大局观——

小匚

产品经理 产品经理训练营

融资融券系统搭建

v16629866266

MapReduce练习案例1-统计求和

小马哥

大数据 mapreduce 七日更

一看就懂的网络传输介质介绍

Java 程序经验小结:反射机制勿滥用

后台技术汇

28天写作

面试学习!我们究竟还要学习哪些Android知识?讲的明明白白!

欢喜学安卓

android 程序员 面试 移动开发

70 张图带你彻底掌握红黑树

Java 数据结构 红黑树

第二章作业

白知之明

Mybatis系列全解(二):Mybatis简介与环境搭建

潘大壮

Java 后端 mybatis mybatis源码

拆解 抽奖助手 的利益相关者

小匚

产品经理 产品经理训练营 无码科技

微服务与安全_语言 & 开发_Jan Stenberg_InfoQ精选文章