【问题标题】:AWS API Gateway Policy to only allow a specific host URL to access仅允许特定主机 URL 访问的 AWS API Gateway 策略
【发布时间】:2018-09-18 13:24:19
【问题描述】:

我在 AWS 中配置了一个 API Gateway 端点,并尝试使用其访问策略来保护它。

我知道可以将端点的访问限制为特定的 IP 地址,但是否也可以根据调用 API 的主机来限制访问? AWS 有关于这些访问策略示例的文档,如下所示:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": [
                "arn:aws:execute-api:region:account-id:api-id/*"
            ]
        },
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": [
               "arn:aws:execute-api:region:account-id:api-id/*"
            ],
            "Condition" : {
                "IpAddress": {
                    "aws:SourceIp": ["192.0.2.0/24", "198.51.100.0/24" ]
                }
            }
        }
    ]
}

例如,我有一个应用程序 www.example.com。我想在访问策略中添加一些内容,只允许 www.example.com 成功向 API 提交请求。

【问题讨论】:

  • 您指的是来自 www.example.com 所在服务器的 API 请求吗?或者这是一个在访问者的网络浏览器中运行的 JavaScript 网络应用程序,其中 API 请求实际上来自每台最终用户的计算机,而不是 www.example.com 服务器?
  • 请求实际上来自 JS webapp。 webapp 在 www.example.com 上运行。希望这可以澄清事情。
  • JavaScript webapp 不会“在 www.example.com 上运行”,它从 www.example.com 加载并在每个用户计算机上的网络浏览器中运行。因此,您无法将 IP 和/或主机名列入白名单,因为它将是每个潜在用户的个人计算机的 ip/主机名。
  • 我明白,这是有道理的。据我了解,如果请求直接来自运行 www.example.com 的服务器怎么办?我假设服务器运行的 IP 可用于保护 API 是否正确?
  • 是的,如果请求来自服务器,那么显然您可以将该服务器的 IP 列入白名单。但是,如果您使用 API Gateway 为 Web 应用程序提供 API 以从浏览器进行 AJAX 样式调用,那么这种安全方法根本不起作用,您应该考虑使用 API 密钥或 JWT 令牌或其他东西.

标签: amazon-web-services authentication aws-api-gateway aws-access-policy


【解决方案1】:

我不确定您是否仍在尝试解决此问题,但我认为您无法在 API 网关级别处理 URL 白名单。

以下是 AWS 文档中列出的可能的 API Gateway 资源策略:

https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-resource-policies-aws-condition-keys.html

【讨论】:

  • 检查了您提供的链接。找不到任何指定 URL 白名单的内容。
【解决方案2】:

难道你不能只使用那些特定主机或主机可以用来访问 API 的 API KEY 吗?

【讨论】:

  • 在该主机环境中,您可以将 API KEY 存储在机密管理器或您想要的任何工具中,然后调用以获取 API 密钥并访问 API GATEWAY。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-10-06
  • 1970-01-01
  • 2016-07-23
  • 2023-03-17
  • 1970-01-01
  • 2014-10-22
  • 1970-01-01
相关资源
最近更新 更多