You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Terraform在CloudFront中启用Strict-Transport-Security?附代码示例

为CloudFront配置Strict-Transport-Security(HSTS)的Terraform实现

操作步骤:在CloudFront中添加HSTS响应头策略

只需在CloudFront层面配置HSTS即可,无需修改后端APIGW或Lambda的配置——因为CloudFront作为用户请求的入口,其返回的响应头会覆盖后端服务的对应头信息,保证策略统一。

Terraform代码示例

  1. 创建HSTS响应头策略
resource "aws_cloudfront_response_headers_policy" "hsts_policy" {
  name = "HSTS-Security-Policy"

  security_headers_config {
    strict_transport_security {
      access_control_max_age_sec = 31536000 # 1年,符合预加载列表要求
      include_subdomains         = true      # 按需开启:若所有子域名都使用HTTPS则启用
      preload                   = true      # 可选:若要加入浏览器HSTS预加载列表则启用
      override                  = true      # 强制覆盖后端返回的HSTS头,避免冲突
    }
  }
}
  1. 关联策略到CloudFront分发的缓存行为
    将上述策略绑定到CloudFront的所有缓存行为(包括默认行为和自定义路径行为):
resource "aws_cloudfront_distribution" "main" {
  # 保留你已有的分发配置(如origins、viewer_certificate等)

  default_cache_behavior {
    # 保留你已有的配置(如target_origin_id、viewer_protocol_policy等)
    response_headers_policy_id = aws_cloudfront_response_headers_policy.hsts_policy.id
  }

  # 如果你有多个对接不同APIGW的自定义缓存行为,逐个关联策略
  ordered_cache_behavior {
    path_pattern     = "/api/v2/*"
    target_origin_id = "api-gw-v2-origin"
    # 保留其他已有配置
    response_headers_policy_id = aws_cloudfront_response_headers_policy.hsts_policy.id
  }
}

是否需要修改APIGW或Lambda?

不需要。原因如下:

  • CloudFront配置中的override = true会强制替换后端(APIGW/Lambda)返回的任何HSTS头,确保整个域名下的HSTS策略统一。
  • 若后端未返回HSTS头,CloudFront会自动添加你配置的头信息;若后端已有相关头,会被CDN的配置覆盖,避免出现多版本策略导致的安全问题。

关键参数说明

  • access_control_max_age_sec:设置浏览器缓存HSTS规则的时长,建议至少180天(15552000秒);若要申请加入浏览器预加载列表,必须设置为31536000秒(1年)。
  • include_subdomains:开启后会将HSTS规则应用到所有子域名,仅当所有子域名都已启用HTTPS时建议开启。
  • preload:开启后可将域名提交到浏览器内置的HSTS预加载列表,一旦提交无法轻易撤销,需确认域名长期使用HTTPS后再开启。

内容的提问来源于stack exchange,提问作者mt55

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 20:33:27