编程语言的无服务器架构安全面面观

    作者:课课家教育更新于: 2019-09-24 15:56:14

    大神带你学编程,欢迎选课

    无服务器架构安全面面观。编程语言原本是被设计成专门使用在计算机上的,但它们也可以用来定义算法或者数据结构。正是因为如此,程序员才会试图使程序代码更容易阅读。

    随着云生态系统的发展和扩展,可以满足用户对系统的灵活性和动态按需可塑性方面的需求,用户可以根据业务情况在高峰期短时间内部署大量服务器上线,然后再过了高峰后又撤下来,整个过程自动调控,自动收缩。一个典型例子是新浪微博服务,在突然出现爆发事件时候(比如明星出轨新闻),其流量可能是平时几百甚至上千倍,对这样的爆发流量用传统的扩容方式根本满足不了需求,也没有那么多资源,新浪的解决方法是私有云+租赁公有云方式,花钱利用阿里云实现峰值时服务扩容。对于一般企业则可以完全利用租赁第三方云服务方式构建自己服务模式,自己无需维护任何硬件设备和基础后端软件服务,这样的架构叫Serverless ,即"无服务器"架构。

    编程语言的无服务器架构安全面面观_编程语言_python_python教程_课课家

    无服务器架构可以让企业实现更灵活和更具成本效益的业务架构模式。但是,随着企业开始使用无服务器架构时候,需要考虑无服务器架构的安全,本文虫虫就给大家聊聊这个话题。

    什么是无服务器?

    无服务器是虚拟化云计算发展的结果,是指其企业完全通过租赁云供应商的资源来实现业务的模式,无服务器的核心是在架构中完全摒除硬件和后端基础软件服务(比如数据库,账号体系等),而依赖第三方的云资源(BaaS或者FaaS)。

    当考虑无服务器架构时候主要基于一个想法:如果并不是所有应用程序的功能都是一直要用,那么为什么要为不经常使用的服务器支付租金呢?一般来说系统都需要一些功能,如业务逻辑,用户认证系统,数据库,以及其他一些用户简短的和特定活动需要的功能。使用服务器架构,会执行和打包这一系列的功能,所以一般也将无服务器称为功能即服务(FaaS);这些服务也为后端服务,所以也叫为BaaS "Backend as a Service"。

    FaaS服务最典型的例子是知名云厂商亚马逊AWS的AWS Lambda。

    国内的阿里云最近也搞了一个叫函数计算类似的东西:

    无服务器安全

    虽然云厂商会提供了很多安全服务和一些基本的安全策略,但是需要你花费购买相关服务,而且一些策略也需要自己配置。关于无服务器架构的安全我们需要注意以下事项。

    保持最新版本

    为了确保应用程序的安全,最有效方法之一是确保所有组件都是新的。使用的第三方模块是否需要打安全补丁?

    软件更新时候经常被忽略的问题是忘记更新组件依赖项,尤其是在应用程序中使用开源组件时。据统计有超过92%的应用程序使用的开源组件会占到其代码库的60-80%,基础开源组件的安全是不容忽视的部分。如何安全地使用开源模块与商业软件存在一些明显差异,例如在开源组件在发布新漏洞或修复程序时无法很好的跟踪其影响面,做到有效的升级通知。另一个方面是要考虑构建组件的依赖关系。如果其中一个依赖存在漏洞,则会影响整个应用程序的安全。现在的基本的Git服务器端,比如Github和Gitlab都提供了对依赖的基本类库安全自动化扫描工具。我们可以借助这些工具来确保我们的组件都更新到安全的版本。

    最小权限原则

    进行权限和访问控制是维护无服务器安全性的重要规则,通过安全策略设置为每个功能授予最小权限,并使用基于角色的身份验证(IAM角色),以很大限度地减少潜在安全风险。

    这个原则很重要,因为可访问的用户越多,对系统安全的潜在的风险就越大。比如一个例子,黑客成功窃取了你的一个用户的电子邮件帐户,窃取了其登陆凭据。为了最大限度地降低风险,我们应该分角色限制可访问的功能,并对访问IP进行限制,比如通过防火墙和VPN等设置限制登录,这样就算登录凭据被窃取了也无法登陆。当然除了外部黑客的攻击以外我们也要防止内部人员窃取其不应该知道的信息,所以基于角色限制每个用户的权限至关重要。

    保持Em分离

    与限制用户权限原理类似,将每个功能的网络和资源访问隔离也很重要。这条原则也被称为微分段(Micro-Segmentation),就是通过设置访问屏障的,保证我们的某功能被攻克后,不影响其他功能和节点。安全界常遵守一个常理就是"鸡蛋不能放在同一个篮子里"。

    如果正如我们将数据库与另一个数据库分开一样,通过隔离不同的功能,不同的人容器,可以保证整体的安全不受部分节点的影响。

    紧盯日志

    一旦开始使用无服务器基础架构,就会发现架构都会变点很乱不着头脑,快速迭代的功能和业务,可能会让我们忽略一些安全问题迹象。比如发送到无服务器架构的大量请求,可能意味着功能存在漏洞功能,而你却将其忽略,没注意到。

    这时候就需要注重安全和日志了。

    熟悉无服务器架构(其他一些架构也类似)很好的工具是浏览和系统日志。解决无服务器安全挑战的第一步就是维护和分析日志,识别执行日志中的异常情况。

    安全扫描

    其次,我们应该使用全自动工具扫描功能,包括检查和监控系统所有使用的开源组件。比如你使用AWS Lambda你可以使用WhiteSource的无服务器集成来扫描和监控已部署,WhiteSource会自动识别所有开源组件和依赖项,然后针对其开源存储库的综合数据库检查它们,以获取安全漏洞和许可证。检测到后,您可以应用自动策略,定义工作流程以及在团队中协作信息。

    合规事宜

    当涉及金融,电信,健康等受监管行业时,数据隐私问题变得更加敏感。由于我们运行应用程序并在云上存储数据,因此总是存在与这些资产面向公众相关的风险。对云上数据做合格性可以需要通过法律及专业人士进行协助进行。

    总结

    总之,使用无服务器架构具有很多优势,可以帮助我们节省成本,提高灵活性和可塑性。但是无服务器架构安全的问题也不容忽视。本文我们列举了一些常用的安全原则和技巧也帮大家避免常见的无服务器安全隐患,并确保应用程序的安全可靠。

    编程语言往往使程序员能够比使用机器语言更准确地表达他们所想表达的目的。对那些从事计算机科学的人来说,懂得程序设计语言是十分重要的,因为在当今所有的计算都需要程序设计语言才能完成。

课课家教育

未登录