多个团队成员在构建代理时进行协作,而服务访问代理的情况很常见。 使用角色,您可以控制授予主帐号的访问权限和权限。
如果您使用的是 API,则您可能还有一个或多个向代理发送请求的应用。在这种情况下,您可以使用服务账号来控制访问权限。
您可以使用身份和访问权限管理 (IAM) 或 Dialogflow 控制台来控制访问权限。在以下情况下,您必须使用 Google Cloud 控制台:
- Dialogflow 控制台为创建代理的用户提供 Agent Admin (IAM Project Owner) 角色。如果要更改管理员、为一个代理添加多个管理员或移除某个代理的管理员,您需要使用 Google Cloud 控制台。
- 如果您集成了其他 Google Cloud 资源(例如 Cloud Functions),并且不想授予对应用的完整项目访问权限,则必须在 Google Cloud 控制台中为 IAM 分配 Dialogflow API 角色(Admin、Client 或 Reader)。
- 一部分 IAM 角色具有相应的 Dialogflow 控制台角色。 如果要授予 Dialogflow 控制台上不存在的角色,则需要使用 Google Cloud 控制台。
角色
下表列出了与 Dialogflow 相关的常见角色。 表中的权限总结使用以下术语:
- 完整访问权限:拥有修改、创建、删除、修改和读取任何资源的访问权限。
- 修改权限:拥有创建、删除、修改和读取任何资源的权限。
- 会话访问权限:有权在对话期间调用运行时专用资源的方法,例如检测意图、更新上下文、更新会话实体或 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 执行检测意图调用的 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 控制台。
- 在左侧边栏菜单顶部附近选择您的代理。
- 点击代理名称旁边的设置 按钮。
- 点击共享标签页。如果您没有所需的 Agent Admin 角色,则无法看到共享 (Share) 标签页。
添加用户
- 在邀请新人员下方输入用户的电子邮件地址。
- 选择角色。
- 点击添加。
- 点击保存。
更改权限
- 在列表中查找该用户。
- 选择其他角色。
- 点击保存。
移除用户
在列表中查找该用户。
点击该成员对应的删除
按钮。点击保存。
自动创建的服务账号
当您创建和使用代理时,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
(有权访问所有项目资源)