アプリとデータストアのきめ細かいアクセス制御を構成する

このページでは、Gemini Enterprise 管理者がGoogle Cloud コンソール、Google Cloud CLI、または REST API を使用して、特定のリソースレベルの IAM 権限を構成し、特定の Gemini Enterprise アプリとデータストアへのアクセスを制限する方法について説明します。

データストアの権限やカスタム プロジェクト レベルのロールを構成せずに、アプリレベルでエンドユーザーのアクセスを制限するだけでよい場合は、アプリのアクセス制御を構成するをご覧ください。

概要

デフォルトでは、 Google Cloudプロジェクト レベルで付与された IAM 権限は、プロジェクト内のすべての Gemini Enterprise アプリとデータストアに適用されます。組織でユーザーを単一プロジェクト内の特定のアプリまたはデータストアに制限する必要がある場合は、リソースレベルのアクセス制御を使用できます。

リソースレベルのアクセス制御を使用すると、管理者は次のことができます。

  • 同じプロジェクト内の他のアプリを公開することなく、特定のアプリとリンクされたデータストアへのアクセス権をユーザーに付与します。
  • プロジェクト全体の広範な管理権限を付与することなく、特定のアプリのアプリ管理または読み取り専用モニタリングを委任します。
  • 組織のデータ境界とコンプライアンス ポリシーを適用します。

アクセス制御の仕組み

リソースレベルのアクセス権を付与するには、管理者はターゲット ユーザーまたはグループごとに 2 つのロール バインディングを構成する必要があります。権限は個別に評価されます。アプリのデータストアから回答を受け取るには、ユーザーにターゲット アプリとターゲット データストアの両方に対する権限が付与されている必要があります。

ロール バインディング レベル ロールタイプ 目的、スコープ、ロールの例
プロジェクト レベル カスタムロール

このガイドで作成するカスタムロールは、特定のアプリやデータストアのコンテンツを公開することなく、ユーザーがプロジェクト全体でコンソール リスティング ページを認証または読み込むために必要な権限を付与します。

ロールの例:

リソースレベル 事前定義ロール

アプリまたはデータストアのリソースに割り当てる事前定義ロールは、そのリソースに対してのみ、チャット、設定の構成、分析の表示などのオペレーション権限を付与します。

ロールの例:

シナリオの例

Cymbal の cymbal-ai-project という名前の Google Cloud プロジェクトに、2 つのアプリと複数のデータストアが含まれているとします。

シナリオ例: アプリとデータストア全体でアクセスを制限する
コンテキスト Cymbal の cymbal-ai-project という名前の Google Cloud プロジェクトには、
  • Cymbal Finance 金融アプリ。一般的な財務データストアと機密性の高い給与データストアの 2 つのデータストアに接続されています。
  • Cymbal HR データストアに接続されている Cymbal HR アプリ。
目標 Alex(alex@cymbal.com)に Cymbal Finance 金融アプリの使用権限と General Finance データストアのクエリ権限を付与し、Confidential Payroll データストアと Cymbal HR アプリへのアクセスを拒否します。
必要な構成 アクセス制御を構成する手順は次のとおりです。
  1. プロジェクト レベル: cymbal-ai-project でアプリとデータストアのアクセス制御を有効にし、Alex にプロジェクトの customRestrictedEndUser ロールを付与して、ブラウザがサービスで認証できるようにします。
  2. リソースレベル: Alex に Cymbal Finance 金融アプリと General Finance データストアのみに対する Gemini Enterprise ユーザー(roles/discoveryengine.agentspaceUser)ロールを付与します。
結果 Alex がログインすると、Cymbal Finance アプリを開いて、General Finance データストアにクエリを実行できます。Confidential Payroll データストアは同じアプリに接続されていますが、Alex はこのデータストアを表示することもクエリすることもできません。Cymbal HR アプリへのアクセスや Cymbal HR データストアへのクエリも拒否されます。

次の図は、このシナリオでプロジェクト レベルの設定と独立したリソースレベルの IAM 権限がどのように連携するかを示しています。

アプリとデータストア全体で IAM ポリシーをきめ細かく構成する図。

始める前に

  • Gemini Enterprise 管理者(roles/discoveryengine.agentspaceAdmin)ロールがあることを確認します。
  • 制限付きアクセスが必要なユーザーに、プロジェクト レベルのディスカバリー エンジン ロールが割り当てられていないことを確認します。
  • ターゲット ユーザーに必要なカスタム プロジェクト レベルのロールを、カスタム プロジェクト レベルのロールを作成するで作成します。

アプリとデータストアのアクセス制御を有効にする

アプリとデータストアの詳細な権限を構成したり、 Google Cloud コンソールの [ユーザー権限] タブを表示したりする前に、 Google Cloud コンソールまたは REST API を使用して、プロジェクトでアプリとデータストアのアクセス制御を有効にします。

コンソール

Google Cloud コンソールでアプリとデータストアのアクセス制御を有効にする手順は次のとおりです。

  1. Google Cloud コンソールで、[Gemini Enterprise] > [設定] ページに移動します。

    [設定] に移動

  2. [リソース アクセス制御] タブを選択します。

  3. [リソースへのアクセス制御] 切り替えボタンをオンにします。

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

  5. [リソース アクセス制御を有効にしますか?] ダイアログで、[有効にする] をクリックします。

REST

REST API を使用してアプリとデータストアのアクセス制御を有効にするには、projects.patch メソッドを呼び出します。

curl -X PATCH \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -H "x-goog-user-project: PROJECT_ID" \
  "https://ENDPOINT_LOCATION-discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID?updateMask=customer_provided_config.resource_access_control_config.data_store_access_control_enabled" \
  -d '{
    "customer_provided_config": {
      "resource_access_control_config": {
        "data_store_access_control_enabled": true
      }
    }
  }'

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

  • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
  • ENDPOINT_LOCATION: API リクエストのマルチリージョン。次のいずれかの値を指定します。
    • 米国のマルチリージョンの場合は us
    • EU のマルチリージョンの場合は eu
    • グローバル ロケーションの場合は global
    詳細については、データストアのマルチリージョンを指定するをご覧ください。

カスタム プロジェクト レベルのロールを作成する

カスタム プロジェクト レベルのロールは、すべてのプロジェクト リソースを公開せずに権限を付与します。カスタムロールは、Google Cloud プロジェクトごとに 1 回だけ作成する必要があります。

カスタムの制限付きエンドユーザー ロールを作成する

customRestrictedEndUser ロールは、エンドユーザーが Gemini Enterprise 認証エンドポイントとデベロッパー ツール構成(discoveryengine.locations.buildAuthorizationUrl と discoveryengine.devToolsConfigs.get)を読み込むために必要なプロジェクト レベルの権限を付与します。特定のアプリやデータストアを検査またはクエリするアクセス権は付与されません。

コンソール

Google Cloud コンソールでカスタムロールを作成する手順は次のとおりです。

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

    [ロール] に移動

  2. Google Cloud プロジェクトを選択します。

  3. [+ カスタムロールを作成] をクリックします。

  4. ロールの詳細を入力します。

    • タイトル: Custom Gemini Enterprise Restricted End User
    • 説明: Base project-level permissions to access Gemini Enterprise apps
    • ロール ID: customRestrictedEndUser
    • ロールのリリース段階: [一般提供] を選択します。
  5. [+ 権限を追加] をクリックします。

  6. 次の権限をフィルタして選択します。

    • discoveryengine.devToolsConfigs.get
    • discoveryengine.locations.buildAuthorizationUrl
  7. [追加] をクリックします。

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

gcloud

Google Cloud CLI を使用してカスタムロールを作成する手順は次のとおりです。

  1. gcloud iam roles describe を実行して、ロールがプロジェクトに存在するかどうかを確認します。

    gcloud iam roles describe customRestrictedEndUser --project=PROJECT_ID
    

    PROJECT_ID は、Google Cloud プロジェクトの ID に置き換えます。

  2. gcloud iam roles create を実行してロールを作成します。

    gcloud iam roles create customRestrictedEndUser \
      --project=PROJECT_ID \
      --title="Custom Gemini Enterprise Restricted End User" \
      --description="Base project-level permissions to access Gemini Enterprise apps." \
      --stage=GA \
      --permissions=discoveryengine.devToolsConfigs.get,discoveryengine.locations.buildAuthorizationUrl
    

    PROJECT_ID は、Google Cloud プロジェクトの ID に置き換えます。

REST

REST API を使用してカスタムロールを作成するには、roles.create メソッドを呼び出します。

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -d '{
    "roleId": "customRestrictedEndUser",
    "role": {
      "title": "Custom Gemini Enterprise Restricted End User",
      "description": "Base project-level permissions to access Gemini Enterprise apps.",
      "stage": "GA",
      "includedPermissions": [
        "discoveryengine.devToolsConfigs.get",
        "discoveryengine.locations.buildAuthorizationUrl"
      ]
    }
  }' \
  "https://iam.googleapis.com/v1/projects/PROJECT_ID/roles"

PROJECT_ID は、 Google Cloudプロジェクトの ID に置き換えます。

カスタムの制限付き管理者ロールを作成する

customRestrictedAdmin ロールは、特定のアプリやデータストアのコンテンツを表示または変更するアクセス権を付与せずに、委任された管理者と閲覧者が Google Cloud コンソールでリソース リストとサイドバーを表示するために必要なプロジェクト レベルの権限を付与します。特定のアプリまたはデータストアに対する管理制御を委任するには、このカスタムロールをプロジェクト レベルで割り当ててから、ターゲット リソースに Gemini Enterprise 管理者(roles/discoveryengine.agentspaceAdmin)を直接割り当てます。

コンソール

Google Cloud コンソールでカスタムロールを作成する手順は次のとおりです。

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

    [ロール] に移動

  2. Google Cloud プロジェクトを選択します。

  3. [+ ロールを作成] をクリックします。

  4. ロールの詳細を入力します。

    • タイトル: Custom Gemini Enterprise Restricted Admin
    • 説明: Base project-level permissions to list and view Gemini Enterprise configuration pages
    • ロール ID: customRestrictedAdmin
    • ロールのリリース段階: [一般提供] を選択します。
  5. [+ 権限を追加] をクリックします。

  6. 次の権限をフィルタして選択します。

    • discoveryengine.aclConfigs.get
    • discoveryengine.collections.list
    • discoveryengine.dataStores.list
    • discoveryengine.devToolsConfigs.get
    • discoveryengine.engines.list
    • discoveryengine.licenseConfigs.list
    • discoveryengine.locations.buildAuthorizationUrl
    • discoveryengine.locations.getConnectorSource
    • discoveryengine.locations.listConnectorSources
    • discoveryengine.projects.get
    • discoveryengine.userStores.listUserLicenses
    • resourcemanager.projects.get
  7. [追加] をクリックします。

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

gcloud

Google Cloud CLI を使用してカスタムロールを作成する手順は次のとおりです。

  1. gcloud iam roles describe を実行して、ロールがプロジェクトに存在するかどうかを確認します。

    gcloud iam roles describe customRestrictedAdmin --project=PROJECT_ID
    

    PROJECT_ID は、Google Cloud プロジェクトの ID に置き換えます。

  2. gcloud iam roles create を実行してロールを作成します。

    gcloud iam roles create customRestrictedAdmin \
      --project=PROJECT_ID \
      --title="Custom Gemini Enterprise Restricted Admin" \
      --description="Base project-level permissions to list and view Gemini Enterprise configuration pages." \
      --stage=GA \
      --permissions=discoveryengine.aclConfigs.get,discoveryengine.collections.list,discoveryengine.dataStores.list,discoveryengine.devToolsConfigs.get,discoveryengine.engines.list,discoveryengine.licenseConfigs.list,discoveryengine.locations.buildAuthorizationUrl,discoveryengine.locations.getConnectorSource,discoveryengine.locations.listConnectorSources,discoveryengine.projects.get,discoveryengine.userStores.listUserLicenses,resourcemanager.projects.get
    

    PROJECT_ID は、Google Cloud プロジェクトの ID に置き換えます。

REST

REST API を使用してカスタムロールを作成するには、roles.create メソッドを呼び出します。

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -d '{
    "roleId": "customRestrictedAdmin",
    "role": {
      "title": "Custom Gemini Enterprise Restricted Admin",
      "description": "Base project-level permissions to list and view Gemini Enterprise configuration pages.",
      "stage": "GA",
      "includedPermissions": [
        "discoveryengine.aclConfigs.get",
        "discoveryengine.collections.list",
        "discoveryengine.dataStores.list",
        "discoveryengine.devToolsConfigs.get",
        "discoveryengine.engines.list",
        "discoveryengine.licenseConfigs.list",
        "discoveryengine.locations.buildAuthorizationUrl",
        "discoveryengine.locations.getConnectorSource",
        "discoveryengine.locations.listConnectorSources",
        "discoveryengine.projects.get",
        "discoveryengine.userStores.listUserLicenses",
        "resourcemanager.projects.get"
      ]
    }
  }' \
  "https://iam.googleapis.com/v1/projects/PROJECT_ID/roles"

PROJECT_ID は、 Google Cloudプロジェクトの ID に置き換えます。

既存のカスタムロールを更新する

カスタムロールがプロジェクトにすでに存在し、不足している権限を追加する必要がある場合は、ロールを更新します。

コンソール

Google Cloud コンソールでカスタムロールを更新する手順は次のとおりです。

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

    [ロール] に移動

  2. カスタムロールを作成した Google Cloud プロジェクトを選択します。

  3. [カスタム] タブを選択するか、リストをフィルタしてカスタムロール(customRestrictedEndUser または customRestrictedAdmin)を見つけます。

  4. カスタムロールの名前をクリックします。

  5. [ロールを編集] をクリックします。

  6. [+ 権限を追加] をクリックします。

  7. 追加する権限を検索して選択し、[追加] をクリックします。

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

gcloud

Google Cloud CLI を使用して既存のカスタムロールを更新するには、gcloud iam roles update を実行します。

  • 制限付きエンドユーザー ロールの場合は、次のコマンドを実行します。

    gcloud iam roles update customRestrictedEndUser \
      --project=PROJECT_ID \
      --add-permissions=discoveryengine.devToolsConfigs.get,discoveryengine.locations.buildAuthorizationUrl
    

    PROJECT_ID は、Google Cloud プロジェクトの ID に置き換えます。

  • 制限付き管理者ロールの場合は、次のコマンドを実行します。

    gcloud iam roles update customRestrictedAdmin \
      --project=PROJECT_ID \
      --add-permissions=discoveryengine.locations.buildAuthorizationUrl,discoveryengine.locations.listConnectorSources
    

    PROJECT_ID は、Google Cloud プロジェクトの ID に置き換えます。

REST

REST API を使用してカスタムロールを更新するには、roles.patch メソッドを呼び出します。roles.patch は includedPermissions リストを置き換えます。ロールに含めるすべての権限を指定します。

  • 制限付きエンドユーザー ロールの場合は、次のコマンドを実行します。

    curl -X PATCH \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      -d '{
        "includedPermissions": [
          "discoveryengine.devToolsConfigs.get",
          "discoveryengine.locations.buildAuthorizationUrl"
        ]
      }' \
      "https://iam.googleapis.com/v1/projects/PROJECT_ID/roles/customRestrictedEndUser?updateMask=includedPermissions"
    

    PROJECT_ID は、Google Cloud プロジェクトの ID に置き換えます。

  • 制限付き管理者ロールの場合は、次のコマンドを実行します。

    curl -X PATCH \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      -d '{
        "includedPermissions": [
          "discoveryengine.aclConfigs.get",
          "discoveryengine.collections.list",
          "discoveryengine.dataStores.list",
          "discoveryengine.devToolsConfigs.get",
          "discoveryengine.engines.list",
          "discoveryengine.licenseConfigs.list",
          "discoveryengine.locations.buildAuthorizationUrl",
          "discoveryengine.locations.getConnectorSource",
          "discoveryengine.locations.listConnectorSources",
          "discoveryengine.projects.get",
          "discoveryengine.userStores.listUserLicenses",
          "resourcemanager.projects.get"
        ]
      }' \
      "https://iam.googleapis.com/v1/projects/PROJECT_ID/roles/customRestrictedAdmin?updateMask=includedPermissions"
    

    PROJECT_ID は、Google Cloud プロジェクトの ID に置き換えます。

プロジェクト レベルでカスタムロールを割り当てる

カスタム プロジェクト ロールをターゲット ユーザーまたはグループに割り当てます。

コンソール

Google Cloud コンソールを使用してカスタムロールを割り当てる手順は次のとおりです。

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

    IAM に移動

  2. カスタムロールを作成した Google Cloud プロジェクトを選択します。

  3. [アクセスを許可] をクリックして、新しいプリンシパルを追加するか、既存のプリンシパルを編集します。

  4. [新しいプリンシパル] に、ユーザーまたはグループのメールアドレスを入力します。

  5. ペルソナ用に作成したカスタムロール(次のいずれかなど)を選択します。

    • カスタム Gemini Enterprise 制限付きエンドユーザー
    • カスタム Gemini Enterprise 制限付き管理者
  6. [保存] をクリックします。

gcloud

Google Cloud CLI を使用してカスタムロールを割り当てるには、次のコマンドを実行します。

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="user:USER_EMAIL" \
  --role="projects/PROJECT_ID/roles/CUSTOM_ROLE_ID"

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

  • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
  • CUSTOM_ROLE_ID: 割り当てるカスタムロールの ID(customRestrictedEndUser または customRestrictedAdmin)。
  • USER_EMAIL: ユーザーまたはグループのメールアドレス。

REST

Cloud Resource Manager API を使用してカスタムロールを割り当てるには、読み取り - 変更 - 書き込みのパターンを使用して次の操作を行います。

  1. getIamPolicy メソッドを使用して現在の IAM ポリシーを取得し、現在のポリシーとその etag を取得します。

    curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      -d '{}' \
      "https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy"
    

    PROJECT_ID は、Google Cloud プロジェクトの ID に置き換えます。

  2. 更新されたポリシー ペイロードを使用して、setIamPolicy メソッドで更新された IAM ポリシーを設定します。

    curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      -d '{
        "policy": {
          "etag": "ETAG",
          "bindings": [
            {
              "role": "EXISTING_ROLE",
              "members": [
                "user:EXISTING_USER_EMAIL"
              ]
            },
            {
              "role": "projects/PROJECT_ID/roles/CUSTOM_ROLE_ID",
              "members": [
                "user:USER_EMAIL"
              ]
            }
          ]
        }
      }' \
      "https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy"
    

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

    • ETAG: getIamPolicy メソッドを使用したときにレスポンスとして取得した etag 値。
    • EXISTING_ROLE と EXISTING_USER_EMAIL: 保持する getIamPolicy メソッドから返された既存のロールとプリンシパル バインディング。
    • PROJECT_ID: 実際の Google Cloudプロジェクトの ID。
    • CUSTOM_ROLE_ID: 割り当てるカスタム プロジェクト レベルのロールの ID。次のいずれかを指定します。
      • customRestrictedEndUser: エンドユーザーがアプリを認証してアクセスするためのプロジェクト権限を付与します。
      • customRestrictedAdmin: 管理者が Google Cloud コンソールでリソース リストを表示するためのプロジェクト権限を付与します。
    • USER_EMAIL: ユーザーまたはグループのメールアドレス。

アプリの権限を構成する

Google Cloud コンソールまたは REST API を使用して、ターゲット アプリ リソースに対するリソースレベルの権限を付与します。

アプリレベルの IAM ポリシーで事前定義ロールではなくカスタムロールを割り当てる場合は、カスタムロールに、Gemini Enterprise ユーザー(roles/discoveryengine.agentspaceUser)や Gemini Enterprise 管理者(roles/discoveryengine.agentspaceAdmin)など、対応する事前定義ロールのすべての権限が含まれていることを確認してください。

コンソール

Google Cloud コンソールでアプリの権限を構成する手順は次のとおりです。

  1. Google Cloud コンソールで、[Gemini Enterprise] > [アプリ] ページに移動します。

    [アプリ] に移動

  2. ターゲット アプリを選択します。

  3. [ユーザー権限] をクリックし、[ユーザーを追加] をクリックします。

  4. ユーザーまたはグループのロールを選択します。

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

REST

REST API を使用してアプリの権限を構成するには、読み取り - 変更 - 書き込みのパターンを使用して次の操作を行います。

  1. getIamPolicy メソッドを使用して現在の IAM ポリシーを取得し、現在のポリシーとその etag を取得します。

    curl -X GET \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://ENDPOINT_LOCATION-discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/collections/default_collection/engines/APP_ID:getIamPolicy"
    

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

    • PROJECT_ID: 実際のプロジェクトの ID。
    • ENDPOINT_LOCATION: API リクエストのマルチリージョン。次のいずれかの値を指定します。
      • 米国のマルチリージョンの場合は us
      • EU のマルチリージョンの場合は eu
      • グローバル ロケーションの場合は global
      詳細については、データストアのマルチリージョンを指定するをご覧ください。
    • LOCATION: データストアのマルチリージョン(global、us、eu)。
    • APP_ID: 構成するアプリの ID。
  2. 更新されたポリシー ペイロードを使用して、setIamPolicy メソッドで更新された IAM ポリシーを設定します。

    curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      -d '{
        "policy": {
          "etag": "ETAG",
          "bindings": [
            {
              "role": "EXISTING_ROLE",
              "members": [
                "user:EXISTING_USER_EMAIL"
              ]
            },
            {
              "role": "PREDEFINED_ROLE",
              "members": [
                "user:USER_EMAIL"
              ]
            }
          ]
        }
      }' \
      "https://ENDPOINT_LOCATION-discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/collections/default_collection/engines/APP_ID:setIamPolicy"
    

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

    • ETAG: getIamPolicy メソッドを使用したときにレスポンスとして取得した etag 値。
    • EXISTING_ROLE と EXISTING_USER_EMAIL: 保持する getIamPolicy メソッドから返された既存のロールとプリンシパル バインディング。
    • USER_EMAIL: ユーザーまたはグループのメールアドレス(例: alex@example.com)。
      • アクセス権を付与するには、members 配列にユーザーのメールアドレスを追加します。各メールアドレスの前に user: を付けます。メールアドレスの前後には余分なスペースを入れないでください。
      • アクセス権を取り消すには、members 配列からユーザーのメールアドレスを削除します。
    • PREDEFINED_ROLE: アプリに割り当てる事前定義ロール。たとえば、エンドユーザーの場合は Gemini Enterprise ユーザー(roles/discoveryengine.agentspaceUser)、管理者の場合は Gemini Enterprise 管理者(roles/discoveryengine.agentspaceAdmin)、閲覧者の場合は Gemini Enterprise 閲覧者(roles/discoveryengine.agentspaceViewer)など。詳細については、事前定義ロールをご覧ください。
    • PROJECT_ID: 実際のGoogle Cloud プロジェクト ID。
    • ENDPOINT_LOCATION: API リクエストのマルチリージョン。次のいずれかの値を指定します。
      • 米国のマルチリージョンの場合は us
      • EU のマルチリージョンの場合は eu
      • グローバル ロケーションの場合は global
      詳細については、データストアのマルチリージョンを指定するをご覧ください。
    • LOCATION: データストアのマルチリージョン(global、us、eu)。
    • APP_ID: 構成するアプリの ID。

データストアの権限を構成する

データ権限を構成するには、 Google Cloud コンソールまたは REST API を使用して、ターゲット データストアに対するリソースレベルの権限を付与します。エンドユーザーは、明示的に権限が付与されたデータストアにのみ接続してクエリを実行できます。

データストアの IAM ポリシーで事前定義ロールではなくカスタムロールを割り当てる場合は、カスタムロールに、Gemini Enterprise ユーザー(roles/discoveryengine.agentspaceUser)や Gemini Enterprise 管理者(roles/discoveryengine.agentspaceAdmin)など、対応する事前定義ロールのすべての権限が含まれていることを確認してください。

エンドユーザーのドキュメント権限を適用するサードパーティ コネクタの場合、個々のドキュメントに対するエンドユーザーのアクセスは、引き続きソースシステムから同期されたアクセス制御リスト(ACL)に則って管理されます(IAM アクセス権を付与しても、ソース ACL はバイパスされません)。

データストア、コレクション、エンティティ ID を確認するには、データストアとエンティティの詳細を取得するをご覧ください。

コンソール

Google Cloud コンソールでデータストアの権限を構成する手順は次のとおりです。 Google Cloud コンソールでデータストアに割り当てられた権限は、基盤となる子エンティティに自動的に伝播されます。

  1. Google Cloud コンソールで、[Gemini Enterprise] > [データストア] ページに移動します。

    [データストア] ページに移動

  2. データストアの名前をクリックします。

  3. [ユーザー権限] > [ユーザーを追加] をクリックします。

  4. ユーザーまたはグループのロールを選択します。

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

REST

REST API を使用してデータストアの権限を構成するには、データストアの構成に一致するセクションを開きます。

エンティティを含むデータストア

このオプションは、Jira、Salesforce、Confluence、SharePoint Online など、複数のエンティティ タイプを含むサードパーティ コネクタに使用します。REST API を使用する場合、権限は親コネクタ コレクションから子エンティティに自動的にカスケードされません。親コレクション リソースと基盤となるすべてのエンティティ データストアの両方に同じ権限を付与する必要があります(エンティティのサブセットのみに権限を構成しないでください)。

エンティティを含むデータストアの権限を構成する手順は次のとおりです。

  1. データコネクタ コレクションの現在の IAM ポリシーを取得します。

    getIamPolicy を呼び出して、現在のポリシーとその etag を取得します。

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://ENDPOINT_LOCATION-discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/collections/COLLECTION_ID:getIamPolicy"

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

    • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
    • ENDPOINT_LOCATION: API リクエストのマルチリージョン。次のいずれかの値を指定します。
      • 米国のマルチリージョンの場合は us
      • EU のマルチリージョンの場合は eu
      • グローバル ロケーションの場合は global
      詳細については、データストアのマルチリージョンを指定するをご覧ください。
    • LOCATION: データストアのマルチリージョン(global、us、eu)。
    • COLLECTION_ID: データコネクタのコレクション ID。詳細については、データストアとエンティティの詳細を取得するをご覧ください。
  2. 更新された IAM ポリシーをデータコネクタ コレクションに設定します。

    etag とロール バインディングを含む setIamPolicy を呼び出します。

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -d '{
      "policy": {
        "etag": "ETAG",
        "bindings": [
          {
            "role": "EXISTING_ROLE",
            "members": [
              "user:EXISTING_USER_EMAIL"
            ]
          },
          {
            "role": "PREDEFINED_ROLE",
            "members": [
              "user:USER_EMAIL"
            ]
          }
        ]
      }
    }' \
    "https://ENDPOINT_LOCATION-discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/collections/COLLECTION_ID:setIamPolicy"

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

    • ETAG: ステップ 1 で getIamPolicy メソッドを使用したときにレスポンスとして取得した etag 値。
    • EXISTING_ROLE、EXISTING_USER_EMAIL: 保持する getIamPolicy メソッドから返された既存のロールとプリンシパルのバインディング。
    • USER_EMAIL: ユーザーまたはグループのメールアドレス。
    • PREDEFINED_ROLE: コレクションに割り当てる事前定義ロール。たとえば、エンドユーザーの場合は Gemini Enterprise ユーザー(roles/discoveryengine.agentspaceUser)、管理者の場合は Gemini Enterprise 管理者(roles/discoveryengine.agentspaceAdmin)、閲覧者の場合は Gemini Enterprise 閲覧者(roles/discoveryengine.agentspaceViewer)などです。詳細については、事前定義ロールをご覧ください。
    • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
    • ENDPOINT_LOCATION: API リクエストのマルチリージョン。次のいずれかの値を指定します。
      • 米国のマルチリージョンの場合は us
      • EU のマルチリージョンの場合は eu
      • グローバル ロケーションの場合は global
      詳細については、データストアのマルチリージョンを指定するをご覧ください。
    • LOCATION: データストアのマルチリージョン(global、us、eu)。
    • COLLECTION_ID: データコネクタのコレクション ID。
  3. エンティティ データストアの現在の IAM ポリシーを取得します。

    Gemini Enterprise では、子エンティティ データストアは default_collection の下に存在し、コネクタ コレクション ID が接頭辞として付加されます。default_collection のエンティティ データストアで getIamPolicy を呼び出します。

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://ENDPOINT_LOCATION-discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/collections/default_collection/dataStores/DATA_STORE_ENTITY_ID:getIamPolicy"

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

    • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
    • ENDPOINT_LOCATION: API リクエストのマルチリージョン。次のいずれかの値を指定します。
      • 米国のマルチリージョンの場合は us
      • EU のマルチリージョンの場合は eu
      • グローバル ロケーションの場合は global
      詳細については、データストアのマルチリージョンを指定するをご覧ください。
    • LOCATION: データストアのマルチリージョン(global、us、eu)。
    • DATA_STORE_ENTITY_ID: エンティティ データストアの ID(DataConnector3_entityA など)。詳細については、データストアとエンティティの詳細を取得するをご覧ください。
  4. 更新された IAM ポリシーをエンティティ データストアに設定します。

    etag を含むエンティティ データストアで setIamPolicy を呼び出します。

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -d '{
      "policy": {
        "etag": "ETAG",
        "bindings": [
          {
            "role": "EXISTING_ROLE",
            "members": [
              "user:EXISTING_USER_EMAIL"
            ]
          },
          {
            "role": "PREDEFINED_ROLE",
            "members": [
              "user:USER_EMAIL"
            ]
          }
        ]
      }
    }' \
    "https://ENDPOINT_LOCATION-discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/collections/default_collection/dataStores/DATA_STORE_ENTITY_ID:setIamPolicy"

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

    • ETAG: 手順 3 で getIamPolicy メソッドを使用したときにレスポンスとして取得した etag 値。
    • EXISTING_ROLE、EXISTING_USER_EMAIL: 保持する getIamPolicy メソッドから返された既存のロールとプリンシパルのバインディング。
    • USER_EMAIL: ユーザーまたはグループのメールアドレス。
    • PREDEFINED_ROLE: エンティティ データストアに割り当てる事前定義ロール。たとえば、エンドユーザーには Gemini Enterprise ユーザー(roles/discoveryengine.agentspaceUser)、管理者には Gemini Enterprise 管理者(roles/discoveryengine.agentspaceAdmin)、閲覧者には Gemini Enterprise 閲覧者(roles/discoveryengine.agentspaceViewer)などです。詳細については、事前定義ロールをご覧ください。
    • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
    • ENDPOINT_LOCATION: API リクエストのマルチリージョン。次のいずれかの値を指定します。
      • 米国のマルチリージョンの場合は us
      • EU のマルチリージョンの場合は eu
      • グローバル ロケーションの場合は global
      詳細については、データストアのマルチリージョンを指定するをご覧ください。
    • LOCATION: データストアのマルチリージョン(global、us、eu)。
    • DATA_STORE_ENTITY_ID: エンティティ データストアの ID。

データコネクタの下にある各エンティティ データストアに対して、ステップ 3 と 4 を繰り返します。後で追加のエンティティ タイプを同期するようにコネクタを構成する場合は、新しく作成されたエンティティ データストアごとに IAM ポリシーを構成します。

エンティティのないデータストア

このオプションは、Cloud Storage、BigQuery などのスタンドアロン データストアや、エンティティを含まないデータソースで使用します。default_collection の単一のデータストア リソースに権限を直接設定します。

エンティティのないデータストアの権限を構成する手順は次のとおりです。

  1. データストアの現在の IAM ポリシーを取得します。

    getIamPolicy を呼び出して、現在のポリシーとその etag を取得します。

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://ENDPOINT_LOCATION-discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/collections/default_collection/dataStores/DATA_STORE_ID:getIamPolicy"

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

    • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
    • ENDPOINT_LOCATION: API リクエストのマルチリージョン。次のいずれかの値を指定します。
      • 米国のマルチリージョンの場合は us
      • EU のマルチリージョンの場合は eu
      • グローバル ロケーションの場合は global
      詳細については、データストアのマルチリージョンを指定するをご覧ください。
    • LOCATION: データストアのマルチリージョン(global、us、eu)。
    • DATA_STORE_ID: データストアの ID。詳細については、データストアとエンティティの詳細を取得するをご覧ください。
  2. 更新された IAM ポリシーをデータストアに設定します。

    etag とロール バインディングを含む setIamPolicy を呼び出します。

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -d '{
      "policy": {
        "etag": "ETAG",
        "bindings": [
          {
            "role": "EXISTING_ROLE",
            "members": [
              "user:EXISTING_USER_EMAIL"
            ]
          },
          {
            "role": "PREDEFINED_ROLE",
            "members": [
              "user:USER_EMAIL"
            ]
          }
        ]
      }
    }' \
    "https://ENDPOINT_LOCATION-discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/collections/default_collection/dataStores/DATA_STORE_ID:setIamPolicy"

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

    • ETAG: ステップ 1 で getIamPolicy メソッドを使用したときにレスポンスとして取得した etag 値。
    • EXISTING_ROLE、EXISTING_USER_EMAIL: 保持する getIamPolicy メソッドから返された既存のロールとプリンシパルのバインディング。
    • USER_EMAIL: ユーザーまたはグループのメールアドレス。
    • PREDEFINED_ROLE: データストアに割り当てる事前定義ロール。たとえば、エンドユーザーの場合は Gemini Enterprise ユーザー(roles/discoveryengine.agentspaceUser)、管理者の場合は Gemini Enterprise 管理者(roles/discoveryengine.agentspaceAdmin)、閲覧者の場合は Gemini Enterprise 閲覧者(roles/discoveryengine.agentspaceViewer)などです。詳細については、事前定義ロールをご覧ください。
    • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
    • ENDPOINT_LOCATION: API リクエストのマルチリージョン。次のいずれかの値を指定します。
      • 米国のマルチリージョンの場合は us
      • EU のマルチリージョンの場合は eu
      • グローバル ロケーションの場合は global
      詳細については、データストアのマルチリージョンを指定するをご覧ください。
    • LOCATION: データストアのマルチリージョン(global、us、eu)。
    • DATA_STORE_ID: データストアの ID。

Gemini Notebook Enterprise と AI デベロッパー ツールの機能へのアクセス権を付与する

プロジェクト レベルで customRestrictedEndUser が割り当てられている制限付きユーザーは、プロジェクト ロールに基本認証権限のみが含まれているため、AI デベロッパー ツールや Gemini Notebook Enterprise などの機能にアクセスできなくなります。

プロジェクト レベルで Gemini Enterprise ユーザー(roles/discoveryengine.agentspaceUser)ロールを付与すると、分離がオーバーライドされ、プロジェクト内のすべてのアプリとデータストアが公開されます。代わりに、管理者はプロジェクト レベルで機能固有の狭いロールを付与できます。

Gemini Notebook Enterprise へのアクセス権を付与する

制限付きユーザーがアプリやデータストアを公開せずにノートブックを作成して使用できるように、Cloud NotebookLM ユーザー(roles/discoveryengine.notebookLmUser)ロールを付与します。

コンソール

Google Cloud コンソールを使用してアクセス権を付与する手順は次のとおりです。

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

    [IAM] に移動

  2. Google Cloud プロジェクトを選択します。

  3. 権限リストでユーザーまたはグループを見つけて、[プリンシパルを編集] をクリックします。または、[アクセス権を付与] をクリックして、新しいユーザーを追加します。

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

  5. [ロールを選択] フィールドで、[Cloud NotebookLM ユーザー](roles/discoveryengine.notebookLmUser)を検索して選択します。

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

gcloud

Google Cloud CLI を使用してアクセス権を付与するには、次のコマンドを実行します。

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="user:USER_EMAIL" \
  --role="roles/discoveryengine.notebookLmUser"

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

  • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
  • USER_EMAIL: ユーザーまたはグループのメールアドレス。

REST

REST API を使用してアクセス権を付与するには、setIamPolicy メソッドを使用してプロジェクトの IAM ポリシーを更新します。

  1. getIamPolicy メソッドを使用して現在の IAM ポリシーを取得し、現在のポリシーとその etag を取得します。

    curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      -d '{}' \
      "https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy"
    

    PROJECT_ID は、Google Cloud プロジェクトの ID に置き換えます。

  2. roles/discoveryengine.notebookLmUser ロールを使用して setIamPolicy メソッドで更新された IAM ポリシーを設定します。

    curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      -d '{
        "policy": {
          "etag": "ETAG",
          "bindings": [
            {
              "role": "EXISTING_ROLE",
              "members": [
                "user:EXISTING_USER_EMAIL"
              ]
            },
            {
              "role": "roles/discoveryengine.notebookLmUser",
              "members": [
                "user:USER_EMAIL"
              ]
            }
          ]
        }
      }' \
      "https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy"
    

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

    • ETAG: getIamPolicy レスポンスの etag 値。
    • EXISTING_ROLE と EXISTING_USER_EMAIL: 保持する getIamPolicy メソッドから返された既存のロールとプリンシパル バインディング。
    • PROJECT_ID: 実際の Google Cloudプロジェクトの ID。
    • USER_EMAIL: ユーザーまたはグループのメールアドレス。

AI デベロッパー ツールへのアクセス権を付与する

Gemini for Google Cloud ユーザー(roles/cloudaicompanion.user)ロールと Business AI Code API のユーザーロール(roles/businessaicode.user)ロールを付与して、Gemini Enterprise アプリやデータストアを公開せずに AI デベロッパー ツールを有効にします。

コンソール

Google Cloud コンソールを使用してアクセス権を付与する手順は次のとおりです。

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

    [IAM] に移動

  2. Google Cloud プロジェクトを選択します。

  3. 権限リストでユーザーまたはグループを見つけて、[プリンシパルを編集] をクリックします。または、[アクセス権を付与] をクリックして、新しいユーザーを追加します。

  4. [ロールの割り当て] セクションで、次の各ロールを割り当てます。

    • Gemini for Google Cloud ユーザー(roles/cloudaicompanion.user)
    • Business AI Code API のユーザーロール(roles/businessaicode.user)
  5. [保存] をクリックします。

gcloud

Google Cloud CLI を使用してアクセス権を付与するには、次のコマンドを実行します。

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="user:USER_EMAIL" \
  --role="roles/cloudaicompanion.user"

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="user:USER_EMAIL" \
  --role="roles/businessaicode.user"

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

  • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
  • USER_EMAIL: ユーザーまたはグループのメールアドレス。

REST

REST API を使用してアクセス権を付与するには、setIamPolicy メソッドを使用してプロジェクトの IAM ポリシーを更新します。

  1. getIamPolicy メソッドを使用して現在の IAM ポリシーを取得し、現在のポリシーとその etag を取得します。

    curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      -d '{}' \
      "https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy"
    

    PROJECT_ID は、Google Cloud プロジェクトの ID に置き換えます。

  2. roles/cloudaicompanion.user ロールと roles/businessaicode.user ロールを使用して、setIamPolicy メソッドで更新された IAM ポリシーを設定します。

    curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      -d '{
        "policy": {
          "etag": "ETAG",
          "bindings": [
            {
              "role": "EXISTING_ROLE",
              "members": [
                "user:EXISTING_USER_EMAIL"
              ]
            },
            {
              "role": "roles/cloudaicompanion.user",
              "members": [
                "user:USER_EMAIL"
              ]
            },
            {
              "role": "roles/businessaicode.user",
              "members": [
                "user:USER_EMAIL"
              ]
            }
          ]
        }
      }' \
      "https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy"
    

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

    • ETAG: getIamPolicy レスポンスの etag 値。
    • EXISTING_ROLE と EXISTING_USER_EMAIL: 保持する getIamPolicy メソッドから返された既存のロールとプリンシパル バインディング。
    • PROJECT_ID: 実際の Google Cloudプロジェクトの ID。
    • USER_EMAIL: ユーザーまたはグループのメールアドレス。

次のステップ

IAM ポリシーを含むアプリを削除する場合は、アプリを削除する前にポリシーからユーザーを削除できます。詳細については、IAM ポリシーを含むアプリを削除するためのベスト プラクティスをご覧ください。