アクセス制御

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

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

Identity and Access Management(IAM)または Dialogflow コンソールを使用してアクセスを制御できます。

Dialogflow コンソールでは、エージェントを作成したユーザーにエージェント管理者の役割が提供されます。このユーザーには、エージェントに関連付けられたプロジェクトの IAM プロジェクト オーナーのロールが自動的に付与されます。

エージェント管理者は、Dialogflow コンソールでエージェントにデベロッパーとクチコミ投稿者を追加できます。Dialogflow コンソールでデベロッパー ロールまたはクチコミ投稿者のロールが付与されると、ユーザーにはそれぞれ IAM プロジェクト編集者のロールまたは IAM プロジェクト閲覧者のロールが付与されます。デベロッパーとクチコミ投稿者をエージェントに追加する別の方法として、Google Cloud コンソールでユーザーに、対応する IAM プロジェクト編集者ロールまたは IAM プロジェクト閲覧者ロールを付与することもできます。

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

  • 管理者の変更、1 つのエージェントへの複数の管理者の追加、1 つのエージェントの管理者の削除を行う場合は、Google Cloud コンソールを使用する必要があります。
  • 他の Google Cloud リソース(Cloud Functions など)を統合していて、プロジェクトに対する完全なアクセス権をアプリケーションに付与したくない場合は、IAM の Google Cloud コンソールで Dialogflow API ロール(管理者、クライアント、または読み取り)を割り当てる必要があります。
  • IAM ロールのサブセットには、対応する Dialogflow コンソールのロールがあります。Dialogflow コンソールに存在しないロールを付与するには、Google Cloud コンソールを使用する必要があります。

ロール

次の表に、Dialogflow に関連する一般的なロール、Dialogflow コンソールのロールと IAM ロールの相関関係、権限の詳細を示します。

表中の権限の概要では、次の用語を使用します。

  • 完全なアクセス権: アクセス権の変更と、リソースの作成、削除、読み取りを行うための権限。
  • 編集権限: リソースの作成、削除、編集、読み取りを行うための権限。
  • セッション アクセス: インテントの検出、コンテキストの更新、セッション エンティティの更新、Agent Assist 会話インタラクションなど、会話中にランタイムのみのリソースのメソッドを呼び出すための権限。このアクセス権は、フルアクセス権と編集アクセス権のサブセットを提供します。
  • 読み取りアクセス権: リソースの読み取り権限。
Dialogflow コンソールの役割 IAM ロール 権限の概要 権限の詳細
管理 プロジェクト >
オーナー
すべての Google Cloud および Dialogflow リソースに対する完全アクセス権を必要とするプロジェクト オーナーに付与します。
  • Google Cloud コンソールまたは API を使用して、すべての Google Cloud プロジェクトのリソースに完全にアクセス可能です。
  • Dialogflow コンソールを使用した、エージェントに対する完全なアクセス権限。
  • API を使用してインテントを検出できます。
  • 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 ポリシーなど、プロジェクトの階層を参照するための読み取りアクセス権が必要なプロジェクト参照者に付与します。
  • 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 コンソール編集者に付与します。
  • Google Cloud コンソールを使用するすべての Dialogflow リソースに対する完全なアクセス権。
  • Dialogflow コンソールを使用して、ほとんどのエージェント データに対して編集アクセスを行うことができます。Cloud Functions または Google アシスタントを統合するためのインライン エディタにはアクセスできません。
  • API を使用してインテントを検出できます。
Dialogflow IAM ロールの定義をご覧ください。
なし Dialogflow >
Dialogflow API 読み取り
API を使用して Dialogflow 固有の読み取り専用呼び出しを実行する Dialogflow API クライアントに付与します。
  • Google Cloud コンソールまたは API を使用した、すべての Dialogflow リソースに対する読み取りアクセス権。
  • Dialogflow コンソールを使用したエージェントへの読み取りアクセス権では、シミュレータを使用できません。
  • API を使用してインテントを検出することはできません。
Dialogflow IAM ロールの定義をご覧ください。

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

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

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

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

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

メンバーを追加するには:

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

権限を変更する

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

メンバーを削除する

  1. メンバーの削除ボタン()をクリックします。

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

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

  1. Dialogflow ES コンソールに移動します。
  2. 左側のサイドバー メニューの上部付近でエージェントを選択します。
  3. エージェント名の横にある設定ボタン()をクリックします。
  4. [Share] タブをクリックします。必要とされるエージェント管理者のロールを持たない場合は、[Share] タブが表示されません。

アクセスレベルとともにユーザーを表示する[Share] タブ。

ユーザーを追加する

  1. [Invite New People] の下に、ユーザーのメールアドレスを入力します。
  2. 役割を選択します。
  3. [追加] をクリックします。
  4. [保存] をクリックします。

権限を変更する

  1. 対象とするユーザーをリスト内で見つけます。
  2. 別の役割を選択します。
  3. [保存] をクリックします。

ユーザーを削除する

  1. 対象とするユーザーをリスト内で見つけます。

  2. ユーザーの削除ボタン()をクリックします。

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

サービス アカウントの自動作成

エージェントを作成して使用すると、Dialogflow によっていくつかのサービス エージェントが自動的に作成されます。

これらのサービス エージェントに付与されているロールを表示するには、IAM ページで [Google 提供のロール付与を含める] オプションを有効にします。

これらのサービス エージェントについては、キーの削除、編集、ダウンロードを行わないでください。このようなサービス エージェントを使用して API を直接呼び出さないでください。これらの名前は、エージェントで使用されるさまざまな Google Cloud サービスへの接続に Dialogflow サービスによってのみ使用されます。特定の Dialogflow 機能の構成時に、メールでこれらのサービス エージェントを参照する必要がある場合があります。

次の表では、これらのサービス エージェントの一部を示します。

IAM メールフォーム 目的
service-project-number
@gcp-sa-dialogflow.iam.gserviceaccount.com
エージェントを統合トラフィックを処理するサービスに接続するために使用します。
firebase-adminsdk-alphanum
@project-id.iam.gserviceaccount.com
エージェントをGoogle アシスタントの統合トラフィックを処理するサービスに接続するために使用します。
project-id
@appspot.gserviceaccount.com
エージェントをGoogle アシスタントの統合トラフィックを処理するサービスに接続するために使用します。

管理者ロールの転送

エージェントの管理者ロールを転送するには、既存の管理者が上記の手順に沿って新しい管理者を追加する必要があります。新しい管理者が付与されたロールを受け入れたら、古い管理者を削除しても安全です。

既存の管理者が退職し、管理者のロールを別の従業員に転送する必要がある場合は、次の 2 つの方法があります。

  • エージェントのプロジェクトに関連付けられている組織の管理者が、エージェントの管理者を変更する権限を持つ。
  • エージェントに対する読み取り権限がある場合は、エージェントをエクスポートして、目的の従業員が管理者になっているエージェントにインポートできます。エージェントが移行され、統合が更新される間、本番環境で動作しているエージェントでダウンタイムが発生する可能性があります。

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 (すべてのプロジェクト リソースへのアクセス)