如何将python3标准环境应用引擎网址的请求限制为单个服务帐户?

问题描述

我在/ healthcheck中可以访问python37标准的env应用程序引擎URL。 我已经有一个服务帐户密钥已生成并保存为json。
具有所有预期字段:

  "project_id": "","private_key_id": "","private_key": "","client_email": "project@appspot.gserviceaccount.com","client_id": "","auth_uri": "https://accounts.google.com/o/oauth2/auth","token_uri": "https://oauth2.googleapis.com/token","auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs","client_x509_cert_url": ""

我想用两种不同的方式调用网址:

  1. 手动请求我的URL,并以某种方式将服务帐户字段用作身份验证请求中的标头。
  2. 安排要运行的cron作业调用相同的URL。

我在Google Cloud上找到的所有文档仅讨论App Engine网址请求下游的身份验证。是否有一种标准方法将App Engine网址请求限制为仅一个服务帐户?

解决方法

不是使用Google Cloud提供的任何服务来确保安全。我只是用一个已编好的api密钥创建了一个参数,并将所有连接强制为https。

在main.py中,我使用了烧瓶功能@ app.before_request来检查cron执行或变量。

@app.before_request
def do_something_whenever_a_request_comes_in():
    if 'X-Appengine-Cron' in request.headers:
        if not request.headers['X-Appengine-Cron']:
            return 'Not Authorized',401
    elif 'apikey' in request.args:
        print (request.args['apikey'])
        if (request.args['apikey'] != config.apikey):
        return 'Not Authorized',401
    else:
       return 'Not Authorized',401
    print('Passed authorization')

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...