服务
关于
CloudProse博客
Think FaaS播客

无服务器最佳实践:安全性-Think FaaS播客

无服务器在安全领域具有巨大优势。福雷斯特(Forrest)有一些最佳实践,可以利用这种自然优势为您服务。
福雷斯特Brazeal Trek10 191210 171202
阿甘(Forrest Brazeal) | 2018年7月5日

2018年7月5日,星期四

在Google Play上订阅 订阅苹果播客

成绩单

嗨,我是Trek10的Forrest Brazeal,这是“ Think FaaS”,在这里我们比运行Lambda函数花费更少的时间了解无服务器计算的世界。因此,请紧记五分钟-现在是“ Think FaaS”的时候了。

我们将在本周继续迷你系列的无服务器最佳实践。上周,Jared向我们介绍了有关项目布局的一些知识,而本周,我们将着手解决安全问题。

无服务器安全领域现在有很多创业公司,它们都有自己的产品,老实说,无论是否有意围绕无服务器创建了一些FUD,因为这些都有所有这些可怕的新安全漏洞。对于这些创业公司或他们的产品,我并不感到生疏。如果他们为您工作,那就太好了,请尝试一下。但是第一个最佳实践是记住无服务器这一概念实际上在安全性方面具有巨大的优势,而利用这些优势可以大有作为。

那么,如何编写安全的无服务器功能?

与传统服务器相比,无服务器功能具有巨大优势,因为 他们只运行很短的时间,这给攻击者提供了更少的空间来加密或扫描您的网络等。因此,请在功能上花最少的时间。不要仅仅因为可以就将Lambda限制提高到五分钟。仔细想想,我想这会造成这五分钟的播客失误,但我们不会对此进行过多介绍。

使用无服务器可以获得的另一个安全优势是 最小特权。您正在构建这些仅需少量工作的微型微服务。最好的最佳实践是,即使其中的某些框架使它变得容易,也要非常谨慎地使用跨越项目中所有功能的全局IAM角色。为每个职能定义最低特权角色要好得多。

您会听到人们谈论 不安全的依赖,例如可能会用您的Lambda代码压缩的npm软件包。显然,您也可能在服务器上遇到同样的问题。我认为这里要记住的一个简单的最佳实践是不要将库代码提交到自己的源代码管理中。我认为我们中的很多人都不愿意这样做,但是我们大多数人可能会这样做,因为Lambda包管理可能很艰难,尤其是对于本机依赖项,​​因此您需要在EC2实例上编译一次.so文件,然后您只想将它​​们置于源代码管理中,而不必理会它们。这很容易,直到突然之间依赖项打了零天补丁,而现在您并没有针对最新代码构建软件包。因此,如果有可能,请尝试构建一个工作流,以在每次构建时都重新获取这些依赖项。

当然,如果您将功能保留一年而不更新,则依赖关系可能会变糟,您将一无所知。有一家名为Snyk的初创公司(S-N-Y-K),可以很好地扫描环境中的依存关系并向您发出警报。因此,如果这对您来说很重要,那么您可以肯定地将其签出。

攻击面 您在无服务器世界中经常听到的一个问题。如果不运行这些功能,则不会花费任何费用,因此,将具有IAM权限甚至VPC访问权限的旧功能摆在不需要的位置很容易,这很容易。显然,这里的最佳做法是通过损害任何未使用的功能来强制执行最小特权,但是如果您不了解它们,就无法摆脱它们。我看到最近有几家初创公司提供检测和销毁未使用功能的服务。我没有使用过它们,所以不能推荐它们,但是您可以自己做的一件事就是简单地在AWS控制台中签出IAM访问顾问。它会告诉您上次使用角色的时间,使用的权限,并可能导致您执行不执行任何操作的功能。

回到优势,您可以在无服务器的情况下获得优势 使用托管服务来保护您的秘密。好的,这不是无服务器专有的。但是这里您在云端!您在那里有KMS。您具有Secrets Manager和SSM参数存储。它们是免费的或至少便宜使用,当然比泄漏数据库凭据便宜。使用它们,我求你了。在我认为这已成为本播客的非正式座右铭的情况下,请不要将纯文本秘密放入freakin的Lambda环境变量中!

我知道,深呼吸,阿甘。冷静。我了解点击服务以解密凭据会造成麻烦,例如如何管理缓存。最好的做法就是现在“在Github上使用其中一个小的库之一或编写一些样板代码”的领域之一。我们中编写此代码的人越多,AWS越会发布Lambda的更新,使之过时,所以让我们实现这一点。

最后,我想谈谈我认为无服务器安全中最重要的主题。听起来陈词滥调,这甚至不是技术性的事情,而是 确保将您的基础架构定义为代码并通过代码审查 在部署之前。我们中有多少人真正快速地在IAM控制台中手动授予了“星级”权限,因为我们只需要使某些功能正常工作,然后又忘记将其更改回去?如果在部署之前关注CloudFormation模板和无服务器框架模板,则会发现问题,坦率地说,您将首先编写更安全的代码和配置。那只是人的本性。

同时,如果您准备针对无服务器环境采取最佳实践的下一步,Trek10将很乐意为您提供帮助。您可以在Twitter @ Trek10inc上找到我们,或通过@forrestbrazeal来找我们,我们将在下一集Think FaaS上与您见面。

作者
福雷斯特Brazeal Trek10 191210 171202
阿甘(Forrest Brazeal)