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

AWS::IAM::Policy与ManagedPolicy的区别及Lambda权限配置指引

AWS::IAM::Policy 与 AWS::IAM::ManagedPolicy 的核心区别

1. 依附关系与存在形式

  • AWS::IAM::Policy:必须绑定到特定IAM实体(角色、用户、组),无法独立存在,属于实体的一部分,仅能为绑定的实体提供权限。
  • AWS::IAM::ManagedPolicy:是独立的账户级资源,不依附于任何实体,可自由附加到多个IAM实体,实现权限复用。

2. 复用性

  • Policy:仅能作用于绑定的单个/多个指定实体,无法跨实体共享权限规则,适合单一实体的专属权限配置。
  • ManagedPolicy:可批量附加到任意数量的IAM实体,非常适合多个资源共享的通用权限集合,大幅减少配置冗余。

3. 管理与版本控制

  • ManagedPolicy支持版本管理,更新策略时可保留历史版本,方便回滚;还能在IAM控制台独立查看、编辑,权限管理更清晰。
  • Policy无版本控制,修改直接生效;只能在关联的IAM实体页面查看,管理分散。

4. 配额限制

  • 单个IAM角色最多可附加2个内联Policy,而ManagedPolicy默认最多可附加10个;此外,ManagedPolicy的内容大小配额(6144字符)远高于内联Policy(2048字符),更适合复杂的通用权限规则。

你的场景更适合用 AWS::IAM::ManagedPolicy

你的需求是10余个Lambda共享CloudWatch、XRay等通用权限,同时每个Lambda有专属权限,选择ManagedPolicy的原因:

  1. 复用性强:只需定义一次通用权限规则,就能附加到所有Lambda的执行角色,无需在每个Lambda的配置中重复编写通用权限,减少模板冗余。
  2. 维护高效:后续调整通用权限时,只需修改一次ManagedPolicy,所有关联的Lambda角色会自动生效,不用逐个修改10余个Lambda的配置。
  3. 权限边界清晰:通用权限(ManagedPolicy)与专属权限(内联Policy)分离,符合IAM权限最小化原则,也便于审计和排查权限问题。

SAM模板实现示例

以下是具体的配置方式,包含通用ManagedPolicy、Lambda执行角色及专属权限的定义:

1. 定义通用权限的ManagedPolicy

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Resources:
  # 通用权限ManagedPolicy:包含CloudWatch日志、XRay追踪权限
  LambdaCommonPermissions:
    Type: AWS::IAM::ManagedPolicy
    Properties:
      Description: Common permissions for all Lambda functions
      PolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Effect: Allow
            Action:
              - logs:CreateLogGroup
              - logs:CreateLogStream
              - logs:PutLogEvents
            Resource: "*"
          - Effect: Allow
            Action:
              - xray:PutTraceSegments
              - xray:PutTelemetryRecords
            Resource: "*"

2. 配置Lambda执行角色(通用权限+专属权限)

以两个Lambda为例,分别配置S3、ParameterStore专属权限:

# Lambda1执行角色:绑定通用ManagedPolicy + 专属S3权限
  Lambda1ExecutionRole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Effect: Allow
            Principal:
              Service: lambda.amazonaws.com
            Action: sts:AssumeRole
      # 引用通用ManagedPolicy
      ManagedPolicyArns:
        - !Ref LambdaCommonPermissions
      # 专属权限:S3对象操作
      Policies:
        - PolicyName: Lambda1S3Access
          PolicyDocument:
            Version: '2012-10-17'
            Statement:
              - Effect: Allow
                Action:
                  - s3:GetObject
                  - s3:PutObject
                Resource: arn:aws:s3:::your-target-bucket/*

  # Lambda1资源
  Lambda1Function:
    Type: AWS::Serverless::Function
    Properties:
      CodeUri: lambda1/
      Handler: index.handler
      Runtime: python3.11
      Role: !GetAtt Lambda1ExecutionRole.Arn

  # Lambda2执行角色:绑定通用ManagedPolicy + 专属SSM参数权限
  Lambda2ExecutionRole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Effect: Allow
            Principal:
              Service: lambda.amazonaws.com
            Action: sts:AssumeRole
      ManagedPolicyArns:
        - !Ref LambdaCommonPermissions
      Policies:
        - PolicyName: Lambda2SSMAccess
          PolicyDocument:
            Version: '2012-10-17'
            Statement:
              - Effect: Allow
                Action:
                  - ssm:GetParameter
                  - ssm:GetParameters
                Resource: arn:aws:ssm:us-east-1:123456789012:parameter/your-param-path/*

  # Lambda2资源
  Lambda2Function:
    Type: AWS::Serverless::Function
    Properties:
      CodeUri: lambda2/
      Handler: index.handler
      Runtime: python3.11
      Role: !GetAtt Lambda2ExecutionRole.Arn

关键说明

  • 推荐为每个Lambda单独创建执行角色,遵循权限最小化原则,避免一个角色权限过大影响所有Lambda。
  • 实际配置时,可将ManagedPolicy中的Resource限制为具体的ARN(比如指定CloudWatch Log Group前缀),进一步缩小权限范围。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 18:05:57