

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

# Security Hub CSPM 控件适用于 AWS Lambda
<a name="lambda-controls"></a>

这些 AWS Security Hub CSPM 控制措施评估 AWS Lambda 服务和资源。这些控件可能并非全部可用 AWS 区域。有关更多信息，请参阅 [按地区划分的控件可用性](securityhub-regions.md#securityhub-regions-control-support)。

## [Lambda.1] Lambda 函数策略应禁止公众访问
<a name="lambda-1"></a>

**相关要求：** 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 (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 NIST.800-53.r5 SC-7 (9)、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，PCI DSS v4.0。 1/7.2.1

**类别：**保护 > 安全网络配置

**严重性：**严重

**资源类型：**`AWS::Lambda::Function`

**AWS Config 规则：**[https://docs.aws.amazon.com/config/latest/developerguide/lambda-function-public-access-prohibited.html](https://docs.aws.amazon.com/config/latest/developerguide/lambda-function-public-access-prohibited.html)

**计划类型：**已触发变更

**参数：**无

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

**注意**  
此控件不会评估使用通配符或变量的策略条件。要生成 `PASSED` 调查发现，Lambda 函数策略中的条件必须仅使用固定值，即不包含通配符或策略变量的值。有关策略变量的信息，请参阅《AWS Identity and Access Management 用户指南》**中的[变量和标签](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html)。

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

### 修复
<a name="lambda-1-remediation"></a>

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

首先，请[在 Lambda 控制台上查看基于资源的策略](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html)。确定具有公开策略的 `Principal` 字段值的策略声明，例如 `"*"` 或 `{ "AWS": "*" }`。

您无法从控制台编辑策略。要移除函数的权限，请从 AWS CLI中运行 [https://docs.aws.amazon.com/cli/latest/reference/lambda/remove-permission.html](https://docs.aws.amazon.com/cli/latest/reference/lambda/remove-permission.html) 命令。

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

`{{<function-name>}}` 替换为 Lambda 函数的名称，`{{<statement-id>}}` 替换为要删除的语句的语句 ID（`Sid`）。

## [Lambda.2] Lambda 函数应使用支持的运行时
<a name="lambda-2"></a>

**相关要求：** 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)、(4)、 NIST.800-53.r5 SI-2 NIST.800-53.r5 SI-2 (5)、PCI DSS v4.0。 1/12.3.4

**类别：**保护 > 安全开发

**严重性：**中

**资源类型：**`AWS::Lambda::Function`

**AWS Config 规则：**[https://docs.aws.amazon.com/config/latest/developerguide/lambda-function-settings-check.html](https://docs.aws.amazon.com/config/latest/developerguide/lambda-function-settings-check.html)

**计划类型：**已触发变更

**参数：**
+ `runtime`：`dotnet10, dotnet8, java25, java21, java17, java11, java8.al2, nodejs24.x, nodejs22.x, python3.14, python3.13, python3.12, python3.11, python3.10, ruby4.0, ruby3.4, ruby3.3`（不可自定义）

此控件检查 AWS Lambda 函数运行时设置是否与每种语言中为支持的运行时设置的预期值相匹配。如果 Lambda 函数不使用支持的运行时，则此控件将失败，如“参数”部分所述。Security Hub CSPM 会忽略包类型为的函数。`Image`

Lambda 运行时系统是围绕操作系统、编程语言和需要维护和安全更新的软件库的组合构建的。护和安全更新的操作系统、编程语言和软件库的组合构建的。当安全更新不再支持某个运行时组件时，Lambda 将弃用该运行时系统。虽然您无法创建使用已弃用运行时的函数，但该函数仍可用于处理调用事件。我们建议确保 Lambda 函数处于最新状态，并且不使用已弃用的运行时环境。有关支持的运行时列表，请参阅《AWS Lambda 开发人员指南》**中的 [Lambda 运行时](https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html)。

### 修复
<a name="lambda-2-remediation"></a>

*有关支持的运行时和弃用计划的更多信息，请参阅AWS Lambda 开发人员指南*中的[运行时系统弃用策略](https://docs.aws.amazon.com/lambda/latest/dg/runtime-support-policy.html)。将运行时迁移到最新版本时，请遵循语言发布者的语法和指导。我们还建议应用[运行时更新](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-update.html#runtime-management-controls)，以便在运行时版本不兼容的极少数情况下帮助降低对工作负载造成影响的风险。

## [Lambda.3] Lambda 函数应位于 VPC 中
<a name="lambda-3"></a>

**相关要求：**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 规则：[https://docs.aws.amazon.com/config/latest/developerguide/lambda-inside-vpc.html](https://docs.aws.amazon.com/config/latest/developerguide/lambda-inside-vpc.html)**

**计划类型：**已触发变更

**参数：**无

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

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

### 修复
<a name="lambda-3-remediation"></a>

要将现有函数配置为连接到您的 VPC 中的私有子网，请参阅 *AWS Lambda 开发人员指南*中的[配置 VPC 访问权限](https://docs.aws.amazon.com/lambda/latest/dg/configuration-vpc.html#vpc-configuring)。我们建议至少选择两个私有子网以实现高可用性，并至少选择一个满足功能连接要求的安全组。

## [Lambda.5] VPC Lambda 函数应在多个可用区中运行
<a name="lambda-5"></a>

**相关要求：** NIST.800-53.r5 CP-10、 NIST.800-53.r5 CP-6 (2)、(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 规则：**[https://docs.aws.amazon.com/config/latest/developerguide/lambda-vpc-multi-az-check.html](https://docs.aws.amazon.com/config/latest/developerguide/lambda-vpc-multi-az-check.html)

**计划类型：**已触发变更

**参数：**


| 参数 | 说明 | Type | 允许的自定义值 | Security Hub CSPM 默认值 | 
| --- | --- | --- | --- | --- | 
| `availabilityZones` | 可用区的最小数量 | 枚举 | `2, 3, 4, 5, 6` | `2` | 

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

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

### 修复
<a name="lambda-5-remediation"></a>

如果您将函数配置为连接到您账户中的 VPC，请指定多个可用区中的子网以确保高可用性。有关说明，请参阅 *AWS Lambda 开发人员指南》*中的[配置 VPC 访问权限](https://docs.aws.amazon.com/lambda/latest/dg/configuration-vpc.html#vpc-configuring)。

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

## [Lambda.6] 应标记 Lambda 函数
<a name="lambda-6"></a>

**类别：**识别 > 清单 > 标记

**严重性：**低

**资源类型：**`AWS::Lambda::Function`

**AWS Config 规则:**`tagged-lambda-function`（自定义 Security Hub CSPM 规则）

**计划类型：**已触发变更

**参数：**


| 参数 | 说明 | Type | 允许的自定义值 | Security Hub CSPM 默认值 | 
| --- | --- | --- | --- | --- | 
|  requiredTagKeys  | 被评估资源必须包含的非系统标签键列表。标签键区分大小写。 | StringList （最多 6 件商品）  | 1-6 个符合 [AWS 要求](https://docs.aws.amazon.com/tag-editor/latest/userguide/tagging.html#tag-conventions)的标签键。 |  No default value  | 

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

标签是您分配给 AWS 资源的标签，它由密钥和可选值组成。您可以创建标签，以按用途、所有者、环境或其他标准对资源进行分类。标签可帮助您识别、组织、搜索和筛选资源。使用标签进行标记还可以帮助您跟踪负责操作和通知的资源所有者。使用标签进行标记时，可以将基于属性的访问权限控制（ABAC）作为授权策略实施，该策略根据标签来定义权限。您可以向 IAM 实体（用户或角色）和 AWS 资源附加标签。您可以为 IAM 主体创建单个 ABAC 策略或者一组单独的策略。您可以将这些 ABAC 策略设计为允许在主体的标签与资源标签匹配时进行操作。有关更多信息，请参阅 [ABAC 有什么用 AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html)？ 在 *IAM 用户指南*中。

**注意**  
请勿在标签中添加个人身份信息（PII）或者其他机密或敏感信息。许多人都可以访问标签 AWS 服务，包括 AWS Billing。有关标记更多最佳实践，请参阅《AWS 一般参考》**中的[标记 AWS 资源](https://docs.aws.amazon.com/tag-editor/latest/userguide/tagging.html#tag-best-practices)。

### 修复
<a name="lambda-6-remediation"></a>

要向 Lambda 函数添加标签，请参阅《AWS Lambda 开发人员指南》**中的[在 Lambda 函数上使用标签](https://docs.aws.amazon.com/lambda/latest/dg/configuration-tags.html)。

## [Lambda.7] Lambda 函数应该有 AWS X-Ray 已启用主动跟踪
<a name="lambda-7"></a>

**相关要求：** NIST.800-53.r5 CA-7

**类别：**识别 > 日志记录

**严重性：**低

**资源类型：**`AWS::Lambda::Function`

**AWS Config 规则：**[https://docs.aws.amazon.com/config/latest/developerguide/lambda-function-xray-enabled.html](https://docs.aws.amazon.com/config/latest/developerguide/lambda-function-xray-enabled.html)

**计划类型：**已触发变更

**参数：**无

此控件检查是否为 AWS Lambda 函数启用了主动跟 AWS X-Ray 踪。如果对 Lambda 函数禁用了主动跟踪， X-Ray 则控件将失败。

AWS X-Ray 可以为函数提供跟踪和监控 AWS Lambda 功能，从而节省调试和操作 Lambda 函数的时间和精力。它可以通过分解 Lambda 函数的延迟来帮助您诊断错误并识别性能瓶颈、速度减慢和超时。它还可以帮助满足数据隐私和合规要求。如果您为 Lambda 函数启用主动跟踪，则会 X-Ray提供 Lambda 函数中数据流和处理的整体视图，这可以帮助您识别潜在的安全漏洞或不合规的数据处理实践。这种可见性可以帮助您维护数据的完整性、机密性以及遵守相关法规。

**注意**  
AWS X-Ray 目前不支持使用适用于 Apache Kafka 的亚马逊托管流媒体（亚马逊 MSK）、自行管理 Apache Kafka、带有 ActiveMQ 和 RabbitMQ 的亚马逊 MQ 或亚马逊 DocumentDB 事件源映射的 Lambda 函数进行跟踪。

### 修复
<a name="lambda-7-remediation"></a>

*有关为 AWS Lambda 函数启用主动跟踪的信息，请参阅开发人员指南 AWS X-Ray中的[使用可视化 Lambda 函数调用。](https://docs.aws.amazon.com/lambda/latest/dg/services-xray.html)AWS Lambda *