アプリのアクセス制御を構成する

このページでは、Gemini Enterprise の管理者が API を使用して、個々の Gemini Enterprise app に対するきめ細かいアクセス制御を管理する方法について説明します。

アプリとデータストアの両方で、リソースレベルのきめ細かいアクセス制御を構成する必要がある場合は、アプリとデータストアのきめ細かいアクセス制御を構成するをご覧ください。

デフォルトでは、IAM 権限はプロジェクト レベルで管理されることがよくあります。アプリレベルの IAM を使用すると、管理者は次のようなきめ細かい制御を行うことができます。

  • 同じ Google Cloud プロジェクト内の特定のアプリへのユーザー アクセスを制限する。
  • Gemini Enterprise デプロイの組織のニーズとデータサイロに合わせて権限を調整する。

たとえば、HR アプリと全社アプリがある組織を考えてみましょう。プロジェクト レベルの権限を持つ HR チームのメンバーは、両方のアプリにアクセスできます。一方、アプリレベルの IAM ポリシーを使用すると、営業チームのメンバーに全社アプリへのアクセス権のみを付与し、人事アプリへのアクセスを禁止できます。

アプリレベルの IAM ポリシーの例の図。

始める前に

  • Gemini Enterprise 管理者 (roles/discoveryengine.agentspaceAdmin)ロールがあることを確認します。

  • すべての Gemini Enterprise 企業ユーザーに有効なライセンスがあり、プロジェクト レベルで Gemini Enterprise 制限付き ユーザー (roles/discoveryengine.agentspaceRestrictedUser)ロールが付与されていることを確認します。手順については、ユーザーに権 101}限を付与するをご覧ください。

    このロールでは、アプリへのアクセス権は付与されません。ユーザーに必要なプロジェクト レベルのアクセス権が付与され、個々のアプリへのアクセス権が付与されます。事前定義された roles/discoveryengine.agentspaceRestrictedUser ロールの代わりにカスタム プロジェクト レベルのロールを使用する場合は、カスタムロールに discoveryengine.locations.buildAuthorizationUrl、discoveryengine.dataStores.get、discoveryengine.collections.get、discoveryengine.devToolsConfigs.get 権限が含まれていることを確認してください。 discoveryengine.devToolsConfigs.get を省略すると、ウェブアプリが devToolsConfig をチェックするときに、Cloud Audit Logs で 403 PERMISSION_DENIED エラーが発生します。

プロジェクト レベルのアクセスからアプリレベルのアクセスに移行する

ユーザーを特定のアプリに制限するには、プロジェクト レベルの Gemini Enterprise 企業ユーザーロールを Gemini Enterprise 制限付きユーザーロールに置き換えてから、個々のアプリレベルで Gemini Enterprise 企業ユーザーロールを付与する必要があります。

ユーザーをプロジェクト レベルのアクセスからアプリレベルのアクセスに移行する手順は次のとおりです。プロジェクトレベルの変更には Google Cloud コンソールを使用し、 アプリレベルの付与には API を使用します。 Google Cloud コンソールでは アプリレベルの付与はサポートされていません。

  1. コンソール Google Cloud で、[IAM] ページに移動します。
  2. ユーザーを見つけて、プロジェクト レベルの権限から Gemini Enterprise ユーザー(roles/discoveryengine.agentspaceUser)ロールを削除します。
  3. まだ行っていない場合は、プロジェクト レベルで Gemini Enterprise 制限付きユーザー(roles/discoveryengine.agentspaceRestrictedUser)ロールをユーザーに付与します。
  4. setIamPolicy メソッドを使用して、アクセスする必要がある特定のアプリの Gemini Enterprise ユーザー(roles/discoveryengine.agentspaceUser)ロールをユーザーに付与します。詳細については、IAM ポリシーを管理する をご覧ください。

アプリの IAM ポリシーを管理する

Gemini Enterprise app へのアクセスを管理するには、getIamPolicy API メソッドと setIamPolicy API メソッドを使用します。

次の手順では、現在のポリシーを取得し、ユーザー アクセスを許可または取り消すように更新する方法について説明します。

アプリの IAM ポリシーを取得する

getIamPolicy メソッドを使用して、アプリの現在の IAM ポリシーを取得します。現在の権限が上書きされないように、最初に既存のポリシーを取得することをおすすめします。

REST

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。

アプリの IAM ポリシーを更新する

アプリへのユーザー アクセスを許可または取り消すには、アプリの IAM ポリシーを setIamPolicy メソッドを使用して更新します。

IAM ポリシーは、Gemini Enterprise ユーザー (roles/discoveryengine.agentspaceUser)ロールを使用して、ユーザーに アプリへの直接アクセスを許可します。

REST

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{
      "policy": {
         "etag": "ETAG",
         "bindings": [
          {
            "role": "roles/discoveryengine.agentspaceUser",
            "members": [
              "user:USER_EMAIL",
              "group:GROUP_EMAIL",
              "principal://iam.googleapis.com/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT_ID",
              "principalSet://iam.googleapis.com/locations/global/workloadIdentityPools/POOL_ID/attribute.NAME/VALUE"
            ]
          }
        ]
      }
    }' \
"https://ENDPOINT_LOCATION-discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/collections/default_collection/engines/APP_ID:setIamPolicy"

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

  • ETAG: getIamPolicy メソッドを使用したときにレスポンスとして取得した etag 値。

  • USER_EMAIL、GROUP_EMAIL: 1 つ以上のユーザーまたはグループのメールアドレス。user と group に加えて、 principal と principalSet は Workload Identity 連携の有効なメンバータイプです。

    • アクセス権を付与するには、プリンシパルを members 配列に追加します。例: "user:cloudysanfrancisco@gmail.com"、 "group:mcymbalgroup@google.com"

    • アクセス権を取り消すには、members 配列からプリンシパルを削除します。

  • POOL_ID: Workload Identity プールの ID。

  • SUBJECT_ID: 特定の ID のサブジェクト識別子。

  • NAME: 属性の名前。

  • VALUE: 属性の値。

  • PROJECT_ID: 実際のプロジェクトの ID。

  • ENDPOINT_LOCATION: API リクエストのマルチリージョン。次のいずれかの値を指定します。

    • 米国のマルチリージョンの場合は us
    • EU のマルチリージョンの場合は eu
    • グローバル ロケーションの場合は global
    詳細については、データストアのマルチリージョンを指定するをご覧ください。

  • LOCATION: データストアのマルチリージョン(global、us、eu)。

  • APP_ID: 構成するアプリの ID。

次のステップ

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