多名团队成员在构建代理时通常会进行协作,并且服务会访问代理。使用角色,您可以控制授予正文的访问权限和操作权限。
如果您使用的是 API,则您可能还有一个或多个向代理发送请求的应用。在这种情况下,您可以使用服务账号来控制访问权限。
您可以使用 Identity and Access Management (IAM) 或 Dialogflow 控制台来控制访问权限。
Dialogflow 控制台为创建代理的用户提供 Agent Admin 角色。此用户会自动获得与代理关联的项目中的 IAM Project Owner 角色。
代理管理员可以在 Dialogflow 控制台中向代理添加开发者和审核员。在 Dialogflow 控制台中授予“开发者”或“审核者”角色后,用户将分别获得 IAM Project Editor 角色或 IAM Project Viewer 角色。如需向代理添加开发者和审核者,您还可以通过在 Google Cloud 控制台中向用户授予相应的 IAM Project Editor 或 IAM Project Viewer 角色来实现。
在某些情况下,您必须使用 Google Cloud 控制台:
- 如果要更改 Admin、为一个代理添加多个 Admin,或者为代理移除 Admin,则需要使用 Google Cloud 控制台。
- 如果您集成了其他 Google Cloud 资源(如 Cloud Functions),并且不希望为应用授予项目的完整访问权限,则必须在 Google Cloud 控制台中为 IAM 分配 Dialogflow API 角色(Admin、Client 或 Reader)。
- 一部分 IAM 角色具有相应的 Dialogflow 控制台角色。 如果要授予 Dialogflow 控制台上不存在的角色,则需要使用 Google Cloud 控制台。
角色
下表列出了与 Dialogflow 相关的常见角色、Dialogflow 控制台角色与 IAM 角色之间的关联,以及权限的详细信息。
表中的权限总结使用以下术语:
- 完整访问权限:修改访问权限以及创建、删除、修改和读取任何资源的权限。
- 修改权限:创建、删除、修改和读取任何资源的权限。
- 会话访问权限:在对话期间调用仅限运行时的资源的方法的权限,例如检测 intent、更新上下文、更新会话实体或 Agent Assist 对话互动。此访问权限提供完整访问权限和修改访问权限中包含的部分权限。
- 读取权限:读取任何资源的权限。
Dialogflow 控制台角色 | IAM 角色 | 权限总结 | 权限详细信息 |
---|---|---|---|
Admin | Project > Owner |
向需要所有 Google Cloud 和 Dialogflow 资源的完整访问权限的项目所有者授予:
|
请参阅 IAM 基本角色定义。 |
开发者 | Project > Editor |
向需要所有 Google Cloud 和 Dialogflow 的资源编辑权限的项目修改者授予:
|
请参阅 IAM 基本角色定义。 |
审核者 | Project > Viewer |
向需要所有 Google Cloud 和 Dialogflow 资源读取权限的项目查看者授予:
|
请参阅 IAM 基本角色定义。 |
无 | Project > Browser |
向需要读取权限以浏览项目层次结构(包括文件夹、组织和 IAM 政策)的项目浏览者授予:
|
请参阅 IAM 项目角色定义。 |
不适用 | Dialogflow > Dialogflow API Admin |
向需要 Dialogflow 特定资源完整访问权限的 Dialogflow API 管理员授予:
|
请参阅 Dialogflow IAM 角色定义。 |
无 | Dialogflow > Dialogflow API Client |
向使用 API 执行检测 intent 调用的 Dialogflow API 客户端授予:
|
请参阅 Dialogflow IAM 角色定义。 |
无 | Dialogflow > Dialogflow Console Agent Editor |
向修改现有代理的 Dialogflow 控制台编辑者授予:
|
请参阅 Dialogflow IAM 角色定义。 |
无 | Dialogflow > Dialogflow API Reader |
向使用 Dialogflow API 执行 Dialogflow 特定只读调用的 Dialogflow API 客户端授予:
|
请参阅 Dialogflow IAM 角色定义。 |
使用 Google Cloud 控制台控制访问权限
您可以使用 IAM 设置来控制访问权限。如需详细了解添加、修改和移除权限的说明,请参阅 IAM 快速入门。
如需访问以下设置,请打开 Google Cloud 控制台中的 IAM 页面。
将用户或服务账号添加到项目中
您可以通过向用户或服务账号授予 Google Cloud 项目的角色来向其提供权限。添加用户的方法是提供该用户的电子邮件地址。 同样,添加服务账号的方法是提供与该服务账号关联的电子邮件地址。 如果要针对多个项目和代理使用一个服务账号,则需要添加服务账号成员。 如需查找与您的服务账号关联的电子邮件地址,请参阅 Google Cloud 控制台中的 IAM 服务账号页面。
要添加成员,请执行以下操作:
- 点击页面顶部的添加 按钮。
- 输入该成员的电子邮件地址。
- 选择角色。
- 点击保存。
更改权限
- 点击该成员对应的修改 按钮。
- 选择其他角色。
- 点击保存。
移除成员
- 点击该成员对应的删除 按钮。
通过 Dialogflow 控制台控制访问权限
共享选项位于代理的设置中。 要打开代理共享设置,请执行以下操作:
- 前往 Dialogflow ES 控制台。
- 在左侧边栏菜单顶部附近选择您的代理。
- 点击代理名称旁边的设置 按钮。
- 点击共享标签页。如果您没有看到共享标签页,则是因为您没有所需的代理管理员角色。
添加用户
- 在邀请新人员下方输入用户的电子邮件地址。
- 选择角色。
- 点击添加。
- 点击保存。
更改权限
- 在列表中查找该用户。
- 选择其他角色。
- 点击保存。
移除用户
在列表中查找该用户。
点击该成员对应的删除
按钮。点击保存。
自动创建的服务账号
创建并使用代理时,Dialogflow 会自动创建一些服务代理。
如需查看授予这些服务代理的角色,请在 IAM 页面上启用收录的 Google 提供的角色授权选项。
您不应删除、修改或下载其中任何服务代理的密钥,也不应使用这些服务代理进行直接 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
(对所有项目资源的访问权限)