适用于 Amazon CloudFront 的 Security Hub 控件
这些 AWS Security Hub CSPM 控件评估 Amazon CloudFront 服务和资源。控件可能并非在所有 AWS 区域都可用。有关更多信息,请参阅 按地区划分的控件可用性。
[CloudFront.1] CloudFront 分配应配置默认根对象。
相关要求: NIST.800-53.r5 SC-7(11)、NIST.800-53.r5 SC-7(16)、PCI DSS v4.0.1/2.2.6
类别:保护 > 安全访问管理 > 不可公开访问的资源
严重性:高
资源类型:AWS::CloudFront::Distribution
AWS Config 规则: cloudfront-default-root-object-configured
计划类型:已触发变更
参数:无
此控件检查具有 S3 源的 Amazon CloudFront 分配是否配置为返回作为默认根对象的特定对象。如果 CloudFront 分配使用 S3 源,并且没有配置默认根对象,则该控件会失败。此控件不适用于使用自定义源的 CloudFront 分配。
用户有时可能会请求分配的根 URL,而不是分配中的对象。发生这种情况时,指定默认根对象可以帮助您避免暴露 Web 分发的内容。
修复
要为 CloudFront 分配配置默认根对象,请参阅 Amazon CloudFront 开发人员指南中的如何指定默认根对象。
[CloudFront.3] CloudFront 分配在传输过程中应要求加密
相关要求: NIST.800-53.r5 AC-17(2)、NIST.800-53.r5 AC-4、NIST.800-53.r5 IA-5(1)、NIST.800-53.r5 SC-12(3)、NIST.800-53.r5 SC-13、NIST.800-53.r5 SC-23、NIST.800-53.r5 SC-23(3)、NIST.800-53.r5 SC-7(4)、NIST.800-53.r5 SC-8、NIST.800-53.r5 SC-8(1)、NIST.800-53.r5 SC-8(2)、NIST.800-53.r5 SI-7(6)、PCI DSS v4.0.1/4.2.1
类别:保护 > 数据保护 > 传输中数据加密
严重性:中
资源类型:AWS::CloudFront::Distribution
AWS Config 规则: cloudfront-viewer-policy-https
计划类型:已触发变更
参数:无
此控件会检查 Amazon CloudFront 分配是否要求查看器直接使用 HTTPS,或者是否使用重定向。如果 ViewerProtocolPolicy 对于 defaultCacheBehavior 或 cacheBehaviors 设置为 allow-all,则控制失败。
HTTPS (TLS) 可用于帮助防止潜在攻击者使用中间人或类似攻击来侦听或操纵网络流量。只能允许通过 HTTPS (TLS) 进行加密连接。加密传输中数据可能会影响性能。您应该使用此功能测试应用程序,以了解性能概况和 TLS 的影响。
修复
要对传输中的 CloudFront 分配进行加密,请参阅 Amazon CloudFront 开发人员指南中的查看器与 CloudFront 之间的通信需要 HTTPS。
[CloudFront.4] CloudFront 分配应配置来源失效转移
相关要求:NIST.800-53.r5 CP-10、NIST.800-53.r5 SC-36、NIST.800-53.r5 SC-5(2)、NIST.800-53.r5 SI-13(5)。
类别:恢复 > 弹性 > 高可用性
严重性:低
资源类型:AWS::CloudFront::Distribution
AWS Config 规则: cloudfront-origin-failover-enabled
计划类型:已触发变更
参数:无
此控件检查 Amazon CloudFront 分配是否配置了具有两个或多个源的源组。
CloudFront 来源失效转移可以提高可用性。如果主源不可用或返回特定的 HTTP 响应状态代码,则源失效转移会自动将流量重定向到辅助源。
修复
要为 CloudFront 分配配置源失效转移,请参阅 Amazon CloudFront 开发人员指南中的创建源组。
[CloudFront.5] CloudFront 分配应启用日志记录
相关要求: NIST.800-53.r5 AC-2(4)、NIST.800-53.r5 AC-4(26)、NIST.800-53.r5 AC-6(9)、NIST.800-53.r5 AU-10、NIST.800-53.r5 AU-12、NIST.800-53.r5 AU-2、NIST.800-53.r5 AU-3、NIST.800-53.r5 AU-6(3)、NIST.800-53.r5 AU-6(4)、NIST.800-53.r5 CA-7、NIST.800-53.r5 SC-7(9)、NIST.800-53.r5 SI-3(8)、NIST.800-53.r5 SI-4(20)、NIST.800-53.r5 SI-7(8)、PCI DSS v4.0.1/10.4.2
类别:识别 > 日志记录
严重性:中
资源类型:AWS::CloudFront::Distribution
AWS Config 规则: cloudfront-accesslogs-enabled
计划类型:已触发变更
参数:无
此控件检查是否在 CloudFront 分配上启用了服务器访问日志记录。如果未为分配启用访问日志记录,则控制失败。此控件仅评估是否为分配启用了标准日志记录(旧版)。
CloudFront访问日志提供有关 CloudFront 所接收的每个用户请求的详细信息。每个日志都包含诸如收到请求的日期和时间、发出请求的查看器的 IP 地址、请求的来源以及查看器请求的端口号等信息。这些日志对于安全和访问审计、取证调查等应用很有用。有关分析访问日志的更多信息,请参阅《Amazon Athena 用户指南》中的查询 Amazon CloudFront 日志。
修复
要为 CloudFront 分配配置标准日志记录(旧版),请参阅《Amazon CloudFront 开发人员指南》中的配置标准日志记录(旧版)。
[CloudFront.6] CloudFront 分配应启用 WAF
相关要求: NIST.800-53.r5 AC-4(21)、PCI DSS v4.0.1/6.4.2
类别:保护 > 防护服务
严重性:中
资源类型:AWS::CloudFront::Distribution
AWS Config 规则: cloudfront-associated-with-waf
计划类型:已触发变更
参数:无
此控件可检查 CloudFront 分配是否与 AWS WAF Classic 或 AWS WAF Web ACL 相关联。如果分配未与 Web ACL 关联,则控制失败。
AWS WAF 是一个 Web 应用程序防火墙,可帮助保护 Web 应用程序和 API 免受攻击。通过它,您可以配置一组规则(称为 Web 访问控制列表,即 Web ACL),基于可自定义的 Web 安全规则以及您定义的条件,允许、阻止或计数 Web 请求。确保您的 CloudFront 分配与 AWS WAF Web ACL 关联,以帮助保护其免受恶意攻击。
修复
要将 AWS WAF Web ACL 与 CloudFront 分配相关联,请参阅 Amazon CloudFront 开发人员指南中的使用 AWS WAF 来控制对内容的访问权限。
[CloudFront.7] CloudFront 分配应使用自定义 SSL/TLS 证书
相关要求: NIST.800-53.r5 AC-17(2)、NIST.800-53.r5 AC-4、NIST.800-53.r5 IA-5(1)、NIST.800-53.r5 SC-12(3)、NIST.800-53.r5 SC-13、NIST.800-53.r5 SC-23、NIST.800-53.r5 SC-23(3)、NIST.800-53.r5 SC-7(4)、NIST.800-53.r5 SC-8、NIST.800-53.r5 SC-8(1)、NIST.800-53.r5 SC-8(2)、NIST.800-53.r5 SI-7(6)、NIST.800-171.r2 3.13.15
类别:保护 > 数据保护 > 传输中数据加密
严重性:中
资源类型:AWS::CloudFront::Distribution
AWS Config 规则: cloudfront-custom-ssl-certificate
计划类型:已触发变更
参数:无
此控件检查 CloudFront 分配是否使用 CloudFront 提供的默认 SSL/TLS 证书。如果 CloudFront 分配使用自定义 SSL/TLS 证书,则此控制通过。如果 CloudFront 分配使用默认 SSL/TLS 证书,则此控制将失败。
自定义 SSL/TLS 允许用户使用备用域名访问内容。您可以将自定义证书存储在 AWS Certificate Manager(推荐)中,也可以存储在 IAM 中。
修复
要使用自定义 SSL/TLS 证书为 CloudFront 分配添加备用域名,请参阅 Amazon CloudFront 开发人员指南中的添加备用域名。
[CloudFront.8] CloudFront 分配应使用 SNI 处理 HTTPS 请求
相关要求:NIST.800-53.r5 CA-9(1),NIST.800-53.r5 CM-2
类别:保护 > 安全网络配置
严重性:低
资源类型:AWS::CloudFront::Distribution
AWS Config 规则: cloudfront-sni-enabled
计划类型:已触发变更
参数:无
此控件检查 Amazon CloudFront 分配是否使用自定义 SSL/TLS 证书并配置为使用 SNI 来处理 HTTPS 请求。如果关联了自定义 SSL/TLS 证书,但 SSL/TLS 支持方法是专用 IP 地址,则此控件将失败。
服务器名称指示 (SNI) 是对 TLS 协议的扩展,2010 年以后发布的浏览器和客户端均支持。如果您将 CloudFront 配置为使用 SNI 处理 HTTPS 请求,则 CloudFront 将备用域名与每个边缘站点中的 IP 地址关联。当查看器提交针对内容的 HTTPS 请求时,DNS 将该请求传送到正确边缘站点的 IP 地址。指向您域名的 IP 地址在 SSL/TLS 握手协商期间确定;IP 地址并非专用于您的分发。
修复
要将 CloudFront 分配配置为使用 SNI 来处理 HTTPS 请求,请参阅 CloudFront 开发人员指南中的使用 SNI 提供 HTTPS 请求(适用于大多数客户端)。有关自定义 SSL 证书的信息,请参阅在 CloudFront 中使用 SSL/TLS 证书的要求。
[CloudFront.9] CloudFront 分配应加密流向自定义来源的流量
相关要求: NIST.800-53.r5 AC-17(2)、NIST.800-53.r5 AC-4、NIST.800-53.r5 IA-5(1)、NIST.800-53.r5 SC-12(3)、NIST.800-53.r5 SC-13、NIST.800-53.r5 SC-23、NIST.800-53.r5 SC-23(3)、NIST.800-53.r5 SC-7(4)、NIST.800-53.r5 SC-8、NIST.800-53.r5 SC-8(1)、NIST.800-53.r5 SC-8(2)、NIST.800-53.r5 SI-7(6)、PCI DSS v4.0.1/4.2.1
类别:保护 > 数据保护 > 传输中数据加密
严重性:中
资源类型:AWS::CloudFront::Distribution
AWS Config 规则: cloudfront-traffic-to-origin-encrypted
计划类型:已触发变更
参数:无
此控件检查 Amazon CloudFront 分配是否正在加密到自定义源的流量。对于源协议策略允许“仅限 http”的 CloudFront 分发,此控制失败。如果分配的源协议策略为 “match-viewer”,而查看器协议策略为 “allow-all”,则此控制也会失败。
HTTPS (TLS) 可用于帮助防止侦听或操纵网络流量。只能允许通过 HTTPS (TLS) 进行加密连接。
修复
要更新源协议策略以要求对 CloudFront 连接进行加密,请参阅 Amazon CloudFront 开发人员指南中的要求 CloudFront 与自定义源之间的通信需要 HTTPS。
[CloudFront.10] CloudFront 分配不应在边缘站点和自定义源之间使用已弃用的 SSL 协议
相关要求: NIST.800-53.r5 AC-17(2)、NIST.800-53.r5 AC-4、NIST.800-53.r5 IA-5(1)、NIST.800-53.r5 SC-12(3)、NIST.800-53.r5 SC-13、NIST.800-53.r5 SC-23、NIST.800-53.r5 SC-7(4)、NIST.800-53.r5 SC-8、NIST.800-53.r5 SC-8(1)、NIST.800-53.r5 SC-8(2)、NIST.800-53.r5 SI-7(6)、NIST.800-171.r2 3.13.15、PCI DSS v4.0.1/4.2.1
类别:保护 > 数据保护 > 传输中数据加密
严重性:中
资源类型:AWS::CloudFront::Distribution
AWS Config 规则: cloudfront-no-deprecated-ssl-protocols
计划类型:已触发变更
参数:无
此控件检查 Amazon CloudFront 分配是否使用已弃用的 SSL 协议在 CloudFront 边缘站点与自定义源之间进行 HTTPS 通信。如果 CloudFront 分配中有 CustomOriginConfig,其中 OriginSslProtocols 包括 SSLv3,则此控制失败。
2015 年,国际互联网工程任务组 (IETF) 正式宣布,由于该协议不够安全,应弃用 SSL 3.0。建议您使用 TLSv1.2 或更高版本与自定义源进行 HTTPS 通信。
修复
要更新 CloudFront 分配的 Origin SSL 协议,请参阅 Amazon CloudFront 开发人员指南中的要求 CloudFront 与自定义源之间的通信需要 HTTPS。
[CloudFront.12] CloudFront 分配不应指向不存在的 S3 来源
相关要求: NIST.800-53.r5 CM-2、NIST.800-53.r5 CM-2(2)、PCI DSS v4.0.1/2.2.6
类别:识别 > 资源配置
严重性:高
资源类型:AWS::CloudFront::Distribution
AWS Config 规则: cloudfront-s3-origin-non-existent-bucket
计划类型:定期
参数:无
此控件检查 Amazon CloudFront 分配是否指向不存在的 Amazon S3 源。如果将 CloudFront 分配配置为指向不存在的存储桶,则控制失败。此控件仅适用于 CloudFront 分配,其中不带静态网站托管的 S3 存储桶是 S3 源。
当您账户中的 CloudFront 分配配置为指向不存在的存储桶时,恶意第三方可以创建引用的存储桶并通过分配提供自己的内容。无论路由行为如何,我们都建议您检查所有源,以确保分布指向适当的源。
修复
要修改 CloudFront 分配以指向新的来源,请参阅 Amazon CloudFront 开发人员指南中的更新分配。
[CloudFront.13] CloudFront 分配应使用源站访问控制
类别:保护 > 安全访问管理 > 资源不公开访问
严重性:中
资源类型:AWS::CloudFront::Distribution
AWS Config 规则: cloudfront-s3-origin-access-control-enabled
计划类型:已触发变更
参数:无
此控件检查具有 Amazon S3 源的 Amazon CloudFront 分配是否配置了源访问控制 (OAC)。如果没有为 CloudFront 分配配置 OAC,则控制失败。
使用 S3 存储桶作为 CloudFront 分配的源时,您可以启用 OAC。这允许仅通过指定的 CloudFront 分配访问存储桶中的内容,并禁止直接从存储桶或其他分配访问。尽管 CloudFront 支持来源访问身份(OAI),但 OAC 提供了其他功能,使用 OAI 的分发可以迁移到 OAC。尽管 OAI 提供了一种安全的方式来访问 S3 源,但它也有一些局限性,例如缺乏对精细策略配置的支持,以及不支持在 AWS 区域 中使用需要 AWS 签名版本 4(SigV4)的 POST 方法的 HTTP/HTTPS 请求。OAI 也不支持使用 AWS Key Management Service 加密。OAC 基于使用 IAM 服务主体对 S3 源进行身份验证的 AWS 最佳实践。
修复
要为具有 S3 源的 CloudFront 分配配置 OAC,请参阅 Amazon CloudFront 开发人员指南中的限制对 Amazon S3 源的访问。
[CloudFront.14] 应标记 CloudFront 分配
类别:识别 > 清单 > 标记
严重性:低
资源类型:AWS::CloudFront::Distribution
AWS Config 规则:tagged-cloudfront-distribution(自定义 Security Hub 规则)
计划类型:已触发变更
参数:
| 参数 | 描述 | 类型 | 允许的自定义值 | Security Hub 默认值 |
|---|---|---|---|---|
requiredTagKeys
|
被评估资源必须包含的非系统标签键列表。标签键区分大小写。 | StringList(最多 6 项) | 1-6 个符合 AWS 要求的标签键。 | 无默认值 |
此控件用于检查 Amazon CloudFront 分配是否具有带参数 requiredTagKeys 中定义的特定键的标签。如果分配没有任何标签键或未在参数 requiredTagKeys 中指定所有键,则此控件会失败。如果未提供参数 requiredTagKeys,则此控件仅会检查是否存在标签键,如果分配未使用任何键进行标记,则此控件会失败。自动应用并以 aws: 为开头的系统标签会被忽略。
标签是您分配给 AWS 资源的标记,由一个键和一个可选值组成。您可以创建标签,以按用途、所有者、环境或其他标准对资源进行分类。标签可帮助您识别、组织、搜索和筛选资源。使用标签进行标记还可以帮助您跟踪负责操作和通知的资源所有者。使用标签进行标记时,可以将基于属性的访问权限控制(ABAC)作为授权策略实施,该策略根据标签来定义权限。您可以将标签附加到 IAM 实体(用户或角色)以及 AWS 资源。您可以为 IAM 主体创建单个 ABAC 策略或者一组单独的策略。您可以将这些 ABAC 策略设计为允许在主体的标签与资源标签匹配时进行操作。有关更多信息,请参阅 IAM 用户指南中的什么是适用于 AWS 的 ABAC?。
注意
请勿在标签中添加个人身份信息(PII)或者其他机密或敏感信息。可从许多 AWS 服务访问标签,包括 AWS Billing。有关标记更多最佳实践,请参阅《AWS 一般参考》中的标记 AWS 资源。
修复
要向 CloudFront 分配添加标签,请参阅《Amazon CloudFront 开发人员指南》中的标记 Amazon CloudFront 分配。
[CloudFront.15] CloudFront 分配应使用推荐的 TLS 安全策略
类别:保护 > 数据保护 > 传输中数据加密
严重性:中
资源类型:AWS::CloudFront::Distribution
AWS Config 规则: cloudfront-ssl-policy-check
计划类型:已触发变更
参数:securityPolicies:TLSv1.2_2021,TLSv1.2_2025,TLSv1.3_2025(不可自定义)
此控件检查 Amazon CloudFront 分配是否配置为使用推荐的 TLS 安全策略。如果 CloudFront 分配未配置为使用建议的 TLS 安全策略,则该控件会失败。
如果您将 Amazon CloudFront 分配配置为要求查看者使用 HTTPS 访问内容,则必须选择一项安全策略并指定要使用的最低 SSL/TLS 协议版本。这决定了 CloudFront 使用哪个协议版本与查看者进行通信以及 CloudFront 使用哪些密码来加密通信。我们建议使用 CloudFront 提供的最新安全策略。这样可以确保 CloudFront 使用最新的密码套件来加密查看者和 CloudFront 分配之间传输的数据。
注意
此控件仅为配置为使用自定义 SSL 证书且未配置为支持旧版客户端的 CloudFront 分配生成调查发现。
修复
有关为 CloudFront 分配配置安全策略的信息,请参阅《Amazon CloudFront 开发人员指南》中的更新分配。当为分配配置安全策略时,请选择最新的安全策略。
[CloudFront.16] CloudFront 分配应对 Lambda 函数 URL 源使用源访问控件。
类别:保护 > 安全访问管理 > 访问控制
严重性:中
资源类型:AWS::CloudFront::Distribution
AWS Config 规则: cloudfront-origin-lambda-url-oac-enabled
计划类型:已触发变更
参数:无
此控件检查以 AWS Lambda 函数 URL 作为源的 Amazon CloudFront 分配是否启用了源访问控制 (OAC)。如果 CloudFront 分配使用 Lambda 函数 URL 作为源并且未启用 OAC,则该控件会失败。
AWS Lambda 函数 URL 是 Lambda 函数的专用 HTTPS 端点。如果 Lambda 函数 URL 是 CloudFront 分配的源,函数 URL 必须可供公开访问。因此,作为安全最佳实践,您应该创建一个 OAC 并将其添加到分配中的 Lambda 函数 URL。OAC 使用 IAM 服务主体对 CloudFront 和函数 URL 之间的请求进行身份验证。它还支持使用基于资源的策略,仅当请求代表策略中指定的 CloudFront 分配时才允许调用函数。
修复
有关为使用 Lambda 函数 URL 作为源的 Amazon CloudFront 分配配置 OAC 的信息,请参阅《Amazon CloudFront 开发人员指南》中的限制对 AWS Lambda 函数 URL 源的访问。