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

如何在CloudFormation编写AWS IAM策略时添加环境判断条件

实现方案

下面是两种生产环境常用的实现方案,可根据你的权限复杂度选择:


方案1:单策略内用!If动态注入语句(推荐,适合逻辑简单的场景)

直接复用你已经定义的环境判断条件,在Statement数组内通过!If函数控制是否追加dev专属权限,修改后的模板示例如下:

Parameters:
    environment:
        Type: String
        Default: dev
        AllowedValues:
            - dev
            - prd
Conditions:
    isDev: !Equals [ !Ref environment, dev] # 注意原模板这里的条件关键字是复数Conditions,单数会报错,记得修正

Resources:
  StandAlonePolicy:
    Type: AWS::IAM::Policy
    Properties:
      PolicyName: "s3-policy"
      PolicyDocument:
        Version: "2012-10-17"
        Statement:
          # 所有环境通用的权限语句
          - Effect: Allow
            Resource: "*"
            Action:
              - "s3:Get*"
          # dev环境额外追加的权限语句
          - !If
            - isDev
            - Effect: Allow
              Resource: "*"
              Action:
                - "s3:List*" # 替换为你实际需要的dev专属权限
            - !Ref AWS::NoValue # 非dev环境时这条语句不会被生成

方案2:拆分独立的dev专属策略(适合dev权限逻辑复杂的场景)

把dev专属的权限单独做成一个Policy资源,给资源加上Condition: isDev配置,只有dev环境时这个资源才会被创建,prd环境自动忽略,后续维护权限更清晰:

Parameters:
    environment:
        Type: String
        Default: dev
        AllowedValues:
            - dev
            - prd
Conditions:
    isDev: !Equals [ !Ref environment, dev]

Resources:
  # 所有环境通用的基础策略
  BaseS3Policy:
    Type: AWS::IAM::Policy
    Properties:
      PolicyName: "s3-base-policy"
      PolicyDocument:
        Version: "2012-10-17"
        Statement:
        - Effect: Allow
          Resource: "*"
          Action:
            - "s3:Get*"
  # 仅dev环境生效的额外策略
  DevS3Policy:
    Type: AWS::IAM::Policy
    Condition: isDev # 只有isDev为true时才会创建该资源
    Properties:
      PolicyName: "s3-dev-policy"
      PolicyDocument:
        Version: "2012-10-17"
        Statement:
        - Effect: Allow
          Resource: "*"
          Action:
            - "s3:List*" # 替换为你实际的dev专属权限

额外注意点

  • 生产环境建议尽量缩小IAM权限的Resource范围,不要直接用*,避免权限溢出
  • 如果dev专属策略超过3条,优先选方案2拆分,后续迭代权限时不易误改通用配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 13:54:06