gpt4 book ai didi

python - 限制对 AWS lambda flask 应用程序的访问

转载 作者:太空宇宙 更新时间:2023-11-03 10:47:53 26 4
gpt4 key购买 nike

我们将我们的 flask 应用程序部署到 AWS lambda 并希望限制对它的访问:

  • 我们的开发团队(每个人都有一些外部 IP)
  • Wordpress 服务器(静态 IP)
  • Bitbucket(用于自动部署到 lambda)
  • Google oAuth2(对 lambda 的回调函数)

通过在 AWS 网关或 Flask 本身中将相应的 IP 列入白名单,前两个相当容易实现。然而,后两者有点棘手,因为 bitbucket 管道没有静态 IP,也没有从 Google 接收 oauth2 回调。

我查看了 Http header 中的引荐来源网址,以确定 Google 的回调有效但它很容易被欺骗...

是否有一种复杂的方法可以将应用锁定到上述来源?

这是我目前得到的版本

def whitelist_handler():
whitelist_ips = os.getenv('WHITELIST_IPS')
allow_access = True

if whitelist_ips:
whitelist_ips = whitelist_ips.split(',')
referer = request.headers.get('Referer', '')

whitelist_domains = ['https://accounts.google.com/signin/']

if request.remote_addr not in whitelist_ips and not any([referer.startswith(domain) for domain in whitelist_domains]):
allow_access = False

if not allow_access:
abort(401)

最佳答案

比特桶

对于 Bitbucket,管道实际上具有列出的静态 IP 地址 on the docs .

Google OAuth

对于 OAuth,我不确定您在这里做什么,但 OAuth 流程的任何部分都不涉及提供商 (Google) 需要向您的应用程序发送 Web 请求。 OAuth 完全依赖于重定向用户(他们应该已经可以通过您的其他规则进行访问)。您可以阅读此流程 here .

因此,只要您的规则允许您的用户 IP,那么您无需为 Google 做任何事情。此流程就是为什么可以将 OAuth 用于本地或内联网应用程序的原因。

关于python - 限制对 AWS lambda flask 应用程序的访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57862822/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com