微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从 API Gateway HTTP 端点到 AWS Elasticsearch 域的响应错误

如何解决从 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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?