【问题标题】:How to allow access to App Engine from only specified IPs?如何仅允许从指定 IP 访问 App Engine?
【发布时间】:2015-11-24 15:20:39
【问题描述】:

我正在用 Python 在 GAE 上构建一个简单的 POST 处理程序,它将接受 POST 并将其写入 Cloud SQL 数据库。

我想将此应用程序的访问权限限制为有限数量的 IP - POST 发起的非 GAE 网络服务器。 基本上,如何允许来自我的 IP 的 POST 并禁止所有其他流量?

看似简单常用的操作,但我在网上没有找到似乎适合的解决方案。大多数 GAE 身份验证和路由包都是围绕用户身份验证构建的。

我应该在哪里寻找解决方案?我应该使用哪些 Google 关键字?这将被写入应用程序本身还是应该专注于 GCP 的另一个组件以进行 IP 访问和路由?

谢谢!

【问题讨论】:

  • 这个 IP 范围有多大?您可以在连接时存储并执行简单检查吗?
  • 非常小。起初它只会是一两个。是的,存储和检查是我的设想。
  • 在这种情况下,因为它只有几个IP,也许在这里防火墙规则是一个更好的选择?
  • Apps Engine 是否提供防火墙规则,或者这是 Compute Engine 的一项功能? cloud.google.com/docs/permissions-overview?hl=en#h.6ve8js2j7vwq
  • 您可以在请求中检查 remote_addr,尝试 self.request.remote_addr stackoverflow.com/questions/4231077/… 并在继续 POST 之前检查它是否在您的允许列表中。

标签: python google-app-engine authentication


【解决方案1】:

感谢Paul Collingwood 提醒我 request.remote_addr 的存在。

这是我目前的解决方案:

ALLOWED_IP = ['173.47.xx.xx1', '173.47.xx.xx2']

class PostHandler(webapp2.RequestHandler):
def post(self):

    # Read the IP of the incoming request
    ip = self.request.remote_addr

    # If the IP is allowed, execute our code
    if ip in ALLOWED_IP:
        # Execute some awesome code

    # Otherwise, slam the door!
    else:
        self.error(403)

我不完全确定我的self.error() 用法在这里是否合适,但这是有效的!从允许的 IP 发出的 POST 请求被接受并执行。所有其他人都会得到 403。

我总是渴望听到改进建议。

【讨论】:

  • 这确实是做你想做的事的好方法。另一种解决方案是使用托管虚拟机,您可以在其中配置防火墙规则,例如在 Compute Engine 中。干杯!
  • 如何使用 MVM 配置防火墙规则?
猜你喜欢
  • 2017-11-27
  • 1970-01-01
  • 2018-10-13
  • 2020-05-22
  • 2020-09-01
  • 2015-12-30
  • 2015-11-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多