本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
适用于 Lambda 的 Security Hub 控件
这些 AWS Security Hub 控制措施评估 AWS Lambda 服务和资源。
这些控件可能并非全部可用 AWS 区域。有关更多信息,请参阅 按地区划分的控件可用性。
[Lambda.1] Lambda 函数策略应禁止公共访问
相关要求: NIST.800-53.r5 AC-21、、 NIST.800-53.r5 AC-3 (7) NIST.800-53.r5 AC-3、(21)、、、(11) NIST.800-53.r5 AC-4、 NIST.800-53.r5 AC-4 (16)、(20)、(21) NIST.800-53.r5 AC-6 NIST.800-53.r5 SC-7、 NIST.800-53.r5 SC-7 (3)、(4)、 NIST.800-53.r5 SC-7 NIST.800-53.r5 SC-7 (9)、 NIST.800-53.r5 SC-7 v3.2.1/1.2.1、 NIST.800-53.r5 SC-7 v3.2.1/1.3.1、 NIST.800-53.r5 SC-7 v3.2.1/1.3.2、 NIST.800-53.r5 SC-7 v3.2.1/1.3.2、PCI DSS v3.2.1/1.3.4、v3.2.1/7.2.1、v4.0.1/7.2.1、PCI DSS v4.0.1/7.2.1 PCI DSS PCI DSS PCI DSS PCI DSS
类别:保护 > 安全网络配置
严重性:严重
资源类型: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>
替换为 Lambda 函数的名称,<function-name>
替换为要删除的语句的语句 ID (<statement-id>
Sid
)。
[Lambda.2] Lambda 函数应使用受支持的运行时系统
相关要求: NIST.800-53.r5 CA-9(1)、NIST .800-53.r5 CM-2、.800-53.r5 SI-2、.800-53.r5 SI-2 (2)、NIST .800-53.r5 SI-2 (4)、.800-53.r5 SI-2 (5)、NIST v4.0.1/12.3.4 NIST NIST PCI DSS
类别:保护 > 安全开发
严重性:中
资源类型:AWS::Lambda::Function
AWS Config 规则:lambda-function-settings-check
计划类型:已触发变更
参数:
-
runtime
:dotnet8, dotnet6, java21, java17, java11, java8.al2, nodejs22.x, nodejs20.x, nodejs18.x, python3.13, python3.12, python3.11, python3.10, python3.9, python3.8, ruby3.3, ruby3.2
(不可自定义)
此控件检查 AWS Lambda 函数运行时设置是否与每种语言中为支持的运行时设置的预期值相匹配。如果 Lambda 函数不使用支持的运行时,则此控件将失败,如前面的“参数”部分所述。Security Hub 会忽略包类型为 Image
的函数。
Lambda 运行时系统是围绕操作系统、编程语言和需要维护和安全更新的软件库的组合构建的。护和安全更新的操作系统、编程语言和软件库的组合构建的。当安全更新不再支持某个运行时组件时,Lambda 将弃用该运行时系统。虽然您无法创建使用已弃用运行时的函数,但该函数仍可用于处理调用事件。我们建议确保 Lambda 函数处于最新状态,并且不使用已弃用的运行时环境。有关支持的运行时列表,请参阅《AWS Lambda 开发人员指南》中的 Lambda 运行时。
修复
有关支持的运行时和弃用计划的更多信息,请参阅AWS Lambda 开发人员指南中的运行时系统弃用策略。将运行时迁移到最新版本时,请遵循语言发布者的语法和指导。我们还建议应用运行时更新,以便在运行时版本不兼容的极少数情况下帮助降低对工作负载造成影响的风险。
[Lambda.3] Lambda 函数应位于 VPC
相关要求:PCIDSSv3.2.1/1.2.1、v3.2.1/1. PCI DSS 3.1、v3.2.1/1.3.2、PCI DSS v3.2.1/1.3. PCI DSS 4、 NIST.800-53.r5 AC-2 1、、 NIST.800-53.r5 AC-3 (7)、(21)、、(11)、(16) NIST.800-53.r5 AC-3、(20)、 NIST.800-53.r5 AC-4 (21) NIST.800-53.r5 AC-4、(20)、(21) NIST.800-53.r5 AC-6 NIST.800-53.r5 SC-7、 NIST.800-53.r5 SC-7 (3)、 NIST.800-53.r5 SC-7 (4)、(9) NIST.800-53.r5 SC-7 NIST.800-53.r5 SC-7 NIST.800-53.r5 SC-7 NIST.800-53.r5 SC-7 NIST.800-53.r5 SC-7
类别:保护 > 安全网络配置
严重性:低
资源类型: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, 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 默认值 |
---|---|---|---|---|
|
可用区的最小数量 |
枚举 |
|
|
此控件检查连接到虚拟私有云 (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 函数添加标签,请参阅《AWS Lambda 开发人员指南》中的在 Lambda 函数上使用标签。