使用自定义服务账号

您可以将 AI Platform Prediction 配置为在它运行自定义代码提供预测服务时使用您选择的服务账号。具体而言,当执行以下某项操作时,您可以指定自定义服务账号:

通过使用自定义服务账号,您可以自定义您的自定义服务代码可以访问的 Google Cloud 资源,而无需向 AI Platform Prediction 默认使用的服务账号授予范围太广的权限。

本指南重点介绍 AI Platform Prediction 资源对其他 Google Cloud 资源的访问权限。如需了解访问 AI Platform Prediction 资源本身所需的权限,请参阅访问权限控制

了解服务代理

默认情况下,AI Platform Prediction 使用服务代理,通过不使用自定义容器的模型版本提供在线预测。此服务代理由具有以下格式的电子邮件地址标识:

service-PROJECT_NUMBER@cloud-ml.google.com.iam.gserviceaccount.com

PROJECT_NUMBER 被替换为您的 Google Cloud 项目的项目编号

通过 Google Cloud 控制台或使用 Google Cloud CLI 查找项目的相应服务账号:

Google Cloud 控制台

前往 Google Cloud 控制台中的 IAM 页面,选择包括 Google 提供的角色授权,然后找到与本部分前面所述的电子邮件地址格式匹配的主账号。该服务账号的名称也将为 Google Cloud ML Engine Service Agent

转到 IAM 页面

gcloud

在已初始化 gcloud CLI 的 Shell 环境中运行以下命令:

gcloud projects get-iam-policy PROJECT_ID \
  --flatten="bindings[].members" \
  --format="table(bindings.members)" \
  --filter="bindings.role:roles/ml.serviceAgent" \
  | grep serviceAccount:

PROJECT_ID 替换为您的 Google Cloud 项目的 ID。

此命令输出以下内容:

serviceAccount:GOOGLE_MANAGED_SERVICE_ACCOUNT

GOOGLE_MANAGED_SERVICE_ACCOUNT 是您项目的 AI Platform 服务代理的电子邮件地址。

此服务代理拥有适用于大多数模型版本的权限。例如,它可以从同一 Google Cloud 项目中的 Cloud Storage 存储分区读取数据。

如果运行自定义预测例程需要额外的权限,您可以向此服务账号分配其他 Identity and Access Management (IAM) 角色。例如,您可以向它授予访问其他 Google Cloud 项目中的 Cloud Storage 存储分区的权限

自定义容器中默认使用的服务账号

如果您的模型版本使用自定义容器,则该容器默认不会使用 AI Platform 服务代理运行,而是使用由 AI Platform Prediction 管理的服务账号运行。对于 AI Platform Prediction 在存储于 AIP_STORAGE_URI 环境变量的 URI 中提供的模型工件,此服务账号有权读取模型工件

您无法自定义此自定义容器中默认使用的此服务账号的权限。如果要自定义您的自定义容器可用的权限,请参阅以下部分,以将自定义服务账号用于您的模型版本。

使用自定义服务账号

如果您想要授予或限制特定模型版本的 Google Cloud 权限,请使用自定义服务账号来代替服务代理。

为此,请先设置自定义服务账号。然后,在创建模型版本时指定自定义服务账号。

设置自定义服务账号

如需设置自定义服务账号,请执行以下操作:

  1. 创建用户管理的服务账号。

  2. 向您的新服务账号授予 IAM 角色,以便为预测服务代码提供其运行所需的任何权限。

  3. 如果用户管理的服务账号与模型版本属于不同的项目,请配置用户管理的服务账号,以便将其与模型版本关联。

  1. 为您项目的 AI Platform Service Agent 授予您的新自定义服务账号的 Service Account Admin 角色 (roles/iam.serviceAccountAdmin)。为此,请使用 gcloud CLI 运行以下命令:

    gcloud iam service-accounts add-iam-policy-binding \
      --role=roles/iam.serviceAccountAdmin \
      --member=serviceAccount:GOOGLE_MANAGED_SERVICE_ACCOUNT \
      CUSTOM_SERVICE_ACCOUNT
    

    在此命令中,替换以下占位符:

    • GOOGLE_MANAGED_SERVICE_ACCOUNT:您项目的 Google Cloud ML Engine Service Agent 的电子邮件地址。如需了解如何查找此电子邮件地址,请参阅本指南的上一部分

    • CUSTOM_SERVICE_ACCOUNT:您在本部分的上一步中新创建的用户管理的服务账号的电子邮件地址。

为您的模型版本指定自定义服务账号

如需向预测服务代码授予自定义服务账号的访问权限,请在创建模型版本时指定 serviceAccount 字段。回想一下,模型版本必须使用自定义容器自定义预测例程

如果您使用 gcloud CLI 创建模型版本,则可以将 --service-account 标志与 gcloud beta 组件结合使用。例如:

gcloud beta ai-platform versions create VERSION \
  --service-account CUSTOM_SERVICE_ACCOUNT \
  ...

请替换以下内容:

后续步骤