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

如何限制仅通过CloudFront Staging分发修改主分发(IAM权限配置)

解决方案:通过IAM策略条件区分直接修改与Staging关联的主分发更新

核心思路

问题的关键是要区分两种cloudfront:UpdateDistribution操作:

  • 禁止无关联Staging分发的直接主分发修改
  • 允许关联指定Staging分发的流量加权配置触发的主分发更新

1. 预准备:创建专属持续部署策略

先为目标主分发创建一个专门的Continuous Deployment Policy(持续部署策略),用于关联Staging分发。记录该策略的ID(例如abc123-xyz789)。

2. 编写带条件例外的IAM拒绝策略

使用IAM策略的Deny效果配合Condition规则,拒绝所有用户对主分发的UpdateDistribution操作,除非请求中明确引用了上述专属的持续部署策略ID。

示例策略如下:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": "cloudfront:UpdateDistribution",
            "Resource": "arn:aws:cloudfront::ACCOUNT_ID:distribution/YOUR_MAIN_DISTRO_ID",
            "Condition": {
                "StringNotEquals": {
                    "cloudfront:RequestParameter/DistributionConfig.ContinuousDeploymentPolicyId": "YOUR_CONTINUOUS_DEPLOYMENT_POLICY_ID"
                }
            },
            "Principal": "*"
        }
    ]
}

3. 可选:限制Staging分发的创建权限

为确保只有授权用户能创建关联主分发的Staging分发,可额外添加允许策略,仅允许用户创建带有指定持续部署策略关联的Staging分发:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "cloudfront:CreateDistribution",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "cloudfront:RequestParameter/DistributionConfig.ContinuousDeploymentPolicyId": "YOUR_CONTINUOUS_DEPLOYMENT_POLICY_ID"
                }
            }
        }
    ]
}

关键说明

  • 当创建Staging分发并配置加权流量时,CloudFront会自动在主分发的更新请求中带上ContinuousDeploymentPolicyId参数,此时策略的Condition会匹配,允许操作通过。
  • 直接修改主分发(如修改缓存策略、源站设置)的请求不会包含该参数,会被策略拒绝。
  • 需替换策略中的ACCOUNT_ID、YOUR_MAIN_DISTRO_ID、YOUR_CONTINUOUS_DEPLOYMENT_POLICY_ID为实际值。

验证方法

  1. 尝试直接修改主分发配置(如修改默认缓存行为),应收到权限拒绝错误。
  2. 创建Staging分发并关联主分发的持续部署策略、配置加权流量,此时主分发的更新操作会被允许。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 09:18:13