访问Cloud Composer的Airflow Rest API返回HTTP 401错误如何解决
Cloud Composer 1.x Airflow 2.0 API 401错误解决方案
问题根因
该401错误是Cloud Composer 1.x搭配Airflow 2.0版本的已知特性导致:Airflow的RBAC用户自动同步机制仅对第一个访问API/Web UI的身份生效,后续新增的服务账号首次调用API时不会自动写入Airflow的users表,因此即使GCP层面权限配置正确,Airflow侧的身份校验也会失败返回401。
无需设置密码的Airflow服务账号创建方案
方案1:使用gcloud调用Composer内置Airflow CLI创建(推荐)
直接运行以下gcloud命令即可完成用户创建,不需要手动设置密码,也不需要绕过IAP:
gcloud composer environments run <Composer环境名称> \ --location <环境所属GCP区域> \ users create -- \ --username <服务账号完整邮箱> \ --firstname Service \ --lastname Account \ --role <Airflow角色,如Admin/Viewer> \ --email <服务账号完整邮箱> \ --use-random-password
命令中--use-random-password参数会自动生成随机密码,服务账号调用API时走IAP鉴权不需要使用该密码,完全满足无密码配置需求。
方案2:通过DAG批量创建服务账号
如果需要批量添加多个服务账号,可编写专用DAG,在DAG代码中调用Airflow的ORM模型直接写入users表,统一为所有服务账号生成随机密码即可,无需额外配置密码逻辑。
权限补充说明
之前额外配置的roles/iap.httpsResourceAccessor权限为必须项,Cloud Composer 1的Airflow API/Web UI默认全部经过IAP代理,旧版官方文档未提及该权限属于文档更新滞后,新版官方文档已经补充该权限的配置要求。
内容的提问来源于stack exchange,提问作者Seng Cheong
相关产品推荐
相关产品推荐

