Vertex AI LLM を呼び出す生成 AI 関数の権限を設定する

このドキュメントでは、生成 AI クエリを実行するための権限を設定する方法について説明します。生成 AI クエリには、Vertex AI の基盤モデルを呼び出す AI.* 関数(AI.GENERATE など)が含まれています。

AI.* 関数を使用するクエリを実行する権限を設定するには、次の 2 つの方法があります。

  • エンドユーザーの認証情報を使用してクエリを実行する
  • サービス アカウントを使用してクエリを実行する 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. [新しいプリンシパル] フィールドに、プリンシパル ID(例: my-user@example.com//iam.googleapis.com/locations/global/workforcePools/example-pool/group/example-group@example.com)を入力します。

    4. [ロールを割り当てる] セクションの [ロールを選択] で、プルダウン矢印をクリックします。

    5. [Vertex AI ユーザー] ロールを検索して選択します。

    6. [別のロールを追加] をクリックします。

    7. [ロールを割り当てる] セクションの [ロールを選択] で、プルダウン矢印をクリックします。

    8. [BigQuery ジョブユーザー] ロールを検索または参照して選択します。

    9. [保存] をクリックします。

      [保存] をクリックして、プリンシパルにロールを付与します。

プロジェクトに対するロールをすでに持っているプリンシパルのロールを変更するには、同じプリンシパルに追加のロールを付与するをご覧ください。

プリンシパルにプロジェクト レベルのロールを付与する他の方法については、複数の IAM ロールをプログラムで付与または取り消すをご覧ください。

BigQuery Connection を使用して生成 AI クエリを実行する

接続を使用して生成 AI クエリを実行するには、接続を作成し、接続によって作成されたサービス アカウントにアクセス権を付与します。

接続を作成する

AI.* 関数を含むすべての生成 AI クエリを実行するように Cloud リソース接続を設定できます。接続を作成するときに、クエリを実行する権限をサービス アカウントに付与します。

次のオプションのいずれかを選択します。

コンソール

  1. [BigQuery] ページに移動します。

    BigQuery に移動

  2. 左側のペインで、 [エクスプローラ] をクリックします。

    ハイライト表示されたエクスプローラ ペインのボタン。

    左側のペインが表示されていない場合は、 左ペインを開くをクリックしてペインを開きます。

  3. [エクスプローラ] ペインで、プロジェクト名を開き、[接続] をクリックします。

  4. [接続] ページで、[接続を作成] をクリックします。

  5. [接続タイプ] で、[Vertex AI リモートモデル、リモート関数、BigLake、Spanner(Cloud リソース)] を選択します。

  6. [接続 ID] フィールドに接続の名前を入力します。

  7. [ロケーション タイプ] で、接続のロケーションを選択します。接続は、データセットなどの他のリソースと同じ場所に配置する必要があります。

  8. [接続を作成] をクリックします。

  9. [接続へ移動] をクリックします。

  10. [接続情報] ペインで、後の手順で使用するサービス アカウント ID をコピーします。

bq

  1. コマンドライン環境で接続を作成します。

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

    --project_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 プロジェクトを設定します。

    このコマンドは、プロジェクトごとに 1 回だけ実行する必要があります。これは任意のディレクトリで実行できます。

    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 を初期化します。これは、ディレクトリごとに 1 回だけ行います。
    terraform init

    最新バージョンの Google プロバイダを使用する場合は、-upgrade オプションを使用します。

    terraform init -upgrade

変更を適用する

  1. 構成を確認して、Terraform が作成または更新するリソースが想定どおりであることを確認します。
    terraform plan

    必要に応じて構成を修正します。

  2. 次のコマンドを実行します。プロンプトで「yes」と入力して、Terraform 構成を適用します。
    terraform apply

    Terraform に「Apply complete!」というメッセージが表示されるまで待ちます。

  3. Google Cloud プロジェクトを開いて結果を表示します。 Google Cloud コンソールの UI でリソースに移動して、Terraform によって作成または更新されたことを確認します。

詳細については、Cloud リソース接続を作成して設定するをご覧ください。

サービス アカウントへのアクセスを許可する

Vertex AI モデルを呼び出す生成 AI.* 関数を使用するクエリを実行するには、接続の作成時に作成されたサービス アカウントに適切な権限を付与する必要があります。Vertex AI 基盤モデルを呼び出す関数を実行するには、Vertex AI ユーザーロールroles/aiplatform.user)が必要です。

次のオプションのいずれかを選択します。

コンソール

  1. [IAM と管理] ページに移動します。

    [IAM と管理] に移動

  2. [アクセスを許可] をクリックします。

    [プリンシパルを追加] ダイアログが開きます。

  3. [新しいプリンシパル] フィールドに、前の手順でコピーしたサービス アカウント ID を入力します。

  4. [ロールを割り当てる] セクションで、[ロールを追加] をクリックします。

  5. [Vertex AI ユーザー] ロールを検索して選択し、[適用] をクリックします。

  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_ID | jq -r .cloudResource.serviceAccountId)"
--role=roles/aiplatform.user

次のように置き換えます。

  • PROJECT_ID: プロジェクトの名前。
  • REGION: 接続が作成されたロケーション。
  • CONNECTION_ID: 作成した接続の名前。

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 プロジェクトを設定します。

    このコマンドは、プロジェクトごとに 1 回だけ実行する必要があります。これは任意のディレクトリで実行できます。

    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 を初期化します。これは、ディレクトリごとに 1 回だけ行います。
    terraform init

    最新バージョンの Google プロバイダを使用する場合は、-upgrade オプションを使用します。

    terraform init -upgrade

変更を適用する

  1. 構成を確認して、Terraform が作成または更新するリソースが想定どおりであることを確認します。
    terraform plan

    必要に応じて構成を修正します。

  2. 次のコマンドを実行します。プロンプトで「yes」と入力して、Terraform 構成を適用します。
    terraform apply

    Terraform に「Apply complete!」というメッセージが表示されるまで待ちます。

  3. Google Cloud プロジェクトを開いて結果を表示します。 Google Cloud コンソールの UI でリソースに移動して、Terraform によって作成または更新されたことを確認します。