AWS API Gateway资源策略配置:拒绝IP并允许IAM角色调用
允许内部Lambda访问受IP白名单限制的API Gateway端点
我们在AWS上部署了一个通过API Gateway对外暴露的Lambda函数,当前API的资源策略仅允许公司白名单内的IP地址访问该端点。现在需要让另一个内部Lambda函数通过Node.js的HTTP调用方式访问这个API,当前环境未配置VPC;如果API本身有可选的令牌认证机制,就无需进行以下资源策略配置。
现有API资源策略如下:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::******:role/service-role/{roleName}" // 允许指定Lambda角色访问 }, "Action": "execute-api:Invoke", "Resource": "arn:aws:execute-api:sa-east-1:******:******/*/*/*" // 受限制的API资源 }, { "Effect": "Allow", "Principal": "*", "Action": "execute-api:Invoke", "Resource": "arn:aws:execute-api:sa-east-1:******:******/*/*/*", "Condition": { "IpAddress": { "aws:SourceIp": [ "999.99.999.999", "999.99.999.999", "999.999.999", "999.99.999.999", "999.99.999.999", "999.99.999.999" // 模拟IP白名单 ] } } }, { "Effect": "Deny", "Principal": "*", "Action": "execute-api:Invoke", "Resource": "arn:aws:execute-api:sa-east-1:******:******/*/*/*", "Condition": { "NotIpAddress": { "aws:SourceIp": [ "999.99.999.999", "999.99.999.999", "999.999.999", "999.99.999.999", "999.99.999.999", "999.99.999.999" ] }, "ArnNotLike": { "aws:PrincipalArn": "arn:aws:iam::******:role/service-role/{roleName}" } } } ] }
策略逻辑说明
- 第一条规则:直接授权指定的Lambda服务角色调用目标API
- 第二条规则:仅允许白名单内的IP地址发起API调用
- 第三条规则:拒绝所有既不在IP白名单内、又不是指定Lambda角色的调用请求
内容的提问来源于stack exchange,提问作者Ana
相关产品推荐
相关产品推荐

