一图胜千言
目标
我们需要在Amazon API Gateway设置资源策略,用于控制某些IP段能够访问特定后端服务。
前提
假设已经完成了Amazon API Gateway中REST API的接口部署,如下就是已经存在的API接口:
步骤
创建资源策略
点击“资源策略”,写入如下内容后,点击“保存”按钮即可:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "execute-api:Invoke",
"Resource": "arn:aws-cn:execute-api:cn-north-1:xxx:xxx/*/*/adminApi/*"
},
{
"Effect": "Deny",
"Principal": "*",
"Action": "execute-api:Invoke",
"Resource": "arn:aws-cn:execute-api:cn-north-1:xxx:xxx/*/*/adminApi/*",
"Condition": {
"NotIpAddress": {
"aws:SourceIp": "x.x.x.x/24"
}
}
},
{
"Effect": "Allow",
"Principal": "*",
"Action": "execute-api:Invoke",
"Resource": "arn:aws-cn:execute-api:cn-north-1:xxx:xxx/*/*/openApi/*"
}
]
}
这里资源策略的意思就是许可特定的IP段x.x.x.x/32
,才能够访问/adminApi/*
的接口,其他接口都能够随意访问。值得注意的是这里的Resource
格式:arn:aws-cn:execute-api:cn-north-1:账号id:API Gateway的id/阶段名称/http请求方法/adminApi/*
。
需要注意:Allow 与 Deny的策略顺序。
重新部署Rest API接口
选择“资源”,选择“/”,下拉“操作”按钮,选中“部署API”;
选择部署阶段,点击“部署”。
验证
异地IP验证
使用移动IP调用,请求被拒绝了。
白名单IP验证
同样的请求,在白名单中的IP就可以正常请求。
总结
这里使用的AWS中国北京地区的API Gateway服务,通过策略控制对后台服务的访问控制。