如何解决GCP:具有目标App Engine HTTP的Cloud Scheduler作业无法保护与管理员的连接
我已经创建了一个以App Engine HTTP为目标的Cloud Scheduler作业。目标URL是/ admin / task / create-documents
我有一个运行Java 8的App Engine flexible。
它工作正常,但是现在我想确保仅对GCP开发人员(通常称为“ admin”)提供对Cloud Scheduler作业调用的servlet(/ admin / task / create-documents)的访问权限。我假设Cloud Scheduler作业被视为“管理员”。
选项1-无效
我尝试针对标准环境修改web.xml文件,如here所述,但没有成功:
web.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<security-constraint>
<web-resource-collection>
<web-resource-name>admin</web-resource-name>
<url-pattern>/admin/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
</web-app>
选项2-无效
我试图通过将login: admin
添加到handlers
部分来修改app.yaml,如文档here所述,但也没有成功。
runtime: java
env: flex
threadsafe: true
runtime_config:
jdk: openjdk8
server: jetty9
handlers:
- url: /admin/.*
script: auto
login: admin
- url: /.*
script: auto
secure: always
env_variables:
JETTY_ARGS: -Djava.util.logging.config.file=WEB-INF/logging.properties
network:
instance_tag: no-ip
name: my-network
subnetwork_name: my-subnet
但是我也注意到不建议使用登录参数,如here和here所述。他们提到了IAM策略,但不确定如何配置它们。
如何将Cloud Scheduler作业端点仅保护为“管理员”?
解决方法
您不能通过配置。您需要在代码中实施检查。
您可以将静态值添加到https://my-url.appspot.com/admin/task/create-documents?key=my_secret
之类的URL中,或将OIDC身份验证与Cloud Scheduler一起使用以向端点提供JWT令牌。
在两种情况下,您都必须检查机密(JWT上的内容)是否为预期的机密。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。