データソースのアクセス制御を設定する

このページでは、Vertex AI Search で検索アプリのデータソースのアクセス制御を適用する方法について説明します。

Vertex AI Search では、データソースへのアクセス制御を行うことによって、ユーザーが検索アプリの結果で見ることができるデータを制限しています。Google は ID プロバイダを使って、検索を実行しているエンドユーザーを特定し、結果として返されるドキュメントへのアクセス権があるかどうかを判断します。

たとえば、社員が検索アプリを使って Confluence ドキュメントを検索したとしましょう。この場合、検索を実行したユーザーによるアクセスを許可されていないコンテンツがアプリを通じて表示されないようにする必要があります。組織の ID プロバイダ用に Google Cloud で Workforce プールを設定している場合は、Vertex AI Search でその Workforce プールを指定することもできます。そうすれば、社員がアプリから検索したときに、Confluence でその社員のアカウントからアクセス可能なドキュメントのみが検索結果に表示されるようになります。

データソースのアクセス制御について

アクセス制御を有効にするのは 1 回限りの手順です。

アクセス制御は、Cloud Storage、BigQuery、Google ドライブ、およびすべてのサードパーティ データソースで使用できます。

Vertex AI Search のデータソース アクセス制御を有効にするには、組織の ID プロバイダが Google Cloudで構成されている必要があります。次の認証フレームワークがサポートされています。

  • Google Identity:

    • ケース 1: Google Identity を使用している場合、すべてのユーザー ID とユーザー グループが存在し、 Google Cloudを通じて管理されます。Google Identity の詳細については、Google Identity のドキュメントをご覧ください。

    • ケース 2: サードパーティの ID プロバイダを使用しており、ID を Google Identity と同期しています。エンドユーザーは、Google リソースまたは Google Workspace にアクセスする前に、Google Identity を使用して認証を行います。

    • ケース 3: サードパーティの ID プロバイダを使用しており、ID を Google Identity と同期しています。ただし、認証の実行には既存のサードパーティ ID プロバイダを使用しています。ユーザーが Google Identity を使用してログインを開始し、サードパーティ製 ID プロバイダにリダイレクトされるように、Google Identity で SSO を構成しています。(他の Google Cloud リソースまたは Google Workspace の設定時に、この同期をすでに完了している可能性があります)。

  • サードパーティ ID プロバイダの連携: Microsoft Entra ID、Okta、Ping などの外部 ID プロバイダを使用しているが、ID を Google Cloud Identity に同期したくない場合は、Vertex AI Search のデータソース アクセス制御を有効にする前に、 Google Cloudで Workforce Identity 連携を設定する必要があります。

    サードパーティ コネクタを使用する場合は、google.subject 属性を外部 ID プロバイダのメールアドレス フィールドにマッピングする必要があります。次に、よく使用される ID プロバイダの google.subject 属性と google.groups 属性のマッピングの例を示します。

制限事項

アクセス制御には次の制限があります。

  • ドキュメントごとに許可される閲覧者は 3,000 人です。各プリンシパルは閲覧者としてカウントされます。プリンシパルはグループ ユーザーまたは個々のユーザーです。
  • Vertex AI Search でサポートされているロケーションごとに、ID プロバイダを 1 つ選択できます。
  • データソースをアクセス制御対象として設定するには、データストアの作成時にこの設定を選択する必要があります。既存のデータストアでこの設定をオンまたはオフにすることはできません。
  • コンソールの [データ] > [ドキュメント] タブには、アクセス制御付きデータソースのデータは表示されません。このデータは、表示アクセス権を持つユーザーにのみ表示される必要があるためです。
  • サードパーティのアクセス制御を使用する検索アプリの UI 結果をプレビューするには、連携コンソールにログインする必要があります。アクセス制御付きアプリの結果をプレビューするをご覧ください。

始める前に

この手順では、Google Cloud プロジェクトに ID プロバイダを設定していることを前提としています。

  • Google Identity: Google Identity を使用している場合は、ID プロバイダに接続するの手順に進みます。
  • サードパーティ ID プロバイダ: サードパーティ ID プロバイダ用に Workforce Identity プールを設定していることを確認します。Workforce プールを設定するときに、サブジェクトとグループの属性マッピングを指定していることを確認してください。属性マッピングについては、IAM ドキュメントの属性マッピングをご覧ください。Workforce Identity プールの詳細については、IAM ドキュメントの Workforce Identity プール プロバイダを管理するをご覧ください。

ID プロバイダに接続する

Vertex AI Search の ID プロバイダを指定してデータソースのアクセス制御を有効にする手順は次のとおりです。

  1. Google Cloud コンソールで、[AI Applications] ページに移動します。

    AI Applications

  2. [設定] > [認証] ページに移動します。

  3. 更新する拠点の編集アイコン をクリックします。

  4. [ID プロバイダを追加] ダイアログで、ID プロバイダを選択します。サードパーティの ID プロバイダを選択した場合は、データソースに適用する Workforce プールも選択します。

  5. [変更を保存] をクリックします。

アクセス制御を使用してデータソースを構成する

データソースにアクセス制御を適用するには、設定するデータソースの種類に応じて次の手順を行います。

Cloud Storage の非構造化データ

Cloud Storage の非構造化データ用のデータストアを設定する場合は、ACL メタデータをアップロードし、データストアをアクセス制御付きとして設定する必要があります。

  1. データを準備する際は、acl_info フィールドを使用して、メタデータに ACL 情報を含めます。例:

    {
       "id": "<your-id>",
       "jsonData": "<JSON string>",
       "content": {
         "mimeType": "<application/pdf or text/html>",
         "uri": "gs://<your-gcs-bucket>/directory/filename.pdf"
       },
       "acl_info": {
         "readers": [
           {
             "principals": [
               { "group_id": "group_1" },
               { "user_id": "user_1" }
             ]
           }
         ]
       }
     }
    

    メタデータを含む非構造化データの詳細については、取り込むデータを準備するの非構造化データのセクションをご覧ください。

  2. 検索データストアを作成するで説明されているデータストアの作成手順を行う際に、コンソールまたは API を使用して次の操作を行うと、アクセス制御を有効にできます。

    • コンソール: データストアを作成するときに、データストアの作成時に [このデータストアはアクセス制御情報を含む] を選択します。
    • API: データストアの作成時に、JSON ペイロードに "aclEnabled": "true" フラグを含めます。
  3. 検索データストアを作成するで説明されているデータ インポートの手順を行う際に、次の操作を行います。

    • 非構造化データと同じバケットから ACL 情報を含むメタデータをアップロードする
    • API を使用している場合は、GcsSource.dataSchemadocument に設定する

Cloud Storage の構造化データ

Cloud Storage の構造化データ用のデータストアを設定する場合は、ACL メタデータをアップロードし、データストアをアクセス制御付きとして設定する必要があります。

  1. データを準備する際は、acl_info フィールドを使用して、メタデータに ACL 情報を含めます。例:

    {
       "id": "<your-id>",
       "jsonData": "<JSON string>",
       "acl_info": {
         "readers": [
           {
             "principals": [
               { "group_id": "group_1" },
               { "user_id": "user_1" }
             ]
           }
         ]
       }
     }
    
  2. 検索データストアを作成するで説明されているデータストアの作成手順を行う際に、コンソールまたは API を使用して次の操作を行うと、アクセス制御を有効にできます。

    • コンソール: データストアを作成するときに、データストアの作成時に [このデータストアはアクセス制御情報を含む] を選択します。
    • API: データストアの作成時に、JSON ペイロードに "aclEnabled": "true" フラグを含めます。
  3. 検索データストアを作成するで説明されているデータ インポートの手順を行う際に、次の操作を行います。

    • 非構造化データと同じバケットから ACL 情報を含むメタデータをアップロードする
    • API を使用している場合は、GcsSource.dataSchemadocument に設定する

BigQuery の非構造化データ

BigQuery の非構造化データ用のデータストアを設定する場合は、データストアをアクセス制御付きとして設定し、Vertex AI Search 用に事前定義されたスキーマを使用して ACL メタデータを指定する必要があります。

  1. データを準備するときに、次のスキーマを指定します。カスタム スキーマは使用しないでください。

    [
      {
        "name": "id",
        "mode": "REQUIRED",
        "type": "STRING",
        "fields": []
      },
      {
        "name": "jsonData",
        "mode": "NULLABLE",
        "type": "STRING",
        "fields": []
      },
      {
        "name": "content",
        "type": "RECORD",
        "mode": "NULLABLE",
        "fields": [
          {
            "name": "mimeType",
            "type": "STRING",
            "mode": "NULLABLE"
          },
          {
            "name": "uri",
            "type": "STRING",
            "mode": "NULLABLE"
          }
        ]
      }
      {
        "name": "acl_info",
        "type": "RECORD",
        "mode": "NULLABLE",
        "fields": [
          {
            "name": "readers",
            "type": "RECORD",
            "mode": "REPEATED",
            "fields": [
              {
                "name": "principals",
                "type": "RECORD",
                "mode": "REPEATED",
                "fields": [
                  {
                    "name": "user_id",
                    "type": "STRING",
                    "mode": "NULLABLE"
                  },
                  {
                    "name": "group_id",
                    "type": "STRING",
                    "mode": "NULLABLE"
                  }
                ]
              }
            ]
          }
        ]
      }
    ]
    
  2. ACL メタデータを BigQuery テーブルの列として含めます。

  3. 検索データストアを作成するの手順を行う際に、コンソールまたは API を使用してアクセス制御を有効にします。

    • コンソール: データストアを作成するときに、データストアの作成時に [このデータストアはアクセス制御情報を含む] を選択します。
    • API: データストアの作成時に、JSON ペイロードに "aclEnabled": "true" フラグを含めます。
  4. 検索データストアを作成するで説明されているデータ インポートの手順を行う際に、API を使用する場合は、BigQuerySource.dataSchemadocument に設定します。

BigQuery の構造化データ

BigQuery の構造化データ用のデータストアを設定する場合は、データストアをアクセス制御付きとして設定し、Vertex AI Search 用に事前定義されたスキーマを使用して ACL メタデータを指定する必要があります。

  1. データを準備するときに、次のスキーマを指定します。カスタム スキーマは使用しないでください。

    [
      {
        "name": "id",
        "mode": "REQUIRED",
        "type": "STRING",
        "fields": []
      },
      {
        "name": "jsonData",
        "mode": "NULLABLE",
        "type": "STRING",
        "fields": []
      },
      {
        "name": "acl_info",
        "type": "RECORD",
        "mode": "NULLABLE",
        "fields": [
          {
            "name": "readers",
            "type": "RECORD",
            "mode": "REPEATED",
            "fields": [
              {
                "name": "principals",
                "type": "RECORD",
                "mode": "REPEATED",
                "fields": [
                  {
                    "name": "user_id",
                    "type": "STRING",
                    "mode": "NULLABLE"
                  },
                  {
                    "name": "group_id",
                    "type": "STRING",
                    "mode": "NULLABLE"
                  }
                ]
              }
            ]
          }
        ]
      }
    ]
    
  2. ACL メタデータを BigQuery テーブルの列として含めます。

  3. 検索データストアを作成するの手順を行う際に、コンソールまたは API を使用してアクセス制御を有効にします。

    • コンソール: データストアを作成するときに、データストアの作成時に [このデータストアはアクセス制御情報を含む] を選択します。
    • API: データストアの作成時に、JSON ペイロードに "aclEnabled": "true" フラグを含めます。
  4. 検索データストアを作成するで説明されているデータ インポートの手順を行う際に、次の操作を行います。

    • コンソールを使用している場合は、アップロードするデータの種類を指定するときに、[メタデータを含む構造化データの JSONL] を選択する
    • API を使用している場合は、BigQuerySource.dataSchemadocument に設定する

Workforce Identity 連携コンソールでプレビュー結果を確認する

Google Cloud コンソールでサードパーティのアクセス制御が設定されたアプリの結果をプレビューするには、組織の認証情報でログインする必要があります。

UI の結果をプレビューする手順は次のとおりです。

  1. Google Cloud コンソールで、[AI Applications] ページに移動します。

    AI Applications

  2. 結果をプレビューする検索アプリの名前をクリックします。

  3. [プレビュー] ページに移動します

  4. [連携 ID でプレビュー] をクリックして、Workforce Identity 連携コンソールに移動します。

  5. Workforce プール プロバイダと組織の認証情報を入力します。

  6. 表示された [プレビュー] ページで、アプリの結果をプレビューします。

    検索結果のプレビューについて詳しくは、検索結果を取得するをご覧ください。

Workforce Identity 連携コンソールの詳細については、コンソール(連携)についてをご覧ください。

ユーザーに検索権限を付与する

ユーザーがアプリを使用してアクセス制御付きのデータを検索できるようにするには、ドメインまたは Workforce プール内のユーザーにアクセス権を付与する必要があります。ユーザー グループにカスタム IAM ロールを付与することをおすすめします。

  • Google Identity: Google Identity を使用している場合は、検索が必要なすべての社員を含む Google グループを作成することをおすすめします。Google Workspace 管理者の場合は、組織のすべてのユーザーをグループに追加するの手順に沿って、組織内のすべてのユーザーを Google グループに含めることができます。
  • サードパーティの ID プロバイダ: 外部 ID プロバイダ(Okta や Microsoft Entra ID など)を使用する場合は、Workforce Identity プール内のすべてのユーザーを 1 つのグループに追加します。

次の権限を使用して、ユーザー グループに付与するカスタム IAM ロールを作成することをおすすめします。

  • discoveryengine.answers.get
  • discoveryengine.servingConfigs.answer
  • discoveryengine.servingConfigs.search
  • discoveryengine.sessions.get
  • discoveryengine.widgetConfigs.get

Identity and Access Management(IAM)を使用した Vertex AI Search リソースの権限の詳細については、IAM を使用したアクセス制御をご覧ください。

カスタムロールの詳細については、IAM ドキュメントのカスタムロールをご覧ください。

検索ウィジェットを承認する

アクセス制御されたアプリの検索ウィジェットをデプロイする場合は、次の手順を行います。

  1. 検索 API 呼び出しを行う必要があるドメインまたは Workforce プールのユーザーに Discovery Engine 閲覧者のロールを付与します。

  2. ウィジェットに渡す認証トークンを生成します。

  3. 認証トークンを含むウィジェットを追加するの手順に沿って、トークンをウィジェットに渡します。

次のステップ

検索結果を取得する