AWS Lambda 控件 - AWS Security Hub

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

AWS Lambda 控件

这些控制与 Lambda 资源有关。

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

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

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

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

严重性:严重

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

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

计划类型:已触发变更

参数:

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

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

修复

要修复此问题,您必须更新函数的基于资源的策略以移除权限或添加 AWS:SourceAccount 条件。您只能从 API Lambda 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)、.800-53.r5 CM-2、.800-53.r5 SI-2、NIST .800-53.r5 SI-2 (2)、.800-53.r5 SI-2 (4)、NIST .800-53.r5 SI-2 (5) NIST NIST NIST

类别:保护 > 安全开发

严重性:

资源类型: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(不可自定义)

此控件检查 AWS Lambda 函数运行时设置是否与每种语言中为支持的运行时设置的预期值相匹配。如果 Lambda 函数不使用支持的运行时,控制就会失败,如前面在参数下所述。Security Hub 会忽略包类型为的Image函数。

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

修复

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

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

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

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

严重性:

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

AWS Config 规则:lambda-inside-vpc

计划类型:已触发变更

参数:

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

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

修复

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

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

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

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

严重性:

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

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

计划类型:已触发变更

参数:

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

availabilityZones

可用区的最小数量

枚举

2, 3, 4, 5, 6

2

此控件检查连接到虚拟私有云 (VPC) 的 AWS Lambda 功能是否至少在指定数量的可用区 (AZs) 中运行。如果函数的运行次数不超过指定数量,则控件将失败AZs。除非您为最小数量提供自定义参数值AZs,否则 Security Hub 将使用默认值 2 AZs。

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

修复

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

Lambda 会自动AZs以多个形式运行其他函数,以确保在单个区域发生服务中断时,Lambda 可用于处理事件。

[Lambda.6] 应标记 Lambda 函数

类别:识别 > 清单 > 标记

严重性:

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

AWS Config 规则:tagged-lambda-function(自定义 Security Hub 规则)

计划类型:已触发变更

参数:

参数 描述 类型 允许的自定义值 Security Hub 默认值
requiredTagKeys 评估的资源必须包含的非系统标签密钥列表。标签键区分大小写。 StringList 符合AWS 要求的标签列表 No default value

此控件检查 AWS Lambda 函数是否具有参数中定义的特定键的标签requiredTagKeys。如果函数没有任何标签键或者没有参数中指定的所有密钥,则控件将失败requiredTagKeys。如果requiredTagKeys未提供该参数,则该控件仅检查标签键是否存在,如果该函数未使用任何密钥进行标记,则该控件将失败。系统标签会自动应用并以其开头aws:,但会被忽略。

标签是您分配给 AWS 资源的标签,它由密钥和可选值组成。您可以创建标签,按用途、所有者、环境或其他标准对资源进行分类。标签可以帮助您识别、组织、搜索和筛选资源。标记还可以帮助您跟踪负责任的资源所有者的操作和通知。使用标记时,可以实现基于属性的访问控制 (ABAC) 作为一种授权策略,它根据标签定义权限。您可以为IAM实体(用户或角色)和 AWS 资源附加标签。您可以为IAM委托人创建单个ABAC策略或一组单独的策略。您可以将这些ABAC策略设计为允许在委托人的标签与资源标签匹配时进行操作。有关更多信息,请参阅有什么ABAC用 AWS? 在《IAM用户指南》中。

注意

不要在标签中添加个人身份信息 (PII) 或其他机密或敏感信息。许多人都可以访问标签 AWS 服务,包括 AWS Billing。有关更多标记最佳做法,请参阅中的为AWS 资源添加标签AWS 一般参考

修复

要向 Lambda 函数添加标签,请参阅开发人员指南中的在 Lambda 函数上使用标签。AWS Lambda