Я создал задание Cloud Scheduler с таргетингом на HTTP App Engine. Целевой URL-адрес: / admin / task / create-documents.
У меня есть гибкий движок App Engine, работающий с java 8.
Он работает нормально, но теперь я хотел бы защитить доступ к сервлету, вызываемому заданием Cloud Scheduler (/ admin / task / create-documents), только для разработчиков GCP (обычно называемых «admin»). Я предположил, что задание Cloud Scheduler рассматривается как «администратор».
Вариант 1 - не сработало
Я попытался изменить файл web.xml как для стандартной среды, как упоминалось здесь, но безуспешно:
Файл 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-apphandlers
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 - не сработало
Я попытался изменить app.yaml, добавив login: admin
в раздел handlers
, как указано в документации здесь, но тоже безуспешно.
Файл app.yaml:
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
Но я также заметил, что параметр входа в систему устарел, как упоминалось здесь и здесь. Они упоминают политики IAM, но я не уверен, как их настроить.
Как защитить конечную точку задания Cloud Scheduler только для администратора?