访问权限控制

多名团队成员在构建代理时通常会进行协作,并且服务会访问代理。使用角色,您可以控制授予对象的访问权限和权限 主账号

如果您使用的是 API,则您可能还有一个或多个向代理发送请求的应用。在这种情况下,您可以使用服务账号来控制访问权限。

您可以使用以下任一方法控制访问权限: Identity and Access Management (IAM)Dialogflow 控制台

Dialogflow 控制台为创建代理的用户提供 Agent Admin 角色。此用户会自动获得与代理关联的项目中的 IAM Project Owner 角色。

代理管理员可以在 Dialogflow 中将开发者和审核者添加到代理 控制台。在 Dialogflow 中授予 Developer 或 Reviewer 角色时 控制台,用户将获得 IAM Project Editor 角色或 IAM Project Viewer 角色。如需向代理添加开发者和审核者,您还可以通过在 Google Cloud 控制台中向用户授予相应的 IAM Project Editor 或 IAM Project Viewer 角色来实现。

在某些情况下,您必须使用 Google Cloud 控制台:

  • 如果您想要更改管理员,请为一个代理添加多个管理员, 或移除某个代理的管理员 您需要使用 Google Cloud 控制台。
  • 如果您与其他 Google Cloud 资源(例如 Cloud Functions)进行了集成, 而您又不想授予对应用的完整项目访问权限 您必须分配 Dialogflow API 角色 (管理员、客户端或读取者)。
  • 一部分 IAM 角色具有相应的 Dialogflow 控制台角色。 如果要授予 Dialogflow 控制台上不存在的角色,则需要使用 Google Cloud 控制台。

角色

下表列出了与 Dialogflow 相关的常见角色、 Dialogflow 控制台角色与 IAM 角色之间的定义,以及 与权限有关的详细信息

表中的权限总结使用以下术语:

  • 完整访问权限: 拥有修改访问权限,以及创建、删除、修改和读取任何资源的权限。
  • 修改权限:创建、删除、修改和读取任何资源的权限。
  • 会话访问权限: 在如下对话期间调用运行时专用资源方法的权限: 检测意图、更新上下文、更新会话实体、 或 Agent Assist 对话互动。 此访问权限提供完整访问权限和修改访问权限中包含的部分权限。
  • 读取权限:读取任何资源的权限。
Dialogflow 控制台角色 IAM 角色 权限总结 权限详细信息
Admin Project >
Owner
向需要所有 Google Cloud 和 Dialogflow 资源的完整访问权限的项目所有者授予:
  • 使用 Google Cloud 控制台或 API 拥有对所有 Google Cloud 项目资源的完整访问权限。
  • 使用 Dialogflow 控制台完整访问代理的权限。
  • 使用 API 检测意图的权限。
  • 可以在 Dialogflow 控制台中更改代理版本,也可以使用 API 进行更改。
请参阅 IAM 基本角色定义
开发者 Project >
Editor
向需要所有 Google Cloud 和 Dialogflow 的资源编辑权限的项目修改者授予:
  • 拥有使用 Google Cloud 控制台或 API 修改所有 Google Cloud 项目资源的权限。
  • 使用 Dialogflow 控制台修改代理的权限。
  • 使用 API 检测意图的权限。
请参阅 IAM 基本角色定义
审核者 Project >
Viewer
向需要所有 Google Cloud 和 Dialogflow 资源读取权限的项目查看者授予:
  • 使用 Google Cloud 控制台或 API 读取所有 Google Cloud 项目资源的权限。
  • 拥有使用 Dialogflow 控制台或 API 读取代理的权限,无法使用模拟器。
  • 无权使用 API 检测意图。
请参阅 IAM 基本角色定义
Project >
Browser
向需要读取权限以浏览项目层次结构(包括文件夹、组织和 IAM 政策)的项目浏览者授予:
  • 拥有对 Google Cloud 项目层次结构的读取权限。
  • 无权使用 Dialogflow 控制台访问代理。
  • 无权使用 API 检测意图。
请参阅 IAM 项目角色定义
不适用 Dialogflow >
Dialogflow API Admin
向需要 Dialogflow 特定资源完整访问权限的 Dialogflow API 管理员授予:
  • 使用 Google Cloud 控制台或 API 完整访问所有 Dialogflow 资源的权限。
  • 使用 Dialogflow 控制台读取代理的权限。
  • 使用 API 检测意图的权限。
请参阅 Dialogflow IAM 角色定义
Dialogflow >
Dialogflow API Client
授予 Dialogflow API 客户端 使用 API 执行检测意图调用:
  • 使用 Dialogflow 模拟器或 API 对运行时 Dialogflow 资源的会话访问权限。
  • 使用 Dialogflow 控制台访问代理的权限受到限制。
  • 使用 API 检测意图的权限。
请参阅 Dialogflow IAM 角色定义
Dialogflow >
Dialogflow Console Agent Editor
向修改现有代理的 Dialogflow 控制台编辑者授予:
  • 使用 Google Cloud 控制台完整访问所有 Dialogflow 资源的权限。
  • 使用 Dialogflow 控制台修改大部分代理数据的权限。 无权访问內嵌编辑器以集成 Cloud Functions 或 Google 助理。
  • 使用 API 检测意图的权限。
请参阅 Dialogflow IAM 角色定义
Dialogflow >
Dialogflow API Reader
向使用 Dialogflow API 执行 Dialogflow 特定只读调用的 Dialogflow API 客户端授予:
  • 使用 Google Cloud 控制台或 API 读取所有 Dialogflow 资源的权限。
  • 使用 Dialogflow 控制台读取代理的权限,但无法使用模拟器。
  • 无权使用 API 检测意图。
请参阅 Dialogflow IAM 角色定义

使用 Google Cloud 控制台控制访问权限

您可以使用 IAM 设置来控制访问权限。如需详细了解添加、修改和移除权限的说明,请参阅 IAM 快速入门

要访问以下设置,请打开 Google Cloud 控制台中的 IAM 页面。

将用户或服务账号添加到项目中

您可以为用户或服务账号提供权限 向其授予您的 Google Cloud 项目中的角色。 添加用户的方法是提供该用户的电子邮件地址。 同样,添加服务账号的方法是提供与该服务账号关联的电子邮件地址。 如果要针对多个项目和代理使用一个服务账号,则需要添加服务账号成员。 如需查找与您的服务账号关联的电子邮件地址,请参阅 IAM Google Cloud 控制台中的服务账号页面。

要添加成员,请执行以下操作:

  1. 点击页面顶部的添加 按钮。
  2. 输入该成员的电子邮件地址。
  3. 选择角色。
  4. 点击保存

更改权限

  1. 点击该成员对应的修改 按钮。
  2. 选择其他角色。
  3. 点击保存

移除成员

  1. 点击该成员对应的删除 按钮。

通过 Dialogflow 控制台控制访问权限

共享选项位于代理的设置中。 要打开代理共享设置,请执行以下操作:

  1. 转到 Dialogflow ES 控制台
  2. 在左侧边栏菜单顶部附近选择您的代理。
  3. 点击代理名称旁边的设置 按钮。
  4. 点击共享标签页。如果您没有看到分享标签页, 这是因为您没有所需的 Agent Admin 角色。

显示用户及其访问权限级别的“共享”标签页。

添加用户

  1. 邀请新人员下方输入用户的电子邮件地址。
  2. 选择角色。
  3. 点击添加
  4. 点击保存

更改权限

  1. 在列表中查找该用户。
  2. 选择其他角色。
  3. 点击保存

移除用户

  1. 在列表中查找该用户。

  2. 点击该成员对应的删除 按钮。

  3. 点击保存

自动创建的服务账号

在创建和使用代理时, Dialogflow 会创建一些服务代理, 。

如需查看已授予这些服务代理的角色,请启用包括 Google 提供的角色授权 选择 IAM 页面

您不应删除、修改或下载其中任何服务代理的密钥,也不应使用这些服务代理进行直接 API 调用。它们只能由 Dialogflow 服务用于连接到代理使用的各种 Google Cloud 服务。配置某些 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 助理集成流量的服务。

转移管理员角色

如需转移代理的管理员角色,现有管理员需要按照步骤操作(见上文)来添加新的管理员。一旦新管理员接受被授予的角色 可以放心移除旧管理员。

如果现任管理员已从贵组织离职, 并且您需要将管理员角色转移给其他员工, 您有两种选择:

  • 组织 拥有修改代理管理员的权限。
  • 如果您拥有代理的读取权限, 您可以导出代理,也可以导入到目标员工为管理员的代理。 如果代理已迁移并且所有集成服务都已更新,这可能会造成实时生产代理的停机时间。

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 (有权访问所有项目资源)