科技云报道:Serverless或许没有你想象中的安全

news2024/11/18 13:51:36

科技云报道原创。

随着云计算技术的进一步成熟,Serverless已成为引领云计算下一个十年的技术热点。

Serverless能够帮助开发者无需关注服务器、按照实际使用付费且可以享受服务自动弹性伸缩,将更多的精力放到业务逻辑本身。据Gartner预测,2025年将有50%以上的全球企业采用Serverless架构。

在这里插入图片描述

尽管采用Serverless已成为大势所趋,但Serverless框架是否真的安全?有人认为,使用Serverless云服务相当于把基础架构托管给了云服务商,一切云服务安全都由云服务商来负责,采用Serverless甚至会比现有的基础云服务更安全。

事实真的如此吗?

Serverless面临的安全风险

Serverless面临的主要挑战是云服务商只负责云的安全性,而不是云中的安全性。这意味着Serverless应用程序不仅仍然面临传统应用程序面临的风险和漏洞,例如:跨站点脚本、访问控制中断、数据库注入、敏感数据泄露、不安全的反序列化等,而且还面临着Serverless架构特有的安全挑战。

风险一:增加攻击面
Serverless函数使用来自各种事件源的输入数据,包括 HTTP API、云存储、IoT设备连接和队列。这大大增加了攻击面,因为其中一些部分可能包含不受信任的消息格式,标准应用程序层保护可能无法正确检查这些格式。如果暴露了用于获取输入数据(例如协议、向量和函数)的连接链接,则可以将其用作攻击点。

风险二:安全配置错误

由于云服务提供商提供的设置和功能配置不安全,Serverless应用程序容易受到网络攻击。

例如,DoS攻击经常发生在Serverless应用程序中,这是由于函数和主机之间的超时设置配置错误,其中低并发限制用作对应用程序的攻击点。攻击者还可以通过插入函数调用来利用函数链接,其中他们延长函数事件的执行时间比预期更长,从而允许DoW攻击并增加Serverless函数的成本。

此外,使用公共存储库(如GitHub和S3存储桶)中未受保护的功能也会由于敏感数据泄露而造成DoW攻击。这是因为攻击者利用公开的函数,其中包含代码中硬编码的未受保护的机密和密钥。

风险三:身份验证中断

Serverless应用程序是无状态的,在其体系结构中使用微服务会使独立函数的移动部分面临身份验证失败的风险。

例如,如果在具有数百个Serverless函数的应用程序中仅对一个函数的身份验证处理不当,则会影响应用程序的其余部分。攻击者可以专注于一个功能,通过不同的方法访问系统,如自动暴力破解等。

风险四:特权过大功能的威胁

Serverless生态系统依赖于许多独立的函数,每个函数都有自己的角色和权限。职能之间的大量交互有时可能导致职能在其权利上享有过多的特权。例如,不断访问数据库并更新其他函数的功能可能是一个巨大的风险,因为它对参与者可见。

风险五:使用已知漏洞的组件

Serverless应用程序通常使用JavaScript(或TypeScript)或Python语言。Python或 JavaScript的开发人员通常使用大量第三方组件来完成不同的任务。这些组件可能存在漏洞,使用它们会使Serverless应用程序容易受到攻击。

保护Serverless安全性的最佳实践

当然,面对Serverless面临的安全风险,企业可以采用多种Serverless应用程序安全最佳实践,其中包括:

不要仅仅依赖WAF保护

拥有WAF很重要,但它不应该是保护Serverless应用程序的唯一防线。如果仅依靠WAF保护,安全性可能会有很大的漏洞。

因为WAF只能检查HTTP流量,这意味着WAF只会保护API网关触发的函数,它不会针对其他事件触发器类型提供保护。如果函数从不同的事件源触发,比如:通知(物联网、短信和电子邮件;代码修改;数据库更改;流数据处理;云存储事件等,则WAF无济于事。

使用自定义函数权限

事实上,Serverless应用程序中超过90%的权限已被过度许可。尽管在考虑Serverless应用功能级别时,设置权限可能会令人望而生畏,但不应使用一刀切的方法。一个常见的Serverless安全错误是设置更宽松且功能更大的策略,未能最小化单个权限和功能角色会使攻击面大于应有的范围。

DevSecOps团队必须与编写函数的开发人员坐下来,查看每个函数的用途并创建适当的函数级别权限。确定每个函数的用途后,可以为每个函数创建合适的权限策略和唯一角色。庆幸的是,整个过程可以使用各种自动化工具来助力。

进行代码审核

Black Duck Software调查了企业中常用的1000个应用程序,发现其中96%都使用了开源软件。研究人员还发现,60%的软件都包含安全漏洞,其中一些漏洞已经存在了四年以上。这使得代码所有权和真实性成为一项严重的安全风险。

随着开源软件的盛行,单个Serverless函数可能包含来自不同外部源的数千行代码。因此,想要提高Serverless的安全性,执行代码安全审计至关重要。

保持对CI/CD的控制

代码漏洞可以通过严格的CI/CD来缓解,即使它听起来很难。

攻击者可能会通过各种方式溜进来,甚至会在不被发现的情况下潜入企业内部造成严重破坏。若要确保不会发生这种情况,必须创建一个策略和策略,以便在生成期间执行代码分析,然后再上线,并确保每个函数都已通过CI/CD。

通过AI密切关注所有攻击指标

每天只有几百个函数都可以在日志中生成数十亿个事件,因此很难确定哪些事件是重要的。即使熟悉Serverless应用特有的攻击模式,也不可能扫描所有攻击模式,这就是为什么必须使用AI工具来增加Serverless的安全性、效率和可见性。

使函数超时

所有函数都应具有严格的运行时配置文件,但通常不直观地创建适当的Serverless函数超时。函数的最长持续时间可以特定于该函数。
DevSecOps 团队需要考虑配置的超时与实际超时。大多数开发人员将超时设置为允许的最大值,因为未使用的时间不会产生额外的费用。

但是,这种方法可能会产生巨大的安全风险,因为如果攻击者成功注入代码,他们就有更多的时间来造成损害。较短的超时意味着它们可以更频繁地攻击,这被称为“土拨鼠日”攻击,但它也使攻击更加明显。因此,作为Serverless安全性最佳做法,是必须使函数超时。

减少对第三方的依赖

开发人员通常从第三方派生组件,最好检查其来源是否可靠以及它们所引用的链接是否安全,采取此预防措施可避免意外漏洞,务必检查开源平台中使用的组件的最新版本。

大多数开发人员更喜欢在现代应用中使用开源组件,这使得检测任何问题或跟踪代码中的漏洞变得更加困难。最好使用最新版本并及时获得更新,并提前做好准备。

为此,可以定期检查开发论坛上的更新,使用自动依赖项工具,并避免使用依赖项过多的第三方软件。

处理凭证

建议将敏感数据存储在安全的位置,并使其可访问性极其有限,必须特别注意API密钥等凭据。同时,应将环境变量设置为运行时间评估设置,然后在配置文件中部署时间。

最好的方法是定期轮换密钥,即使被黑客入侵,可以确保切断对黑客的访问。每个组件、开发人员和项目都必须具有单独的密钥,并加密敏感数据和环境变量。

保护软件开发生命周期

软件开发生命周期定义了构建应用程序、在整个生命周期中对其进行管理以及简化开发过程。但是,不安全的应用程序可能会带来巨大的业务风险。易受攻击的应用程序可能会导致个人数据丢失,并对企业业务声誉造成无法弥补的损害。

在开发阶段集成安全性可确保授权并确保Serverless应用程序的正常工作,它还涉及不断审查弱点条件,并确保应用程序与安全实践集成。

地理考虑

开发人员应记住,在部署应用模块时,某些地理注意事项可能会对Serverless安全性产生负面影响。从不同地理位置部署的代码可能会产生与代码相关的问题。例如,纽约的开发人员将使用US-East-1时区,而来自亚洲的开发人员将在部署设置中使用完全不同的时区。

结语

毫无疑问,新机遇伴随着独特的挑战。Serverless架构引入了一种新的应用程序开发范例,但是企业在处理应用程序基础结构时,也必须承担额外的安全责任。

因此,在采用Serverless时,需要更谨慎和明智地尝试安全应用程序最佳实践。

【关于科技云报道】

专注于原创的企业级内容行家——科技云报道。成立于2015年,是前沿企业级IT领域Top10媒体。获工信部权威认可,可信云、全球云计算大会官方指定传播媒体之一。深入原创报道云计算、大数据、人工智能、区块链等领域。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/517395.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Swift AsyncThrowingStream 和 AsyncStream Demo 演示

文章目录 前言什么是 AsyncThrowingStream?调整现有代码以使用流什么是 AsyncStream?AsyncThrowingStreamAsyncThrowingStream 迭代调试 AsyncStream取消一个 AsyncStream结论 前言 AsyncThrowingStream 和 AsyncStream 是 Swift 5.5 中由 SE-314 引入的并发框架的…

JUC并发编程15 | Java内存模型JMM与volatile

尚硅谷(56-70) JMM 引入一些大厂的面试题 Java内存模型JMM是什么JMM与volatile之间的关系是什么JMM有哪些特性or它的三大特性是什么为什么要有JMM,它为什么出现?功能和作用是什么?happens-before 先行发生原则是什么…

LaTeX极简入门

​LaTeX是什么? LaTeX是一种基于ΤΕΧ的排版系统,由美国计算机学家莱斯利兰伯特(Leslie Lamport)在20世纪80年代初期开发。 LaTeX是一款开源免费,并且应用相当广泛的排版工具。不但能够对文字、公式、图片进行精确而复…

电容笔和触控笔有什么区别?电容笔牌子排行榜

而现在,在无纸化教育的大热之下,电容笔这个配件,也被很多人所关注。许多人对电容笔与触控笔的不同之处感到困惑,事实上,这二者是非常容易分辨的,电容笔是适用在我们最常见的电容屏上才能进行操作&#xff0…

算法工程师面试题

1.关于边缘提取的算法有那些?各有什么优缺点? Canny算法:Canny算法是一种经典的边缘检测算法,具有较高的准确性和良好的鲁棒性。该算法利用高斯滤波器对图像进行平滑处理,然后计算图像中每个像素的梯度和方向&#xff…

TinyHttpd 运行过程出现的问题

最近拉了个 TinyHttpd 的工程下来,不过好像各个都有些改动,最后挑了篇阅读量最多的。工程也是从这里面给的链接下载的。 参考自:https://blog.csdn.net/jcjc918/article/details/42129311 拿下来在编译运行前,按这里说的&#x…

词云图制作(R)

词云图制作 文章目录 词云图制作[toc]1 工作准备2 实际操作 1 工作准备 材料准备: 文本数据txt文件,或者其他文本文件。R语言软件 2 实际操作 第一步:从网上相关新闻网站复制粘贴或下载相关文本数据,转化为txt格式文件或其他&…

【设计模式】桥接模式

【设计模式】桥接模式 参考资料: Java 设计模式:实战桥接模式 一起来学设计模式之桥接模式 《设计模式之美》设计模式与范式(结构型-桥接模式) 桥接模式在项目中的应用 文章目录 【设计模式】桥接模式一、桥接模式概述二、案例场…

GPT-4 开始内测32k输入长度的版本了!你收到邀请了吗?

要说现在 GPT-4 最大的问题是什么?可能除了一时拿他没有办法的机器幻觉,就是卡死的输入长度了吧。尽管在一般的对话、搜索的场景里目前普通版本 GPT-4 的 8000 左右的上下文长度或许绰绰有余,但是在诸如内容生成、智能阅读等方面当下基础版的…

京东短网址高可用提升最佳实践 | 京东云技术团队

作者:京东零售 郝彦军 什么是短网址? 短网址,是在长度上比较短的网址。简单来说就是帮您把冗长的URL地址缩短成8个字符以内的短网址。 当我们在腾讯、新浪发微博时,有时发很长的网址连接,但由于微博只限制140个字&a…

Android Studio中android: baselineAligned属性认识及用途

文章目录 使用Button控件来演示使用TextView控件来演示 android:baselineAligned 设置子元素都按照基线对齐&#xff0c;默认是true 使用Button控件来演示 在项目中经常使用layout_weight属性利用比重来设置控件的大小&#xff0c;代码如下&#xff1a; <?xml version&qu…

Baumer工业相机堡盟工业相机如何使用BGAPI SDK解决两个万兆网相机的同步采集不同步的问题

Baumer工业相机堡盟工业相机如何使用BGAPI SDK解决两个万兆网相机的同步采集不同步的问题 Baumer工业相机Baumer工业相机图像数据转为Bitmap的技术背景Baumer同步异常 &#xff1a;客户使用两个Baumer万兆网相机进行同步采集发现FrameID相同&#xff0c;但是图像不同步细节原因…

2023 年第八届数维杯数学建模挑战赛 A题详细思路

下面给大家带来每个问题简要的分析&#xff0c;以方便大家提前选好题目。 A 题 河流-地下水系统水体污染研究 该问题&#xff0c;初步来看属于物理方程类题目&#xff0c;难度较大。需要我们通过查阅相关文献和资料&#xff0c;分析并建立河流-地下水系统中有机污染物的对流、…

机器学习之聚类算法一

文章目录 一、简述1. 有监督和无监督的区别&#xff0c;以及应用实例2. 为什么是聚类3. 聚类都有哪些 二、k-means1.k-means&#xff0c;核心思想是什么1. 同一个簇内的样本点相似度较高&#xff0c;这里的相似度高&#xff0c;具体指什么2.问题来了&#xff1a;同一簇之间相似…

IP-Guard能否限制PC端微信登录?

能否限制PC端微信登录&#xff1f; 不能限制微信登录&#xff0c;但可以通过应用程序控制策略&#xff0c;禁止微信程序启动。 在控制台-【策略】-【应用程序】&#xff0c;添加以下策略&#xff1a; 动作&#xff1a;禁止 应用程序&#xff1a;wechat.exe 可以实现禁止微信启…

【python 多进程】零基础也能轻松掌握的学习路线与参考资料

学习python多进程可以帮助程序员充分利用CPU的性能&#xff0c;同时提高程序的并发性和响应能力。在学习python多进程前&#xff0c;需要具备一定的Python编程基础和对操作系统进程的基本了解。 一、Python多进程学习路线 基本概念 在学习python多进程之前&#xff0c;首先需…

C++基础之默认成员函数(构造函数,析构函数)

目录 空类中都有什么 默认成员函数 构造函数 简介 特性 注意 总结 析构函数 简介 特性 注意 总结 空类中都有什么 先看下面一段代码&#xff1a; class Date {};int main() {Date d1;std::cout << sizeof(Date) << std::endl;std::cout << sizeof(d1) <…

Linux之系统基本设置(四)

1、Linux 系统基本设置 1、系统时间管理 查看系统当前时间和时区 [root192 ~]# date 2023年 05月 04日 星期四 22:43:16 EDT [root192 ~]# date -R Thu, 04 May 2023 22:43:24 -0400 [root192 ~]# date %Y %m %d %H:%M:%S 2023 05 04 22:43:38设置完整时间 [root192 ~]# da…

基于html+css的图展示67

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

Shell脚本文本三剑客之sed编辑器(拥明月入怀,揽星河入梦)

文章目录 一、sed编辑器简介二、sed工作流程三、sed命令四、sed命令的使用1.sed打印文件内容&#xff08;p&#xff09;&#xff08;1&#xff09;打印文件所有行&#xff08;2&#xff09;打印文件指定行 2.sed增加、插入、替换行&#xff08;a、i、c&#xff09;(1&#xff0…