配置IAP与自定义域名后,如何用MlflowClient访问Cloud Run上的MLflow服务?
配置MLflow Client访问带IAP认证的Cloud Run MLflow服务器
要让MlflowClient访问启用IAP认证的自定义域名MLflow服务器,核心是处理Google身份认证,将有效凭证传递给MLflow的请求头,具体步骤如下:
1. 安装必要依赖
首先安装Google身份认证相关库,用于获取IAP所需的访问令牌:
pip install google-auth google-auth-oauthlib google-auth-httplib2
2. 编写认证并访问的代码
通过Google Auth库获取有效凭据,生成访问令牌后注入MLflow Client的请求头,实现认证访问:
import google.auth from google.auth.transport.requests import Request import mlflow from mlflow.tracking import MlflowClient # 1. 设置自定义域名的MLflow跟踪地址 mlflow.set_tracking_uri("https://mlflow.test.com") # 2. 获取Google身份凭证(本地环境需先通过`gcloud auth login`登录有权限的账号) credentials, _ = google.auth.default(scopes=["openid", "email", "profile"]) if not credentials.valid: credentials.refresh(Request()) # 3. 生成访问令牌并注入MLflow请求头 token = credentials.token client = MlflowClient() client._tracking_client._tracking_store._http_client.headers.update( {"Authorization": f"Bearer {token}"} ) # 4. 执行MLflow操作示例 experiment_id = client.create_experiment("iap-protected-experiment") run = client.create_run(experiment_id) client.log_param(run.info.run_id, "test_param", 123) print(f"实验创建成功,ID: {experiment_id}") print(f"运行创建成功,ID: {run.info.run_id}")
3. 关键配置验证
- 本地环境凭据:确保已通过
gcloud auth login登录拥有该Cloud Run实例IAP访问权限的谷歌邮箱账号。 - 服务器/生产环境:使用服务账号密钥,设置环境变量
GOOGLE_APPLICATION_CREDENTIALS指向密钥文件,同时将该服务账号添加到Cloud Run实例的IAP授权列表(授予Cloud Run Invoker角色)。 - IAP授权检查:在GCP控制台的Cloud Run实例「安全」标签页中,确认你的账号/服务账号已被添加到IAP授权列表,允许访问该实例。
注意事项
- 自定义域名必须配置有效的SSL证书,IAP和MLflow均要求HTTPS连接。
- 访问令牌会过期,代码中已包含凭据刷新逻辑,确保每次请求使用有效令牌。
- 若遇到权限错误,优先检查IAP授权列表是否正确,以及凭据对应的账号是否具备访问权限。
内容的提问来源于stack exchange,提问作者Thanh Long Phan
相关产品推荐
相关产品推荐

