自动为AWS Elastic Beanstalk应用安全更新


21

自最早以来,我就一直是Heroku的粉丝。但是我喜欢AWS Elastic Beanstalk使您可以更好地控制实例的特征这一事实。我最喜欢Heroku的一件事是我可以部署应用程序而不必担心对其进行管理。我假设 Heroku确保及时应用所有操作系统安全更新。我只需要确保我的应用程序安全即可。

我对Beanstalk的初步研究表明,尽管它为您构建和配置了实例,但是此后它又转向了更为手动的管理过程。安全更新不会自动应用于实例。似乎有两个方面值得关注:

  • 新的AMI版本-随着新的AMI版本问世,我们似乎希望运行最新版本(可能是最安全的)。但是我的研究似乎表明,您需要手动启动新的设置以查看最新的AMI版本,然后创建一个新环境以使用该新版本。是否有更好的自动化方法将您的实例转换为新的AMI版本?
  • 在两个发行版之间,将发布针对软件包的安全更新。似乎我们也要升级它们。我的研究似乎表明人们会安装命令以偶尔运行yum更新。但是由于新实例是根据使用情况创建/销毁的,因此新实例似乎并不总是具有更新(即,从创建实例到第一次执行yum更新之间的时间)。因此,有时您会遇到未打补丁的实例。而且,在应用新的AMI版本之前,您还将不断使实例自我修补。我的另一个担心是,也许这些安全更新没有经过Amazon自己的审查(就像AMI版本一样),并且可能破坏了我的应用程序以自动更新它们。我知道Dreamhost曾经中断了12个小时,因为他们完全自动地应用了debian更新,而没有进行任何审查。我想确保同一件事不会发生在我身上。

所以我的问题是,亚马逊是否提供一种提供像Heroku这样的完全托管PaaS的方式?还是AWS Elastic Beanstalk真的更多只是一个安装脚本,而后您可以自己(除了它们提供的监视和部署工具之外)?


1
我也在寻找这些答案,但似乎您必须注意更新。关于读写文章,Elastic Beanstalk是否将PaaS评分?AWS Elastic Beanstalk不是PaaS,而是“ IaaS的配置功能”。
亚历山大·陶本科布

Answers:


18

首先,要明确一点,就您考虑方式而言,没有任何Elastic Beanstalk不是PaaS。如果将其分解,则实际上更像是具有虚拟化实例模板和诸如puppet或Chef之类的应用程序部署自动化。除此之外,您还可以自动访问awe的负载平衡器服务和云监视监视,从而可以基于指标启动新的应用程序服务器或关闭现有的服务器。

感觉就像PaaS一样,主要卖点是应用程序部署系统,该系统将获取您的代码并将其复制到集群中的所有应用程序服务器。

有人对PaaS的抱怨之一是PaaS供应商为您做出有关应用程序环境的决策。在我看来,这就像PaaS的价值主张:作为客户,您可以专注于应用程序功能,并将所有其他详细信息留给PaaS供应商。您需要为其他人付费以管理基础结构并提供系统管理。为此,您需要向他们支付一定的溢价,例如Heroku,它也以对您透明的方式也在ec2上运行其基础架构。

亚马逊实际上是在Ec2及其REST api的基础上提供Elastic Beanstalk,并没有付出很多努力来将其隐藏起来。这是因为他们通过IaaS赚钱,而EB只是在安排时间和技能的情况下,编排了一组您可以自行设置的ec2资源。

现在,就AMI的细节而言,AMI也是众多用于促进EB的ec2产品之一。EB AMI没什么神奇的-它只是预先配置为与EB一起使用的Amazon Linux AMI。像任何其他AMI一样,您可以在EC2中启动它,进行调整,然后从正在运行的实例中派生新的自定义AMI。Amazon Linux基本上是Centos和Fedora之间的交叉版本,具有半虚拟化补丁和由Amazon维护的预配置yum存储库。

您可能已经知道,Amazon linux已经配置为在引导时安装安全补丁。但是,运行中的实例与其他服务器在修补方面没有什么不同。修补可能会中断服务。如果您非常担心安全修补程序,则可以始终使用容器命令和设置cron来定期运行yum update --security。

您还可以利用EB API更改EB配置,或自动创建新的EB环境,然后可以在安装好并准备好它之后交换到它,然后关闭旧的环境。此处对此进行了描述:http : //docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.CNAMESwap.html

像AWS的其余部分一样,有一种方法可以通过编程方式访问和控制每个非SaaS功能,因此没有什么可以阻止您创建修补的AMI,然后将其用于创建新的EB环境并将其推广。EB不会强加于您的配置细节,也不会为您提供系统管理组来维护基础结构。


2
感谢您的回复。听起来您的意见是,Beanstalk不是PAAS,所以请不要将其视为一个。我认为这是正确的回应。尽管您可以执行cron作业上的“ yum更新”或使用API​​自动旋转到新版本的AMI,但是与为提供安全性而构建的真实PAAS相比,这始终是不合标准的解决方案环境自动。我要继续进行下去,并将您的答案标记为正确,因为这个问题已经持续了几个月,这是唯一提供的答案。
埃里克·安德森

埃里克(Eric),您看过Opsworks吗?它更多是由控制台驱动的,虽然不一定解决您在运行服务器基础方面遇到的问题,但它确实感觉更像PaaS。
gview


1

所有Beanstalk应用程序和环境都可以通过EBEXTENSIONS文件进行配置,这些文件与应用程序部署程序包(例如Java应用程序的WAR文件)打包在一起,并具有基于YAML的配置,以更新或重新配置应用程序,容器,操作系统等的任何部分。 PaaS,因为它是一个平台,使您可以部署应用程序而不必担心基础IaaS。最终,所有PaaS提供商都会通过某种形式的自动化来模糊底层的IaaS。但是,由于这是计算机科学,因此我们要讨论的是,所有应用程序都没有单一的最佳状态,并且无法在PaaS下调整IaaS,因此您将受到PaaS服务提供商的摆布,以确保您的应用程序能够平稳运行,快速安全地。

Heroku使用不同的管理层在AWS之上运行。但是,当您必须执行诸如保护应用程序之类的事情时,这会变得很痛苦。尽管他们尽了最大的努力来有效地管理其解决方案并维护安全性等,但他们最终也不会也不会承担您应用程序中漏洞的风险和后果。他们希望使他们的服务尽可能地简单。

调整平台底层IaaS的能力是Beanstalk IMO的优势和吸引力。


我认为这实际上不能回答问题。
德鲁·科里
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.