3

我有一个设置,我有一个应用程序引擎 REST 应用程序和一个 Google 作曲家/气流 DAG,它的任务应该是从应用程序的一个端点获取数据。该应用程序受 IAP 保护。我已将运行 Airflow 的服务帐户添加到“受 IAP 保护的 Web 应用程序用户”列表中,但是每次该步骤执行对 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
)
4

1 回答 1

3

https://cloud.google.com/iap/docs/authentication-howto#authenticating_from_a_service_account解释了如何扩展您的 DAG 代码,以便将凭据发送到受 IAP 保护的 API 后端。

一点背景知识:由于 Composer 是在 GCP 之上构建的,因此您的 Composer 部署具有运行时所用的唯一服务帐户身份。您可以将该服务帐户添加到终端节点的 IAP 访问列表中。

我不知道 Composer UI 是否可以轻松查看您的服务帐户的“电子邮件”地址,但如果您添加上面的代码并解码它生成的令牌,就会显示出来。

于 2019-07-11T18:08:57.653 回答