AWS Lambda 控件 - AWS Security Hub

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

AWS Lambda 控件

这些控制与 Lambda 资源有关。

这些控件可能并非全部可用 AWS 区域。有关更多信息,请参阅 按地区划分的控件可用性

[Lambda.1] Lambda 函数策略应禁止公共访问

相关要求:PCI DSS v3.2.1/1.2.1、PCI DSS v3.2.1/1.3.1、PCI DSS v3.2.1/1.3.2、PCI DSS v3.2.1/1.3.4、PCI DSS v3.2.1/7.2.1、NIST.800-53.r5 AC-21、NIST.800-53.r5 AC-3、NIST.800-53.r5 AC-3(7)、NIST.800-53.r5 AC-4、NIST.800-53.r5 AC-4(21)、NIST.800-53.r5 AC-6、NIST.800-53.r5 SC-7、NIST.800-53.r5 SC-7(11)、NIST.800-53.r5 SC-7(16)、NIST.800-53.r5 SC-7(20)、NIST.800-53.r5 SC-7(21)、NIST.800-53.r5 SC-7(3)、NIST.800-53.r5 SC-7(4)、NIST.800-53.r5 SC-7(9)。

类别:保护 > 安全网络配置

严重性:严重

资源类型:AWS::Lambda::Function

AWS Config 规则:lambda-function-public-access-prohibited

计划类型:已触发变更

参数:

此控件检查 Lambda 函数基于资源的策略是否禁止您账户之外的公开访问。如果允许公共访问,则控制失败。如果从 Amazon S3 调用 Lambda 函数,并且该策略不包含限制公共访问的条件,则控制也会失败,例如 AWS:SourceAccount。我们建议在存储桶策略中使用 AWS:SourceAccount 与其他 S3 条件以获得更精细的访问权限。

Lambda 函数不应公开访问,因为这可能会导致意外访问函数代码。

修复

要修复此问题,您必须更新函数的基于资源的策略以移除权限或添加 AWS:SourceAccount 条件。您只能通过 Lambda API 或更新基于资源的策略。 AWS CLI

首先,请在 Lambda 控制台上查看基于资源的策略。确定具有公开策略的 Principal 字段值的策略声明,例如 "*"{ "AWS": "*" }

您无法从控制台编辑策略。要移除函数的权限,请从 AWS CLI中运行 remove-permission 命令。

$ aws lambda remove-permission --function-name <function-name> --statement-id <statement-id>

<function-name> 替换为 Lambda 函数的名称,<statement-id> 替换为要删除的语句的语句 ID (Sid)。

[Lambda.2] Lambda 函数应使用受支持的运行时系统

相关要求:NIST.800-53.r5 CA-9(1)、NIST.800-53.r5 CM-2、NIST.800-53.r5 SI-2、NIST.800-53.r5 SI-2(2)、NIST.800-53.r5 SI-2(4)、NIST.800-53.r5 SI-2(5)。

类别:保护 > 安全开发

严重性:

资源类型:AWS::Lambda::Function

AWS Config 规则:lambda-function-settings-check

计划类型:已触发变更

参数:

  • runtimedotnet8, dotnet6, java21, java17, java11, java8.al2, nodejs20.x, nodejs18.x, nodejs16.x, python3.12, python3.11, python3.10, python3.9, python3.8, ruby3.3, ruby3.2(不可自定义)

此控件检查运行时的 Lambda 函数设置是否与为每种语言支持的运行时设置的预期值相匹配。如果 Lambda 函数不使用支持的运行时系统,则控制失败。

该控件会检查前面在参数下注明的运行时系统的功能设置。Security Hub 会忽略包类型为的Image函数。

Lambda 运行时系统是围绕操作系统、编程语言和需要维护和安全更新的软件库的组合构建的。护和安全更新的操作系统、编程语言和软件库的组合构建的。当安全更新不再支持某个运行时组件时,Lambda 将弃用该运行时系统。尽管您无法创建使用已弃用运行时的函数,但该函数仍可用于处理调用事件。我们建议确保您的 Lambda 函数是最新的,并且不要使用已弃用的运行时环境。有关支持的运行时列表,请参阅《开发人员指南》中的 Lambda 运行时。AWS Lambda

修复

有关支持的运行时和弃用计划的更多信息,请参阅AWS Lambda 开发人员指南中的运行时系统弃用策略。将运行时迁移到最新版本时,请遵循语言发布者的语法和指导。我们还建议应用运行时更新,以帮助降低在运行时版本不兼容的罕见情况下影响工作负载的风险。

[Lambda.3] Lambda 函数应位于 VPC 中

相关要求:PCI DSS v3.2.1/1.2.1, PCI DSS v3.2.1/1.3.1, PCI DSS v3.2.1/1.3.2, PCI DSS v3.2.1/1.3.4, NIST.800-53.r5 AC-21, NIST.800-53.r5 AC-3, NIST.800-53.r5 AC-3(7), NIST.800-53.r5 AC-4, NIST.800-53.r5 AC-4(21), NIST.800-53.r5 AC-6, NIST.800-53.r5 SC-7, NIST.800-53.r5 SC-7(11), NIST.800-53.r5 SC-7(16), NIST.800-53.r5 SC-7(20), NIST.800-53.r5 SC-7(21), NIST.800-53.r5 SC-7(3), NIST.800-53.r5 SC-7(4), NIST.800-53.r5 SC-7(9)

严重性:

资源类型:AWS::Lambda::Function

AWS Config 规则:lambda-inside-vpc

计划类型:已触发变更

参数:

此控件检查 Lambda 函数是否部署在虚拟私有云 (VPC) 中。如果 Lambda 函数未部署在 VPC 中,则控制失败。Security Hub 不会评估 VPC 子网路由配置来确定公共可达性。您可能会看到 Lambda @Edge 资源的失败的调查发现。

在 VPC 中部署资源可增强安全性和对网络配置的控制。此类部署还提供了跨多个可用区域的可扩展性和高容错能力。您可以自定义 VPC 部署以满足不同的应用程序要求。

修复

要将现有函数配置为连接到您的 VPC 中的私有子网,请参阅 AWS Lambda 开发人员指南中的配置 VPC 访问权限。我们建议至少选择两个私有子网以实现高可用性,并至少选择一个满足功能连接要求的安全组。

[Lambda.5] VPC Lambda 函数应在多个可用区内运行

相关要求:NIST.800-53.r5 CP-10、NIST.800-53.r5 CP-6(2)、NIST.800-53.r5 SC-36、NIST.800-53.r5 SC-5(2)、NIST.800-53.r5 SI-13(5)。

类别:恢复 > 弹性 > 高可用性

严重性:

资源类型:AWS::Lambda::Function

AWS Config 规则:lambda-vpc-multi-az-check

计划类型:已触发变更

参数:

参数 描述 类型 允许的自定义值 Security Hub 默认值

availabilityZones

可用区的最小数量

枚举

2, 3, 4, 5, 6

2

此控件检查连接到虚拟私有云 (VPC) 的 AWS Lambda 功能是否至少在指定数量的可用区 (AZ) 中运行。如果该功能未在指定数量或更多的可用区中运行,则控制失败。除非您为可用区的最小数量提供自定义参数值,否则 Security Hub 将使用默认值即两个可用区。

跨多个可用区部署资源是确保架构内高可用性 AWS 的最佳实践。可用性是机密性、完整性和可用性三合一安全模型的核心支柱。连接到 VPC 的所有 Lambda 函数都应具有多可用区部署,以确保单个区域的故障不会导致操作完全中断。

修复

如果您将函数配置为连接到您账户中的 VPC,请指定多个可用区中的子网以确保高可用性。有关说明,请参阅 AWS Lambda 开发人员指南》中的配置 VPC 访问权限

Lambda 自动在多个可用区中运行其他功能,以确保在单个可用区发生服务中断时可以处理事件。