这篇文章是对学习云原生及实习中做的一些工作的阶段性总结。
何为Iaas,Paas,Saas,引用知乎的一个高赞回答,可以理解为iaas作为云服务的第一个阶段,由云计算厂商统筹管理硬件资源,由客户来进行使用。用户需购买服务器并自己安装软件配置环境上传代码等开发运维工作
而PaaS由云厂商封装好应用的环境变量等配置信息由用户上传代码使用即可,这种和容器有异曲同工之处。SaaS即厂商软件也给你封装好,直接进行使用即可。
而serverless提供了一种更简洁更方便的云服务方式,无服务器即用户不需要再像往常一样考虑服务器方面的问题,比如服务器的维护,漏洞更新,网络带宽,缩扩容,软件环境配置等。而是提供了FaaS(Function as a Service)函数即服务,Baas(Backend as a Service)后端即服务的概念。实现各类 Web 框架快速创建、迁移上云,可以实现Express、Next.js、Python Flask、PHP Laravel、Koa、Egg.js、Nuxt.js等框架应用的快速部署(从腾讯云官网可以看到)。
FaaS本质上是一种事件驱动并由消息触发的服务,事件类型可以是一个HTTP请求,也可以是一次用户操作,函数可以看作是完成某个功能或任务的代码片段。相比传统应用运行模式,Serverless业务代码被拆分成了函数粒度,不同函数表示不同的功能,函数之间调用关系也更加复杂。以下是腾讯云提供的函数服务
可以看到Faas类似于云api的功能,用户只需调用api接口即可实现相关服务。
BaaS可以理解为是一个整合和开放各种在应用开发中需要的服务能力的平台,它通过创建大量重复的代码功能,方便应用基于服务的快速开发和构建。这里的后端,指的就是各种云产品和云服务,例如对象存储COS,消息队列CMQ,云数据库CDB、TDSQL,云缓存CRedis等。这些产品或服务,用户直接开通即可使用。
serverless的安全风险
由于后端及基础设施是由云厂商进行维护的。对于云厂商来说,首先需要保障云基础环境安全,包括所有的底层基础设施和后端服务软件的安全性。同时云厂商也担负着Serverless平台应用整体安全防护责任,借助API网关、云防护等优势来保障Serverless应用安全。对于用户来说,需要保证上传到服务端的代码是安全的、同时确保应用策略配置安全,避免代码中存在漏洞或策略配置不当导致安全风险。所以从本质上来说,Serverless的安全性是需要云厂商和用户双方共同承担的
对于用户方面,SQL注入,XSS,命令执行等传统攻击方式在serverless中依旧存在,因此更多关注云厂商所需的安全工作
拒绝钱包攻击
DoW(Denial of Wallet,拒绝钱包攻击)是针对云平台账户的DoS方式,其目的是通过高并发来耗尽用户账户可用余额。DoW攻击与传统拒绝服务(DoS)攻击方式类似,恶意攻击者向通过构造大量并发请求来触发函数调用,由于Serverless是按照资源使用量和函数调用次数来收费的,当有大量调用产生时,服务会自动扩展,这将导致用户账户可用余额快速被消耗。DoW攻击的一个典型的场景是在用户订阅web程序上生成大量虚假用户,通过大量用户访问API端点造成大量资源消耗导致账户金额耗尽。
资源滥用风险
近年来,随着Severless的快速发展,各种服务滥用现象也相继出现,主要体现在云函数滥用和Serverless基础设施滥用。云函数常被恶意人员用作构建代理池、隐藏C2和构建webshell,恶意人员通过构建此类应用来达到隐藏其客户端真实IP的目的。Serverless应用也常被用于构建扫描、钓鱼等攻击平台,攻击者通过构建此类应用来实现对外部系统的扫描探测、钓鱼窃取用户数据等目的。这些滥用行为导致云基础设施资源被恶意利用和消耗,给云服务的正常使用和监测带来了极大的困扰。
第三方API和组件不安全接入
由于Serverless服务一般会接入多个云服务组件,包括云API、API网关、事件触发器等。若云服务或组件在接入Serverless服务时未对组件身份或接收数据进行校验,则可能导致安全风险的发生。接入数据源的增加会导致攻击面扩大,传统应用只能从单一服务器上获取敏感数据,而Serverless应用通常会接入大量数据源,若攻击者针对各数据源进行攻击,则可能获取到大量敏感数据。
运行时安全风险
若攻击者已经通过某种方式获得了Serverless服务器权限后,则可能通过替换引导程序的方式攻击Serverless应用服务,从而导致Serverless应用实例被接管。如果攻击者可以修改Serverless ACL策略,则可以通过修改函数超时时间,增加服务冷启动时间,或者通过Serverless预热插件增加运行时时长等方式实现持久化控制。
日志和监控不足
传统的应用已经有比较成熟的日志管理和分析工具,而Serverless函数级别的日志分析工具还未被广泛采用。由于Serverless应用函数数量多、生命周期短,各函数间调用关系复杂,因此任何一个点都可能成为攻击突破口。对于云厂商来说,需要具备完备的安全防护和应用监测体系,才能更好的保障Serverless应用和服务的安全。
云环境网络攻击风险
攻击者可利用漏洞或错误的云平台架构配置,从公有云环境横向移动到云管理内部网络(如公有云到IDC网络);或者从公有云网络横向移动到客户构建的网络环境中,导致严重的攻击事件产生。