如何在GAE灵活环境中保护Google cron服务任务?

时间:2017-03-13 15:46:25

标签: java security google-app-engine cron app-engine-flexible

我想要一个网址:

  • 只能通过Google cron服务

  • 进行调用
  • 用户无法在网络浏览器中调用

Whats on the google docs不起作用:当cron服务调用servlet时,它也会给我403错误 - 禁止访问...

并且没有关于灵活环境的app.yaml文件的安全相关信息。

我做了两个观察:

  • Google声称“Google App Engine从IP地址0.1.0.1发出Cron请求”。但我得到另一个IP地址启动cron工作:

another IP address

  • 从此IP地址开始,HTTP标头实际上包含X-Appengine-Cron(值为true)

你有什么想法吗?

1 个答案:

答案 0 :(得分:3)

login: admin文件的handlers部分中提及基于app.yaml配置的保护方法的引用文档摘要不正确 - handlers部分适用于{{ 3}},而不是the (non-java) standard environment app.yaml。因此,您可能希望删除此类未记录的配置,以确保它没有一些意外/不良的负面影响。

只检查X-Appengine-Cron应该足够了:它只能由您应用的cron服务设置。来自the flexible environment one

  

来自Cron服务的请求还将包含HTTP标头:

X-Appengine-Cron: true
     

X-Appengine-Cron标头由Google App Engine在内部设置。如果   您的请求处理程序找到它可以信任该请求的头   是一个cron请求。如果标头存在于外部用户中   对您的应用程序的请求,它被剥离,除了记录的请求   在应用程序的管理员中,谁被允许设置   标题用于测试目的。

至于为什么对cron请求的响应确切地说是403 - 你应该显示你的处理程序代码(最有可能)是负责构建答复的代码。