为调用 Vertex AI LLM 的生成式 AI 函数设置权限

本文档介绍了如何设置运行生成式 AI 查询的权限。生成式 AI 查询包含调用 Vertex AI 中基础模型的 AI.* 函数,例如 AI.GENERATE

您可以通过以下两种方式设置权限,以运行使用 AI.* 函数的查询:

  • 使用最终用户凭证运行查询
  • 创建 BigQuery ML 连接以使用服务账号运行查询

在大多数情况下,您可以使用最终用户凭证,并将 CONNECTION 参数留空。如果您的查询作业预计运行时间为 48 小时或更长,您应使用 BigQuery 连接并将其包含在 CONNECTION 参数中。

使用最终用户凭证运行生成式 AI 查询

如需使用最终用户凭证运行生成式 AI 查询,请使用 Google Cloud 控制台配置必要的权限。请注意,如果您是项目所有者,那么您已经拥有所有必需的权限,因此无需执行任何操作。

所需的角色

如需获得运行调用 Vertex AI 模型的查询作业所需的权限,请让您的管理员为您授予项目的以下 IAM 角色:

如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

您也可以通过自定义角色或其他预定义角色来获取所需的权限。

向用户或群组授予所需的角色

您可以使用 Google Cloud 控制台向主账号授予所需的角色。主账号是指运行使用 AI.* 函数调用 Vertex AI 基础模型的查询的用户或群组。

  1. 在 Google Cloud 控制台中,前往 IAM 页面。

    转到 IAM

  2. 选择您的项目。

  3. 如需向主账号授予角色,请执行以下操作:

    1. 前往 IAM 和管理页面。

      转到“IAM 和管理”

    2. 点击 授予访问权限

      系统随即会打开添加主账号对话框。

    3. 新的主账号字段中,输入主账号标识符,例如 my-user@example.com//iam.googleapis.com/locations/global/workforcePools/example-pool/group/example-group@example.com

    4. 分配角色部分,点击选择角色旁边的下拉箭头。

    5. 搜索 Vertex AI User 角色并将其选中。

    6. 点击添加其他角色

    7. 分配角色部分,点击选择角色旁边的下拉箭头。

    8. 搜索或浏览到 BigQuery Job User 角色并将其选中。

    9. 点击保存

      点击“保存”,向主账号授予角色

如需修改已拥有项目角色的主账号的角色,请参阅向同一主账号授予额外的角色

如需了解向主账号授予项目级层角色的其他方法,请参阅以程序化方式授予或撤销多个 IAM 角色

使用 BigQuery 连接运行生成式 AI 查询

如需使用连接运行生成式 AI 查询,请创建连接,然后向连接创建的服务账号授予访问权限。

创建连接

您可以设置 Cloud 资源连接,以运行包含 AI.* 函数的所有生成式 AI 查询。创建连接时,您需要向服务账号授予运行查询的权限。

从下列选项中选择一项:

控制台

  1. 前往 BigQuery 页面。

    转到 BigQuery

  2. 探索器窗格中,点击 添加数据

    “添加数据”界面元素。

    系统随即会打开添加数据对话框。

  3. 过滤条件窗格中的数据源类型部分,选择企业应用

    或者,在搜索数据源字段中,您可以输入 Vertex AI

  4. 精选数据源部分中,点击 Vertex AI

  5. 点击 Vertex AI 模型:BigQuery 联合解决方案卡片。

  6. 连接类型列表中,选择 Vertex AI 远程模型、远程函数、BigLake 和 Spanner(Cloud 资源)

  7. 连接 ID 字段中,输入连接的名称。

  8. 点击创建连接

  9. 点击转到连接

  10. 连接信息窗格中,复制服务账号 ID 以在后续步骤中使用。

bq

  1. 在命令行环境中,创建连接:

    bq mk --connection --location=REGION --project_id=PROJECT_ID \
        --connection_type=CLOUD_RESOURCE CONNECTION_ID

    --project_id 参数会替换默认项目。

    请替换以下内容:

    • REGION:您的连接区域
    • PROJECT_ID:您的 Google Cloud 项目 ID
    • CONNECTION_ID:您的连接的 ID

    当您创建连接资源时,BigQuery 会创建一个唯一的系统服务账号,并将其与该连接相关联。

    问题排查:如果您收到以下连接错误,请更新 Google Cloud SDK

    Flags parsing error: flag --connection_type=CLOUD_RESOURCE: value should be one of...
    
  2. 检索并复制服务账号 ID 以在后续步骤中使用:

    bq show --connection PROJECT_ID.REGION.CONNECTION_ID

    输出类似于以下内容:

    name                          properties
    1234.REGION.CONNECTION_ID     {"serviceAccountId": "connection-1234-9u56h9@gcp-sa-bigquery-condel.iam.gserviceaccount.com"}
    

Terraform

使用 google_bigquery_connection 资源。

如需向 BigQuery 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为客户端库设置身份验证

以下示例在 US 区域中创建一个名为 my_cloud_resource_connection 的 Cloud 资源连接:


# This queries the provider for project information.
data "google_project" "default" {}

# This creates a cloud resource connection in the US region named my_cloud_resource_connection.
# Note: The cloud resource nested object has only one output field - serviceAccountId.
resource "google_bigquery_connection" "default" {
  connection_id = "my_cloud_resource_connection"
  project       = data.google_project.default.project_id
  location      = "US"
  cloud_resource {}
}

如需在 Google Cloud 项目中应用 Terraform 配置,请完成以下部分中的步骤。

准备 Cloud Shell

  1. 启动 Cloud Shell
  2. 设置要应用 Terraform 配置的默认 Google Cloud 项目。

    您只需为每个项目运行一次以下命令,即可在任何目录中运行它。

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    如果您在 Terraform 配置文件中设置显式值,则环境变量会被替换。

准备目录

每个 Terraform 配置文件都必须有自己的目录(也称为“根模块”)。

  1. Cloud Shell 中,创建一个目录,并在该目录中创建一个新文件。文件名必须具有 .tf 扩展名,例如 main.tf。在本教程中,该文件称为 main.tf
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. 如果您按照教程进行操作,可以在每个部分或步骤中复制示例代码。

    将示例代码复制到新创建的 main.tf 中。

    (可选)从 GitHub 中复制代码。如果端到端解决方案包含 Terraform 代码段,则建议这样做。

  3. 查看和修改要应用到您的环境的示例参数。
  4. 保存更改。
  5. 初始化 Terraform。您只需为每个目录执行一次此操作。
    terraform init

    (可选)如需使用最新的 Google 提供程序版本,请添加 -upgrade 选项:

    terraform init -upgrade

应用更改

  1. 查看配置并验证 Terraform 将创建或更新的资源是否符合您的预期:
    terraform plan

    根据需要更正配置。

  2. 通过运行以下命令并在提示符处输入 yes 来应用 Terraform 配置:
    terraform apply

    等待 Terraform 显示“应用完成!”消息。

  3. 打开您的 Google Cloud 项目以查看结果。在 Google Cloud 控制台的界面中找到资源,以确保 Terraform 已创建或更新它们。

如需了解详情,请参阅创建和设置 Cloud 资源连接

向服务账号授予访问权限

如需运行使用调用 Vertex AI 模型的生成式 AI.* 函数的查询,您必须向创建连接时创建的服务账号授予适当的权限。如需运行调用 Vertex AI 基础模型的函数,必须拥有 Vertex AI User 角色 (roles/aiplatform.user)。

从下列选项中选择一项:

控制台

  1. 前往 IAM 和管理页面。

    转到“IAM 和管理”

  2. 点击 授予访问权限

    系统随即会打开添加主账号对话框。

  3. 新的主账号字段中,输入您之前复制的服务账号 ID。

  4. 分配角色部分,点击添加角色

  5. 搜索 Vertex AI User 角色,选择该角色,然后点击应用

  6. 点击保存

gcloud

使用 gcloud projects add-iam-policy-binding 命令

gcloud projects add-iam-policy-binding gs://PROJECT_ID \
--member="serviceAccount:$(bq show --format=prettyjson --connection $PROJECT_ID.$REGION.$CONNECTION_NAME | jq -r .cloudResource.serviceAccountId)"
--role=roles/aiplatform.user

替换以下内容:

  • PROJECT_ID:您的项目的名称。
  • REGION:在其中创建连接的位置。
  • CONNECTION_NAME:您创建的连接的名称。

Terraform

使用 google_bigquery_connection 资源。

如需向 BigQuery 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为客户端库设置身份验证

以下示例向 Cloud 资源连接的服务账号授予 IAM 角色访问权限:


# This queries the provider for project information.
data "google_project" "default" {}

# This creates a cloud resource connection in the US region named my_cloud_resource_connection.
# Note: The cloud resource nested object has only one output field - serviceAccountId.
resource "google_bigquery_connection" "default" {
  connection_id = "my_cloud_resource_connection"
  project       = data.google_project.default.project_id
  location      = "US"
  cloud_resource {}
}

## This grants IAM role access to the service account of the connection created in the previous step.
resource "google_project_iam_member" "connectionPermissionGrant" {
  project = data.google_project.default.project_id
  role    = "roles/storage.objectViewer"
  member  = "serviceAccount:${google_bigquery_connection.default.cloud_resource[0].service_account_id}"
}

如需在 Google Cloud 项目中应用 Terraform 配置,请完成以下部分中的步骤。

准备 Cloud Shell

  1. 启动 Cloud Shell
  2. 设置要应用 Terraform 配置的默认 Google Cloud 项目。

    您只需为每个项目运行一次以下命令,即可在任何目录中运行它。

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    如果您在 Terraform 配置文件中设置显式值,则环境变量会被替换。

准备目录

每个 Terraform 配置文件都必须有自己的目录(也称为“根模块”)。

  1. Cloud Shell 中,创建一个目录,并在该目录中创建一个新文件。文件名必须具有 .tf 扩展名,例如 main.tf。在本教程中,该文件称为 main.tf
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. 如果您按照教程进行操作,可以在每个部分或步骤中复制示例代码。

    将示例代码复制到新创建的 main.tf 中。

    (可选)从 GitHub 中复制代码。如果端到端解决方案包含 Terraform 代码段,则建议这样做。

  3. 查看和修改要应用到您的环境的示例参数。
  4. 保存更改。
  5. 初始化 Terraform。您只需为每个目录执行一次此操作。
    terraform init

    (可选)如需使用最新的 Google 提供程序版本,请添加 -upgrade 选项:

    terraform init -upgrade

应用更改

  1. 查看配置并验证 Terraform 将创建或更新的资源是否符合您的预期:
    terraform plan

    根据需要更正配置。

  2. 通过运行以下命令并在提示符处输入 yes 来应用 Terraform 配置:
    terraform apply

    等待 Terraform 显示“应用完成!”消息。

  3. 打开您的 Google Cloud 项目以查看结果。在 Google Cloud 控制台的界面中找到资源,以确保 Terraform 已创建或更新它们。