アクセス制御

一般的に、複数のチームメンバーが共同でエージェントの作成や、サービスにアクセスするエージェントにアクセスします。ロールを使用して、プリンシパルに付与されるアクセス権と権限を制御できます。

Identity and Access Management(IAM)でアクセスを設定する場合、Dialogflow CX コンソール(ドキュメントを表示コンソールを開く)または Google Cloud Console(ドキュメントを表示コンソールを開く)を使用します。Google Cloud コンソールは、IAM ロールをプリンシパルに付与するために使用します。一方、Dialogflow コンソールは、Dialogflow エージェント ロールをプリンシパルに付与するために使用します。Dialogflow エージェント ロールは、Dialogflow で定義された便利な事前定義ロールのことで、アクセスを 1 つのエージェントや特定エージェントの子リソースに制限します。

次のような状況では、Google Cloud Console を使用する必要があります。

  • IAM プロジェクト オーナー ロールは、デフォルトで、エージェントを所有するプロジェクトを作成したユーザーに付与されています。この所有者は、プロジェクト内のすべてのエージェントに対する完全アクセス権を持ちます。プロジェクト オーナーを変更する場合は、Google Cloud コンソールを使用する必要があります。
  • Dialogflow CX コンソールでは、エージェント レベルのアクセスのみ構成できます。プロジェクト レベルのアクセスを構成する場合は、Google Cloud コンソールを使用する必要があります。
  • IAM の役割のサブセットには、対応する Dialogflow エージェントの役割があります。Dialogflow CX コンソールに存在しないプロジェクト レベルまたはエージェント レベルの役割を付与する場合は、Google Cloud コンソールを使用する必要があります。
  • Vertex AI Conversation ユーザー インターフェースを使用してデータストア エージェントを作成する場合は、Google Cloud コンソールを使用する必要があります。

API を使用することによって、1 つまたは複数のアプリケーションから特定のエージェントにリクエストを送信できます。この場合、サービス アカウントによってアクセスを制御できます。

Dialogflow CX コンソールによるアクセス制御

Dialogflow CX コンソールでは、エージェント レベルの共有が構成されている便利なエージェントの役割を適用できます。これらのロールは、特定のエージェントまたはエージェントの子リソースのサブセットへのアクセスを制限する IAM 条件を含む IAM のロールに関連付けられます。

Dialogflow CX コンソールからエージェント ロールの構成にアクセスするには、関連するプロジェクトのプロジェクト IAM 管理者ロールが付与されている必要があります。このロールは、Google Cloud Console から付与されます。

Dialogflow エージェントの役割 概要 IAM の役割
管理 コンソールまたは API からエージェントを作成、更新、クエリ、インテントの検出、削除するための完全アクセス権を付与します。 Dialogflow > Dialogflow API 管理者
読み取り コンソールまたは API からエージェントへのクエリ(インテントの検出ではありません)に対する読み取りアクセス権を付与します。 Dialogflow > Dialogflow API 読み取り
クライアント コンソールまたは API からインテントを検出するためのアクセス権を付与します。 Dialogflow > Dialogflow API クライアント
インテント管理者 コンソールまたは API からエージェントのインテントを作成、更新、削除、またはクエリを行うためのアクセス権を付与します。 Dialogflow > Dialogflow インテント管理者
エンティティ タイプ管理者 コンソールまたは API を使用して、エージェントのエンティティ タイプを作成、更新、削除、クエリを行うためのアクセス権を付与します。 Dialogflow > Dialogflow エンティティ タイプ管理者
Webhook 管理者 コンソールまたは API からエージェントの Webhook を作成、更新、削除、クエリを行うためのアクセス権を付与します。 Dialogflow > Dialogflow Webhook 管理者
テストケース管理者 コンソールまたは API を使用して、エージェントのテストケースを作成、更新、削除、クエリを行うための権限を付与します。 Dialogflow > Dialogflow テストケース管理者
フロー編集者 特定のフローの更新、クエリを行い、コンソールまたは API からフローリソース(ページ、ルートグループ、バージョン)を作成、更新、削除、またはクエリを行うためのアクセス権を付与します。 Dialogflow > Dialogflow フロー編集者
環境編集者 コンソールや API から、特定の環境の更新やクエリ、環境リソース(テスト)の作成、更新、削除、クエリするためのアクセス権を付与します。 Dialogflow > Dialogflow 環境編集者

エージェントの設定内に共有オプションがあります。エージェント共有設定を開くには、次の手順を行います。

  1. Dialogflow CX Console を開きます。
  2. ご自身の Google Cloud プロジェクトを選択します。
  3. エージェントを選択します。
  4. [エージェント設定] をクリックします。
  5. [Share] タブをクリックします。

プリンシパルを追加する

  1. [Add] をクリックします。
  2. ユーザー、グループ、またはサービス アカウントのメールアドレスを入力します。
  3. メールの種類には、[ユーザー]、[グループ]、または [サービス アカウント] を選択します。
  4. Dialogflow 読み取りのロールはデフォルトで追加されます。これは、ユーザーが Dialogflow CX コンソールにアクセスするために必要です。
  5. [ロールを割り当てる] で、[ロールを追加する] をクリックします。
  6. [タイプ] でロールのタイプを選択します。
  7. フロー編集者ロールと環境編集者ロールについては、特定のフローや環境を選択するか、デフォルトの [すべて] オプションをそのまま使用します。
  8. 必要に応じて、ロールの有効期限を設定します。
  9. [保存] をクリックします。

プリンシパルのロールを変更する

  1. リスト内のプリンシパルをクリックします。
  2. そのポップアップで、このプリンシパルのロールを更新します。
  3. [保存] をクリックします。

プリンシパルを削除する

  1. リストでプリンシパルを見つけます。
  2. プリンシパルの削除ボタン()をクリックします。
  3. [OK] をクリックします。

Google Cloud コンソールによるアクセス制御

IAM 設定を使用してアクセスを制御できます。権限の追加、編集、削除の詳細な手順については、IAM クイックスタートをご覧ください。

以下の設定にアクセスするには、Google Cloud コンソールで [IAM] ページを開きます。

プロジェクトにユーザーやサービス アカウントを追加する

ユーザーやサービス アカウントに権限を付与するには、Google Cloud プロジェクトでロールを付与します。ユーザーを追加するには、そのユーザーのメールアドレスを入力します。サービス アカウントを追加する場合も、そのアカウントに関連付けられているメールアドレスを入力します。1 つのサービス アカウントを複数のプロジェクトに使用する場合は、サービス アカウントを追加する必要があります。サービス アカウントに関連付けらたメールアドレスを確認するには、Google Cloud コンソールで IAM の [サービス アカウント] ページをご覧ください。

プリンシパルを追加するには、次のようにします。

  1. ページ上部の追加ボタン()をクリックします。
  2. プリンシパルのメールアドレスを入力します。
  3. 役割を選択します。
  4. [保存] をクリックします。

権限を変更する

  1. プリンシパルの編集ボタン()をクリックします。
  2. 別の役割を選択します。
  3. [保存] をクリックします。

プリンシパルを削除する

  1. プリンシパルの削除ボタン()をクリックします。

1 つのエージェントへのアクセスを制限する条件を追加する

プリンシパルを追加または編集するときは、アクセス権を 1 つのエージェントに制限する IAM 条件を作成できます。

次に例を示します。

{
    "expression": "resource.name.startsWith(\"projects/PROJECT_ID/locations/REGION_ID/agents/AGENT_ID\")",
    "title": "For Dialogflow Agent AGENT_ID"
}

この条件を指定すると、特定のエージェントに対する基本的なアクセス権が付与されます。たとえば、この条件が指定されたサービス アカウントは Dialogflow API を呼び出すだけで、そのプロジェクトの条件に指定されているエージェントへアクセスできますが、プロジェクト内の他のエージェントにはアクセスできません。

この条件をプリンシパルに付与されているロールに追加するには、次のようにします。

  1. プリンシパルを選択します。
  2. プリンシパルの編集ボタン()をクリックします。
  3. [条件を追加] をクリックします。
  4. [タイトル] フィールドに「For Dialogflow Agent AGENT_ID」と入力し、AGENT_ID をエージェント ID に置き換えます。
  5. 任意の説明文を追加できます。
  6. [条件エディタ] を選択して、条件を作成します。
  7. resource.name.startsWith("projects/PROJECT_ID/locations/REGION_ID/agents/AGENT_ID") を追加します。AGENT_ID はエージェント ID で、PROJECT_ID はプロジェクト ID で置き換えます。
  8. [保存] をクリックします。

IAM ロール

次の表に、Dialogflow CX に関連する一般的な IAM ロールを示します。表中の権限の概要では、次の用語を使用します。

  • 完全なアクセス権: アクセス権の変更と、リソースの作成、削除、読み取りを行うための権限。
  • 編集権限: リソースの作成、削除、編集、読み取りを行うための権限。
  • セッション アクセス: インテントの検出、コンテキストの更新、セッション エンティティの更新、Agent Assist 会話インタラクションなど、会話中にランタイムのみのリソースのメソッドを呼び出すための権限。
  • 読み取りアクセス権: リソースの読み取り権限。
IAM ロール 権限の概要 権限の詳細
プロジェクト >
オーナー
すべての Google Cloud および Dialogflow リソースに対する完全アクセス権を必要とするプロジェクト オーナーに付与します。
  • Google Cloud コンソールまたは API を使用して、すべての Google Cloud プロジェクトのリソースに完全にアクセス可能です。
  • Dialogflow コンソールを使用した、エージェントに対する完全なアクセス権限。
  • API を使用してインテントを検出できます。
IAM の基本役割の定義をご覧ください。
プロジェクト ->
編集者
すべての Google Cloud および Dialogflow リソースに対する編集アクセス権が必要なプロジェクト編集者に付与します。
  • Google Cloud コンソールまたは API を使用した、すべての Google Cloud プロジェクトのリソースに対する編集権限。
  • Dialogflow コンソールを使用した、エージェントに対する編集権限。
  • API を使用してインテントを検出できます。
IAM の基本役割の定義をご覧ください。
プロジェクト >
閲覧者
すべての Google Cloud および Dialogflow リソースに対する読み取りアクセス権が必要なプロジェクト閲覧者に付与します。
  • Google Cloud コンソールまたは API を使用した、すべての Google Cloud プロジェクトのリソースに対する読み取りアクセス権。
  • Dialogflow コンソールまたは API を使用したエージェントへの読み取りアクセス権では、シミュレータを使用できません。
  • API を使用してインテントを検出することはできません。
IAM の基本役割の定義をご覧ください。
プロジェクト >
IAM 管理者
Dialogflow エージェントのロールの構成に対する編集アクセス権が必要なプロジェクト IAM 管理者に付与します。 IAM Resource Manager のロールの定義をご覧ください。
プロジェクト >
参照者
フォルダ、組織、IAM ポリシーなど、プロジェクトの階層を参照するための読み取りアクセス権が必要なプロジェクト参照者に付与します。
  • Google Cloud プロジェクト階層に対する読み取りアクセスが可能です。
  • Dialogflow コンソールを使用してエージェントにアクセスすることはできません。
  • API を使用してインテントを検出することはできません。
IAM プロジェクト ロールの定義をご覧ください。
Dialogflow >
Dialogflow API 管理者
Dialogflow 固有のリソースへの完全アクセス権が必要な Dialogflow API 管理者に付与します。
  • Google Cloud コンソールまたは API を使用した、すべての Dialogflow リソースに対する完全なアクセス権。
  • Dialogflow コンソールを使用した、エージェントに対する完全なアクセス権限。
  • API を使用してインテントを検出できます。
Dialogflow IAM ロールの定義をご覧ください。
Dialogflow >
Dialogflow API クライアント
API を使用してインテント検出呼び出しを実行する Dialogflow API クライアントに付与します。
  • Dialogflow シミュレータまたは API を使用した、ランタイム Dialogflow リソースへのセッション アクセス。
  • Dialogflow コンソールを使用した、エージェントに対する制限付きアクセス権。
  • API を使用してインテントを検出できます。
Dialogflow IAM ロールの定義をご覧ください。
Dialogflow >
Dialogflow コンソール エージェント編集者
既存のエージェントを編集する Dialogflow CX コンソール編集者に付与します。
  • Google Cloud コンソールを使用するすべての Dialogflow リソースに対する完全なアクセス権。
  • Dialogflow コンソールを使用して、ほとんどのエージェント データに対して編集アクセスを行うことができます。
  • API を使用してインテントを検出できます。
Dialogflow IAM ロールの定義をご覧ください。
Dialogflow >
Dialogflow API 読み取り
API を使用して Dialogflow 固有の読み取り専用呼び出しを実行する Dialogflow API クライアントに付与します。
  • Google Cloud コンソールまたは API を使用した、すべての Dialogflow リソースに対する読み取りアクセス権。
  • Dialogflow コンソールを使用したエージェントへの読み取りアクセス権では、シミュレータを使用できません。
  • API を使用してインテントを検出することはできません。
Dialogflow IAM ロールの定義をご覧ください。
ディスカバリー エンジン管理者 Vertex AI Conversation ユーザー インターフェースを使用してデータストア エージェントを作成するユーザーに付与します。 その他のロールの定義をご覧ください。

OAuth

Google クライアント ライブラリを使用して Dialogflow にアクセスする場合、OAuth を直接使用する必要はありません。これらのライブラリが実装を自動的に処理します。ただし、独自のクライアントを実装する場合は、独自の OAuth フローの実装が必要になる場合があります。Dialogflow API にアクセスするには、次のいずれかの OAuth スコープが必要です。

  • https://www.googleapis.com/auth/cloud-platform (すべてのプロジェクト リソースへのアクセス)
  • https://www.googleapis.com/auth/dialogflow (Dialogflow リソースへのアクセス)

Cloud Storage へのアクセスに関連するリクエスト

一部の Dialogflow リクエストは、データの読み取りと書き込みのために Cloud Storage 内のオブジェクトにアクセスします。これらのリクエストのいずれかを呼び出すと、Dialogflow は呼び出し元の代わりに Cloud Storage データにアクセスします。つまり、リクエスト認証には、Dialogflow と Cloud Storage オブジェクトにアクセスする権限が必要です。

Google クライアント ライブラリと IAM 役割を使用する場合、Cloud Storage の役割の情報にはCloud Storage アクセス制御ガイドをご覧ください。

独自のクライアントを実装し、OAuth を使用する場合は、次の OAuth スコープを使用する必要があります。

  • https://www.googleapis.com/auth/cloud-platform (すべてのプロジェクト リソースへのアクセス)