使用受 IAP 保护的应用验证 Google Composer http 调用任务
Authenticate Google Composer http call task with IAP protected app
我有一个设置,其中我有一个应用程序引擎 REST 应用程序和一个 Google composer / airflow DAG,它有一个任务,它应该从应用程序的一个端点获取数据。该应用程序受 IAP 保护。我已将运行 Airflow 的服务帐户添加到 "IAP-secured Web App User" 列表中,但是每次执行该步骤时,对 http 调用的响应都是 Google 登录页面。知道是否需要任何额外步骤吗?
我的 DAG 步骤的代码:
def get_data():
r = requests.get(url="url-to-my-app-endpoint>")
print('stuff:')
print(r.status_code)
print(r.content)
return 1
# ...
python_fetch_data = PythonOperator(
task_id='python_fetch_data',
python_callable=get_data,
dag=dag,
depends_on_past=True,
priority_weight=2
)
https://cloud.google.com/iap/docs/authentication-howto#authenticating_from_a_service_account 解释了如何扩展您的 DAG 代码,以便它向 IAP-protected API 后端发送凭据。
一些背景知识:由于 Composer 构建于 GCP 之上,您的 Composer 部署具有独特的 service account 身份,即 运行 作为。您可以将该服务帐户添加到端点的 IAP 访问列表中。
我不知道 Composer UI 是否可以轻松查看您的服务帐户的 "email" 地址,但是如果您添加上面的代码并且 decode the token 它会生成, 那会显示出来的。
我有一个设置,其中我有一个应用程序引擎 REST 应用程序和一个 Google composer / airflow DAG,它有一个任务,它应该从应用程序的一个端点获取数据。该应用程序受 IAP 保护。我已将运行 Airflow 的服务帐户添加到 "IAP-secured Web App User" 列表中,但是每次执行该步骤时,对 http 调用的响应都是 Google 登录页面。知道是否需要任何额外步骤吗?
我的 DAG 步骤的代码:
def get_data():
r = requests.get(url="url-to-my-app-endpoint>")
print('stuff:')
print(r.status_code)
print(r.content)
return 1
# ...
python_fetch_data = PythonOperator(
task_id='python_fetch_data',
python_callable=get_data,
dag=dag,
depends_on_past=True,
priority_weight=2
)
https://cloud.google.com/iap/docs/authentication-howto#authenticating_from_a_service_account 解释了如何扩展您的 DAG 代码,以便它向 IAP-protected API 后端发送凭据。
一些背景知识:由于 Composer 构建于 GCP 之上,您的 Composer 部署具有独特的 service account 身份,即 运行 作为。您可以将该服务帐户添加到端点的 IAP 访问列表中。
我不知道 Composer UI 是否可以轻松查看您的服务帐户的 "email" 地址,但是如果您添加上面的代码并且 decode the token 它会生成, 那会显示出来的。