amazon-web-services - 如何拒绝对 AWS API 网关的公开访问?
问题描述
与此问题类似,我想拒绝对 AWS API 网关的公开访问,并且仅在通过特定用户帐户调用 API 时才允许访问。我已将以下资源策略应用于网关:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"NotPrincipal": {
"AWS": [
"arn:aws:iam::123456789012:root",
"arn:aws:iam::123456789012:user/apitestuser"
]
},
"Action": "execute-api:Invoke",
"Resource": "arn:aws:execute-api:us-east-1:123456789012:abcd123456/*"
}
]
}
但是当我跑步时
curl -X GET https://abcd123456.execute-api.us-east-1.amazonaws.com/dev/products
我仍然收到带有数据的成功响应:
[{"id":1,"name":"Product 1"},{"id":2,"name":"Product 2"}]
我希望收到 4XX 响应。
如何更改策略以拒绝对网关的公共访问?或者,不使用 VPC 就不能拒绝公共访问吗?理想情况下,我希望避免使用 VPC,因为在多个区域使用 NAT 网关会很昂贵。我还想避免构建任何身份验证机制,因为身份验证和授权发生在代理到该网关的其他 API 网关中。
解决方案
根据评论。
问题是在添加/更改策略后没有重新部署阶段。
所以解决的办法就是重新部署stage,让策略生效。
推荐阅读
- python - ImageAI -“TypeError:‘NoneType’对象不可下标”
- ios - 在显示 contextMenu 时做一些事情
- automation - 插件核心和语言是插件录制的一部分吗?
- php - 处理从 MYSQL/PHP 创建的 JSON 中的数值
- r - R包Future - 为什么与远程工作者的循环会挂起本地R会话
- angularjs - AngularJS:Swiper.js 不显示背景图像
- javascript - 如何使用 Django 后端保护 AJAX 调用?
- google-apps-script - 用于发送电子邮件的 Google 表格脚本
- python - 从熊猫的嵌套字典列中提取值
- button - 使用内部文本单击按钮