本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Lambda 的 Security Hub 控件
这些 AWS Security Hub 控件评估 AWS Lambda 服务和资源。
这些控件可能并非全部可用 AWS 区域。 有关更多信息,请参阅按地区划分的控件可用性。
[Lambda.1] Lambda 函数策略应禁止公共访问
相关要求:PCIDSSv3.2.1/1.2.1、v3.2.1/1.3.1、PCI DSS v3.2.1/1.3. PCI DSS 2、v3.2.1/1.3. PCI DSS 4、v3.2. PCI DSS 1/7.2.1、 NIST.800-53.r5 AC-2 1、、 NIST.800-53.r5 AC-3(7)、、(21)、、(11)、(11)、(16) NIST.800-53.r5 AC-3、(20)、(21) NIST.800-53.r5 AC-4、 NIST.800-53.r5 AC-4(21)、(3) NIST.800-53.r5 AC-6、(4) NIST.800-53.r5 SC-7、 NIST.800-53.r5 SC-7(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 NIST.800-53.r5 SC-7
类别:保护 > 安全网络配置
严重性:严重
资源类型: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": "*" }
。
您无法从控制台编辑策略。要移除函数的权限,请运行以下remove-permission
命令 AWS CLI.
$ 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)、.800-53.r5 SI-2 (4)、NIST .800-53.r5 SI-2 (4)、NIST .800-53.r5 SI-2 (5) NIST NIST
类别:保护 > 安全开发
严重性:中
资源类型:AWS::Lambda::Function
AWS Config 规则:lambda-function-settings-check
计划类型:已触发变更
参数:
-
runtime
:dotnet8, dotnet6, java21, java17, java11, java8.al2, nodejs20.x, nodejs18.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. 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,请参阅中的配置VPC访问权限 AWS Lambda 开发者指南。我们建议至少选择两个私有子网以实现高可用性,并至少选择一个满足功能连接要求的安全组。
[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 默认值 |
---|---|---|---|---|
|
可用区的最小数量 |
枚举 |
|
|
此控件检查是否 AWS Lambda 连接到虚拟私有云的函数 (VPC) 至少在指定数量的可用区 (AZs) 中运行。如果函数的运行次数不超过指定数量,则控件将失败AZs。除非您为最小数量提供自定义参数值AZs,否则 Security Hub 将使用默认值 2 AZs。
跨多个部署资源AZs是一个 AWS 确保架构内高可用性的最佳实践。可用性是机密性、完整性和可用性三合一安全模型的核心支柱。连接到的所有 Lambda 函数都VPC应部署多可用区,以确保单个故障区域不会导致操作完全中断。
修复
如果您将函数配置为连接到账户VPC中的,请指定多个子网AZs以确保高可用性。有关说明,请参阅中的配置VPC访问权限 AWS Lambda 开发者指南。
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 函数添加标签,请参阅中的 “在 L ambda 函数上使用标签” AWS Lambda 开发者指南。