课题研究 云安全与容器安全 子课题04 · 第05页 / 共8页
04子课题 · Serverless与函数计算安全

Serverless与函数计算安全第05页:事件源、API网关与网络隔离

事件源是函数平台最大的"隐形边界"——S3事件、定时规则、队列消息与HTTP入口同样是独立调用入口,"网关有认证"对其毫无约束。本页给出七类事件源的典型配置错误与基线防护对照表,论证异步重试语义(默认重试2次、队列保留约6小时)如何成为攻击放大器,并以"幂等即安全属性"为设计准则;API网关侧建立认证、节流(默认10,000 RPS需细分)、超时(29秒上限)、WAF、日志、CORS六维基线,函数URL纳入专项审计;网络侧以出站收敛、DNS Firewall、编排层令牌保护为核心,覆盖Step Functions标准工作流1年执行时长带来的凭证生命周期问题。

Serverless事件源事件注入幂等死信队列API网关函数URL节流WAFVPCDNS FirewallStep Functions研究状态:研究中
所属专题互联网基础设施安全 › 云安全与容器安全
目标受众云安全架构师、事件驱动架构设计团队、平台工程/SRE
本节要点七类事件源基线 / 重试与幂等 / 网关六维基线 / 出站治理 / 编排安全

01 · 事件源类型与配置基线

事件源是函数平台的"隐形边界"——大量安全方案只保护HTTP入口,却忽略了S3事件、定时规则、队列消息同样能触发函数。下表覆盖主流事件源类型、其典型配置错误与基线防护(以AWS为例,其他平台机制对应):

事件源类型示例典型配置错误基线防护
HTTP入口API网关、函数URL、ALB触发无认证、无节流、CORS通配、函数URL AuthType NONE授权器+Usage Plan;函数URL默认IAM型并纳入审计
消息队列SQS、Azure Queue、Pub/Sub订阅队列策略公开、未启用服务端加密、批处理失败语义未配置策略最小化;SSE-KMS;启用部分失败报告(SQS batch item failures)
主题订阅SNS、EventBridge事件总线主题允许匿名订阅/发布;跨账号事件规则无审计;归档回放未管控主题策略最小化;EventBridge规则变更告警;Archive/Replay操作审计
对象存储通知S3 Event Notification、Blob存储触发桶公开可写(任何人投递恶意对象触发函数)、对象键未经校验直接使用桶默认私有;触发前校验对象键与来源账户;仅接受指定前缀/后缀
数据库流DynamoDB Streams、Firestore触发器流未加密、消费函数权限过宽、流记录含敏感字段未脱敏流级加密;消费角色限定;敏感字段入流前评估
定时调度EventBridge Scheduler、CloudWatch Events、Cloud Scheduler规则被篡改或新增实现持久化;调度目标权限过宽PutRule/CreateSchedule事件实时告警;调度目标角色最小化
第三方Webhook支付回调、代码仓库事件、客服系统回调无验签、无重放保护HMAC验签+时间戳防重放;密钥分函数隔离

核心原则:每条事件链路都是独立入口。"网关上有认证"对S3事件、定时规则、队列消息毫无约束意义。函数安全盘点必须以事件源映射清单为单位:逐一核查"谁能产生事件、事件如何被校验、失败去向何处"。定时事件与规则类配置同时是攻击者最青睐的持久化位(第7页检测场景),其变更必须进入实时审计。

02 · 事件注入、重试与幂等

2.1 事件注入防御纵深

  • Schema校验前置:每类事件在函数入口以JSON Schema强校验;EventBridge支持事件模式注册与发现——让模式成为团队契约。
  • 不可信字段清单化:对象键、消息属性、detail字段、Header按不可信输入对待,进入任何命令/查询/模板/路径拼接前必须消毒(第4页风险表)。
  • 事件溯源校验:对S3类触发,校验事件中的来源账户ID与桶名是否属于允许集合(防止跨账户投毒事件)。

2.2 重试语义:功能特性即攻击放大器

官方重试语义是双刃剑——可用性机制在攻击场景下会放大破坏:

  • AWS Lambda异步调用:官方文档明确异步事件默认重试2次(共3次尝试),事件在队列中保留最长约6小时;超限后若无死信队列则静默丢弃。注入事件因此被自动重复执行3次。
  • 下游故障的级联:函数故障→平台自动重试→下游压力放大→更多函数超时——重试风暴可在数分钟内打满并发配额并产生账单。
  • 基线要求:全部异步函数配置DLQ或Destinations(失败事件可路由至SQS/SNS/EventBridge做审计与人工重放);消费型函数必须幂等(按事件ID去重、写库唯一约束、状态机检查)。

幂等是事件驱动架构的安全属性,不只是稳定性属性:攻击者无法利用"重试"使恶意事件被执行多次产生累计效应(如重复转账、重复发券);故障恢复时的人工重放(EventBridge Archive Replay)也以幂等为前提。组织应将"本函数是否幂等"列为代码评审必答项。

03 · API网关与函数URL安全基线

3.1 网关四层基线

基线域要求依据与说明
认证授权所有公开方法强制授权器;内部方法至少IAM签名JWT授权器强制校验iss/aud/exp;Lambda授权器注意缓存吊销窗口(第3页F2)
节流配额账户级默认10,000 RPS需按方法/Usage Plan细分;每API配置突发限制API Gateway REST官方默认账户级节流;Usage Plan绑定密钥与配额
超时边界REST集成超时上限29秒——超过即架构缺陷官方上限;长任务必须异步化或经编排拆分
WAF防护公开API挂载WAF,启用托管规则基线(如AWS WAF托管规则集)WAF托管规则提供常见攻击模式基线;自定义规则按业务收敛
日志审计访问日志+执行日志开启,集中留存≥6个月《网络安全法》第21条日志留存要求;日志脱敏防敏感字段入库
CORS精确Origin白名单;禁止通配+凭据组合第3页F5模式

API密钥≠认证:API Gateway的API Key(配合Usage Plan)设计用途是配额管理与用量追踪,AWS官方文档明确其不构成安全认证机制——泄露的API Key无法被吊销为"拒绝访问"语义,且可被多方共享。公开或敏感接口必须叠加授权器(JWT/Lambda/IAM)实现真正认证,API Key仅作为辅助的用量治理手段。

3.2 函数URL专项

Lambda函数URL(2022年4月发布)为函数提供专用HTTPS端点,AuthType为NONE时即公网匿名可达。基线要求:①默认创建为IAM型;②AuthType NONE必须经安全评审并叠加资源策略限制;③函数URL纳入资产台账与持续审计(与第2页D1合并核查);④对外暴露的函数URL视同公网API,套用WAF与日志基线。

3.3 私有端点模式

内部函数不接触公网:API Gateway Private REST API经VPC终端节点暴露(仅VPC内可达)、函数接入VPC并经PrivateLink访问后端、入口收敛至内网负载均衡。私有化的代价是冷启动与可用性设计复杂度上升(VPC内函数弹性伸缩与ENI管理),应纳入架构评审权衡。

04 · 网络隔离与出站治理

  • 出站收敛:函数默认全互联网可达。持有数据或凭证的函数应接入VPC,经NAT网关做目的地白名单,或使用VPC终端节点直连云服务(流量不出AWS骨干网,可审计且不受公网出口影响)。
  • DNS层管控:Route 53 Resolver DNS Firewall可对VPC内函数的DNS查询做域名名单拦截——直接命中Denonia类DoH规避的检测盲区上游(DoH走443仍需出口管控配合)。
  • 同步优先异步:服务间调用优先经队列/总线解耦(削峰、天然重试、可审计),避免同步调用链的雪联;确需同步时使用签名请求(SigV4类)鉴权。
  • mTLS与服务网格:函数与常驻服务混布时,可经服务网格(如Cloud Service Mesh、Consul)统一东西向mTLS与身份——函数以网格外部身份接入的复杂度较高,建议仅对高敏感链路启用,避免为全量函数引入运维负担。

05 · 编排与工作流安全

900秒执行上限使长任务必须拆解到状态机层(AWS Step Functions、GCP Workflows、Azure Durable Functions),编排层因此成为新的信任枢纽:

  • 状态机权限最小化:状态机服务角色的每个Task只授予完成该步骤所需的最小动作集;输入输出经JSONPath过滤,避免敏感字段贯穿全状态机历史。
  • 任务令牌保护:回调型任务令牌(Task Token)等价于执行授权——泄露即被冒名回调完成;令牌按任务粒度生成、短期有效、不得写入可公开读取的状态。
  • 执行时长意识:Step Functions标准工作流官方支持最长1年执行——长窗口意味着凭证轮换、权限回收必须在状态机设计中显式处理(任务间AssumeRole而非全程固定凭证)。
  • 幂等与补偿:Saga式补偿逻辑必须可重入;人工重放与失败重试同样以幂等为前提(第2节)。
事件驱动调用链与控制点
同步与异步两条链路共享同一套输入治理与护栏要求
说明:控制点与第2—4节基线一一对应;异步链路的重试与死信配置是审计必查项。

本节参考来源(第5页)

以下均为真实可查的权威来源,用于支撑本页事实性表述。

[1]

AWS Lambda异步调用官方文档(默认重试2次、异步事件队列保留与死信队列/Destinations):Asynchronous invocation。

[2]

AWS SQS与Lambda集成官方文档(事件源映射、批处理部分失败报告):Using Lambda with Amazon SQS。

[3]

AWS EventBridge官方文档(事件总线、事件模式、Archive与Replay):Amazon EventBridge。

[4]

AWS API Gateway官方文档(节流与使用计划、授权器、集成超时):API Gateway开发者指南。

[5]

AWS WAF托管规则官方文档:AWS WAF managed rule groups。

[6]

AWS官方博客:Lambda函数URL发布(2022年4月):Announcing AWS Lambda Function URLs。

[7]

Amazon Route 53 Resolver DNS Firewall官方文档:Resolver DNS Firewall。

[8]

AWS Step Functions官方文档(标准工作流执行时长上限1年、任务令牌回调模式):AWS Step Functions。