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

AWS Lambda执行角色缺EC2网络接口权限,如何正确配置IAM策略资源范围

为什么你配置的策略不生效

你遇到的授权失效问题,根源是IAM策略中Action与Resource的服务归属完全错配:

  • 你列出的所有操作都是EC2服务的API,对应的授权资源必须是EC2服务下的网络接口、云实例等对象
  • 你当前把Resource绑定为Lambda函数的ARN,这类资源属于Lambda服务,和EC2操作的校验规则完全不匹配,IAM根本无法识别这是对EC2操作的有效授权
    这也是为什么只有把Resource设为*时才能正常生效——通配符覆盖了所有服务的所有资源,恰好匹配到了EC2操作的资源要求。
EC2网络接口操作的正确资源匹配规则

不同EC2操作的资源粒度授权要求不同,不需要所有操作都绑定同一个Resource值,具体规则如下:

  • 强制要求通配符的操作:所有Describe*类只读查询操作,包括ec2:DescribeNetworkInterfaces、ec2:DescribeInstances。这类全局列表查询API在IAM设计上不支持绑定特定资源对象,合法的Resource值只能是*,没有其他可选的精准ARN格式。
  • 支持精准ENI粒度的操作:ec2:DeleteNetworkInterface、ec2:ModifyNetworkInterfaceAttribute、ec2:ResetNetworkInterfaceAttribute,这类操作可以直接绑定对应ENI的ARN,格式为arn:aws:ec2:<region>:<acc_id>:network-interface/<eni-id>
  • 涉及两类资源的操作:ec2:AttachNetworkInterface、ec2:DetachNetworkInterface,操作本身同时涉及ENI和待挂载的EC2实例,需要在Resource字段同时声明两类对象的ARN:
    • 网络接口ARN:同上格式
    • EC2实例ARN:arn:aws:ec2:<region>:<acc_id>:instance/<instance-id>
  • 带前置条件的创建操作:ec2:CreateNetworkInterface在执行时目标ENI还没有生成具体ID,无法直接绑定待创建的ENI ARN,一般通过条件键限制创建ENI所属的子网、安全组范围,实现授权范围收紧。
适配Lambda关联VPC场景的精准授权策略示例

针对Lambda关联VPC时需要的自动ENI管理能力,你不需要用全量通配符*实现授权,也不需要绑定Lambda函数的ARN,可按照操作类型拆分授权语句,在最小权限原则下实现功能可用:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeNetworkInterfaces",
                "ec2:DescribeInstances"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:CreateNetworkInterface",
                "ec2:DeleteNetworkInterface",
                "ec2:ModifyNetworkInterfaceAttribute",
                "ec2:ResetNetworkInterfaceAttribute",
                "ec2:AttachNetworkInterface",
                "ec2:DetachNetworkInterface"
            ],
            "Resource": [
                "arn:aws:ec2:<region>:<acc_id>:network-interface/*",
                "arn:aws:ec2:<region>:<acc_id>:instance/*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:ResourceAccount": "<acc_id>"
                }
            }
        }
    ]
}

这个策略的授权逻辑:

  • 第一块为只读查询类操作授权,因为这类操作本身不支持资源粒度绑定,使用*的风险仅为账号下EC2资源的只读查询,无修改风险
  • 第二块为ENI的增删改、挂载卸载操作授权,资源范围严格限定到同账号同区域下的ENI和实例资源,不会覆盖其他服务的对象
  • 后续如果需要进一步收紧权限,可以把第二块里的通配符替换为指定的ENI ID、或增加条件键限制ENI必须归属指定子网/安全组,完全满足精准授权的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.24 01:45:02