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

AWS Lambda发邮件IAM策略配置问题:TFSEC与EC2权限报错

问题原因与解决方案

为什么添加Condition后报错?

你用的lambda:FunctionArn条件键不适用于Lambda执行角色的权限策略。这个条件是用来限制「谁能调用Lambda函数」的身份策略,而Lambda执行角色是Lambda服务自身用来调用EC2等其他服务的身份,当Lambda去调用EC2时,这个条件不会生效,相当于EC2的权限被条件过滤掉了,所以才会报权限不足的错误。

正确的解决方法(满足TFSEC要求+权限正常)

要解决TFSEC的「Resource不能用*」告警,同时保证Lambda权限正常,需要拆分EC2权限,用更精准的资源ARN替代*,同时去掉无效的Condition:

修改后的IAM策略代码

resource "aws_iam_role_policy" "lambda_sendmail_policy" {
  name = "lambda-sendmail"
  role = aws_iam_role.lambda_sendmail_role.id
  policy = jsonencode({
    "Version" : "2012-10-17",
    "Statement" : [
      # 1. EC2描述类权限:用账号+区域的精准资源替代*
      {
        "Sid" : "EC2DescribePermissions",
        "Effect" : "Allow",
        "Action" : [
          "ec2:DescribeInstances",
          "ec2:DescribeNetworkInterfaces"
        ],
        "Resource" : "arn:aws:ec2:us-east-1:${local.accountid}:*"
      },
      # 2. EC2网络接口操作权限:指定具体的资源类型ARN
      {
        "Sid" : "EC2NetworkInterfacePermissions",
        "Effect" : "Allow",
        "Action" : [
          "ec2:CreateNetworkInterface",
          "ec2:AttachNetworkInterface",
          "ec2:DeleteNetworkInterface"
        ],
        "Resource" : [
          "arn:aws:ec2:us-east-1:${local.accountid}:network-interface/*",
          "arn:aws:ec2:us-east-1:${local.accountid}:subnet/${var.subnet_ids}",
          "arn:aws:ec2:us-east-1:${local.accountid}:security-group/${var.security_group_ids}"
        ]
      },
      # 3. 日志权限:缩小到当前Lambda的日志组/流,更严格
      {
        "Effect" : "Allow",
        "Action" : [
          "logs:PutLogEvents",
          "logs:CreateLogStream"
        ],
        "Resource" : [
          "arn:aws:logs:us-east-1:${local.accountid}:log-group:/aws/lambda/${var.appenv}-${var.lambda_appname}:*",
          "arn:aws:logs:us-east-1:${local.accountid}:log-stream:/aws/lambda/${var.appenv}-${var.lambda_appname}:*"
        ]
      },
      # 4. X-Ray权限:用账号级资源替代*,规避TFSEC告警
      {
        "Effect" : "Allow",
        "Action" : [
          "xray:PutTraceSegments",
          "xray:PutTelemetryRecords"
        ],
        "Resource" : "arn:aws:xray:us-east-1:${local.accountid}:*"
      }
    ]
  })
}

关键说明

  • 拆分EC2权限为描述类和操作类,分别用精准资源ARN替代*,满足TFSEC的合规要求。
  • 日志权限进一步缩小到当前Lambda专属的日志组和日志流,比原配置更安全。
  • 移除无效的lambda:FunctionArnCondition,让EC2权限正常生效。
  • 如果不需要autoscaling:CompleteLifecycleAction权限,可直接删除该条目,缩小权限范围。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 02:05:18