如何解决从 API Gateway HTTP 端点到 AWS Elasticsearch 域的响应错误
我在 API 网关中有一个带有 HTTP 请求集成的 post 端点。它不是代理端点。它指向的 URL 是我的 AWS ElasticSearch 域的搜索 URL。我正在获取 post 请求的正文并将其映射到模板以查询 ES 域。
现在我收到了来自 ES 的回复:{"Message":"User: anonymous is not authorized to perform: es:ESHttpPost"}
。
我没有在 ES 域上启用细粒度访问控制,而且它不在 VPC 中。我的 JSON 访问策略如下所示:
"Version": "2012-10-17","Statement": [
{
"Effect": "Allow","Principal": {
"AWS": "*"
},"Action": "es:ESHttP*","Resource": "arn:aws:es:xx-xxxx-x:999999999999:domain/XXXXX/*","Condition": {
"IpAddress": {
"aws:SourceIp": [
"X.X.X.X/X","X.X.X.X/X"
]
}
}
}
]
}
使用此策略,我可以直接联系并查询域,并在允许列表中的 IP 上导航到 Kibana 仪表板。但是,我假设来自我的网关端点的查询请求具有不同的 IP 地址,因为这是我获得上述 403 响应的地方。
我知道我可以在 x-forwarded-for
标头的请求中找到原始 IP 地址,但我认为我无法将其添加为 ES 访问策略的条件,我已经尝试过还有一些其他策略条件,例如用于原则 ARN 的 StringLike 和查找方法请求 ARN,但这些都不起作用。
理想情况下,我希望能够使用实际来源而不是网关的 IP 地址覆盖 sourceIP,但我不知道这是否可行。我也知道我可以在这里只使用一个 lambda 函数,但我想避免在这里需要一个函数,以避免需要维护代码/其他服务。
基本上,当请求来自某些 IP 时,我希望仍然能够允许匿名用户访问,但我想使用几个网关端点创建和抽象某些常用查询。有什么方法可以将 API 端点添加到允许列表中,还是必须启用细粒度的访问控制?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。