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

如何为IAM角色添加条件,仅允许API Handler使用AWS凭证?

限制IAM角色仅允许指定API Handler使用的解决方案

要实现这个需求,核心是利用AWS IAM的条件键,通过API Handler的唯一标识来做精准的权限控制,具体步骤如下:

1. 确定API Handler的唯一标识

先拿到能唯一识别这个API Handler的信息,常见场景对应标识如下:

  • 如果是API Gateway托管的API Handler:使用API Gateway的完整ARN(对应aws:SourceArn条件键),或者固定访问IP(对应aws:SourceIp)
  • 如果是私有网络内的自定义Handler(比如ECS/EKS上的服务):使用VPC ID(aws:SourceVpc)或VPCE ID(aws:SourceVpce),这类标识比IP更稳定,适合私有环境

2. 修改IAM角色的信任策略

编辑Lambda用来扮演的IAM角色的信任关系,添加条件限制:只有指定API Handler触发的请求,才能获取该角色的临时凭证。

举个API Gateway场景的示例,信任策略代码如下:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "lambda.amazonaws.com"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "ArnEquals": {
          "aws:SourceArn": "arn:aws:execute-api:us-east-1:123456789012:abc123/prod/GET/your-target-endpoint"
        }
      }
    }
  ]
}

将上述aws:SourceArn值替换为你自己API Gateway的完整ARN,精确到stage和接口路径,确保只有该特定API触发的Lambda能获取角色凭证。

如果是固定IP场景,条件部分可修改为:

"Condition": {
  "IpAddress": {
    "aws:SourceIp": "10.0.0.5/32"
  }
}

3. 可选:给权限策略补充限制(提升安全性)

若想进一步加固权限,还可以在角色的权限策略中添加相同条件。这样即便凭证意外泄露,非指定Handler也无法用它调用其他AWS服务。比如给S3访问权限添加限制:

{
  "Effect": "Allow",
  "Action": "s3:GetObject",
  "Resource": "arn:aws:s3:::your-bucket/*",
  "Condition": {
    "ArnEquals": {
      "aws:SourceArn": "arn:aws:execute-api:us-east-1:123456789012:abc123/prod/GET/your-target-endpoint"
    }
  }
}

关键注意事项

  • 标识要精准:比如API Gateway的ARN需精确到具体stage和接口路径,避免同API下其他接口误用权限
  • 私有环境优先用VPC/VPCE条件:比IP更稳定,避免公网IP变动导致权限失效
  • 测试验证:可通过aws sts get-caller-identity模拟不同来源的请求,确认只有指定Handler的请求能成功获取凭证

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 21:57:35