当前位置: 首页 > 科技观察

无服务安全性的策略、工具和实践_0

时间:2023-03-18 19:45:52 科技观察

无服务器安全性的策略、工具和实践无服务器应用程序的安全性。在本文中,我将向您介绍如何使用AWSLambda和相关工具开发Serverless功能,以及那些有效的Serverless安全策略和最佳实践。总的来说,无服务器的安全方法可以分为两类:运行时安全和静态安全。运行时安全毫不夸张的说,serverless相关的函数一旦开始运行并被调用,其安全隐患就产生了。尤其是涉及到用户输入信息时,暴露的攻击面会更大。例如:恶意用户可能会通过SQL注入窃取甚至删除后台数据。同样,跨站点脚本(XSS)攻击可以将脚本注入运行无服务器的微型虚拟机(microVM)。这样,即使serverlessserver已经执行完提供的功能(或者超时),microVM仍然会spindown,此时XSS攻击就可以在serverless环境中站稳脚跟,并通过启动其他进程来掀起波澜。我们可以将无服务器安全作为功能层或并行进程运行。这种保护既可以验证用户输入的完整性,也可以监控文件、进程和连接是否存在任何异常或恶意行为。但是,每次调用该函数时都会激活安全保护。这往往会增加运行时间,尤其是在无服务器的情况下,每次都会增加100毫秒的运行成本。此外,如果需要加载更大的代码包,延迟的增加会对整体性能产生很大的负面影响。也就是说,对于那些安全性比性能更重要的金融服务和关键基础设施应用程序,运行时安全性对于它们的无服务器功能至关重要。事实上,无服务器函数已经带有很多安全机制。例如:恶意攻击无法在运行时更改函数的代码,毕竟它只能作为实例执行。同时,ServerlessFunction通常运行在AWSLambda等云服务上,云服务提供商自身已经提供了针对DDoS攻击、DNS攻击、TCPSYN攻击和会话劫持攻击的防护。因此,用户只需在编程中遵循各种良好实践,让每个功能在逻辑上尽可能简单,即可实现运行时安全。毕竟随着应用的迭代,代码量逐渐增加,功能超时也会增加。因此,我们需要继续通过运行时安全来保护无服务器功能。静态安全静态安全是从执行前的检查阶段到执行后的取证分析阶段,对Serverless的各种功能进行保护。具体来说,执行前检查表可以遵循如下安全检查表(其中前三点是serverless安全特有的要求):1.为每个函数分配一个角色,定义其对资源的访问权限。推荐的做法是授予必要的和最低限度的访问权限。2、为避免配置不当造成安全漏洞,请将所有资源组织到同一个应用中。3、在访问规则中,应设置如下:每个资源需要使用单独的凭证访问,凭证要安全管理。4、严格限制功能发布、路由变更、负载分配变更等权限。5、持续扫描函数库,及时修复发现的漏洞。为了将上述安全措施集成到CI/CD流程中,仅靠人工干预显然是不够的。我们需要通过安全自动化的大规模能力来保护各种功能和资源。第二阶段是通过云提供商的一系列工具在执行后进行取证分析。例如,我们可以使用AWSCloudWatch、AWSX-Ray、AWSSecurityHub、AWSGuardDuty和最新的AmazonDetective来监控和分析AWSLambdaserverless的各种功能。无服务器函数的开发工具和实践由于AWSLambda原生支持Java、Go、PowerShell、Python、Node.js、C#和Ruby,在下面的示例中我们将使用Python、Node.js或Ruby,通过基于Web的AWS控制台,用于创建无服务器函数(如下面的屏幕截图所示)。值得注意的是,AWS提供的用于编写函数的文本编辑器并不适合创建使用多个文件、软件库和依赖项的大型函数。当然,您也可以选择使用AWS的命令行界面(CLI)工具在本地开发和提交功能。您可以参考这里了解更多关于AWSCLI的安装和配置。同时,您可以将本地开发的所有源代码文件打包成一个zip文件,然后上传到AWSCLI(如下图)。我们需要更强大的开发工具和专用的开发环境来开发更复杂的服务,并将可扩展的、自动化的静态安全引入CI/CD管道。以下是面向开发人员的各种强大AWS工具的列表。另外,Lumigo官网还提供了一些比较实用的工具,详见--https://lumigo.io/blog/comparison-of-lambda-deployment-frameworks/。ServerlessFramework(SLS)是迄今为止最受欢迎的开发工具,在GitHub上拥有超过38,000颗星。AWS无服务器应用程序模型(SAM)是另一个非常流行的工具。它们都使开发人员能够在serverless.yml文件中构建无服务器项目。此类项目可以转换为CloudFormation模板。AWS使用它来创建各种所需的资源。具体来说,SLS和SAM可以提供:1、基础设施即代码(Infrastructure-as-code)定义CloudFormation中的资源,包括:serverless函数、API网关、AmazonS3存储等。2、本地功能测试。3.多阶段CI/CD流水线集成。4.完全开源修改潜力。此外,SLS还提供了1000多个现有插件的列表。这些插件不仅可以大大改进和简化Serverless功能的开发,还可以按需编写成新的插件。以下代码片段是一个小插件的示例:无服务器堆栈为开发人员使用SLS创建有效的无服务器项目提供了有价值的分步说明。同时,作为一套优秀的新手教程,该资源可以让开发者轻松体验Serverless开发的工作流程以及如何使用AWS的基本组件。构建安全的无服务器函数以下是我们在开发安全的无服务器应用程序时要遵循的六个良好实践和规则:1.通过将资源定义与函数分开来保持代码库的组织性。您可以将不同的资源作为参数,而不是硬编码的字符串。同时,您可以通过共享代码来最小化包的大小。以下两个示例展示了良好的代码库组织。其中,第一个演示共享库的多个功能:第二个示例由serverless堆栈提供:2.遵循最小权限原则,将身份和访问管理(IAM)中的角色限制在单一功能级别。3.使用AWSSSMAgent等服务来管理密钥。4.单个无服务器函数只能执行一个任务。如果函数的输出需要进一步处理,将输出保存到数据存储库,保存操作会触发新函数。记住:不要使用当前函数调用另一个函数。5.尽量减少远程连接的使用。不管多么复杂,大部分函数都应该在本地处理它的输入并返回相应的结果。注意:远程连接不仅会增加延迟,还会在调试和缩放时引起问题。6.尽可能少地使用依赖项。最好将它们放在前面提到的共享层中,并持续执行安全扫描。这些是我想在本文中与您讨论的各种无服务器安全策略、工具和实践。原标题:ExaminingServerlessSecurityStrategies,Tools,and(Current)BestPractices,作者:SelvamThangaraj