排查已签名嵌入 404、权限和内容访问问题

当用户尝试访问嵌入的内容时,可能会看到以下错误消息:

找不到您请求的信息中心。该文件夹不存在,或者您无权查看。

本页介绍了如何排查此错误并在日后避免出现此错误,从而为开发者和用户节省时间并避免不必要的麻烦。

排查错误

错误消息会说明后续要验证的内容。从本质上讲,已签名的嵌入网址成功创建并对嵌入用户进行了身份验证,但出现了以下两种情况之一:

  • 内容的路径已损坏。
  • 嵌入网址中指定的权限和内容访问权限不允许嵌入用户查看嵌入内容。

管理面板的平台部分中嵌入页面上的嵌入 URI 验证工具通常用于排查嵌入网址问题。不过,由于该验证工具仅用于验证嵌入网址是否有效且能否完成身份验证步骤,因此您可以执行以下问题排查步骤,确认是哪种问题:

  1. 验证内容路径是否正确。
  2. 验证内容是否存在。
  3. 验证嵌入网址的权限。
  4. 验证用户的内容访问权限。

1. 验证内容路径是否正确

使用此方法可确定内容的路径是否损坏。内容路径的指定位置可能会因用于生成签名嵌入网址的方法而异。在大多数脚本中,都有一个用于定义路径的部分。例如,如需嵌入名称为 123 的信息中心,您可以使用路径 /embed/dashboards/123

使用已签名嵌入文档页面嵌入网址部分中的示例,确认路径是否定义正确。

如果您使用 Create Signed Embed Url API 端点生成网址,则同一信息中心的目标网址参数将如下所示:

https://instance_name.looker.com<:optional_port>/dashboards/123

仔细检查嵌入网址生成脚本中是否正确定义了路径。

2. 验证内容是否存在

验证内容路径是否定义正确后,请管理员确认内容是否存在于该路径中。默认情况下,管理员会绕过内容访问权限和权限限制,例如,可能阻止开发者查看内容的限制。如果管理员无法在该路径中看到内容,则表示该内容不存在于该路径中。

如果管理员可以看到该路径中的内容,则可能是因为未向嵌入用户授予正确的权限或内容访问权限。如需确定是否存在这种情况,管理员可以在管理面板的用户页面上找到相应用户,然后选择内嵌的 Sudo 选项。

通过以其他用户身份登录,管理员可以查看该用户在其所拥有的权限、内容访问权限和用户属性下看到的内容。如果管理员在以嵌入用户身份使用 sudo 命令时无法再看到相应内容,则需要采取进一步措施来排查用户的权限和内容访问问题。

确认内容存在且嵌入用户无法看到该内容后,接下来要检查嵌入网址的权限和用户的内容访问权限。如果这两项中的任一项配置错误,都可能会导致用户无法看到嵌入的内容。

3. 验证嵌入网址的权限

在下一步中,您可以确定嵌入网址中指定的权限是否不允许嵌入用户查看嵌入内容。Looker 中的权限是累加的,用户需要同时拥有多项权限才能查看内容。例如,在查看嵌入的用户定义信息中心时,嵌入用户至少需要拥有 access_datasee_lookssee_user_dashboards 权限才能查看该信息中心。 在此步骤中,仔细检查在网址定义中向嵌入用户授予的权限,并确定是否缺少任何权限的依赖项。然后,检查嵌入网址中分配给用户的角色。

您可以通过以下两种方式之一创建嵌入用户的角色:使用已签名的嵌入网址中的权限和模型集访问权限,或者使用用户被分配到的群组(如果这些群组与任何角色相关联)。通过这两种方式创建的角色是累加的,就像常规 Looker 环境中的角色一样。检查网址规范中分配给嵌入用户的群组(以及群组继承的角色)。

提示:将嵌入用户的权限和模型访问权限信息集中在一个位置(Looker 组的角色分配或已签名的嵌入网址规范)有助于减少您在排查用户问题时需要检查的额外变量数量。例如,如果公司在分配嵌入用户权限时利用与组 ID 关联的角色,除了在已签名脚本中定义权限之外,嵌入用户信息还会存储在 Looker 和父级应用(通过已签名网址脚本)中,而不是存储在其中一个中。有时,负责为嵌入用户管理角色的 Looker 管理员无权访问父级应用中的嵌入网址生成脚本,因此无法彻底排查问题。在这种情况下,为权限和模型参数传递一个空数组,并通过群组分配来专门控制角色,可能会很有帮助。

接下来,在管理面板的用户页面上找到相应用户,然后选择查看,确认系统已正确向该用户分配指定或继承的角色和权限。

需要注意的是,嵌入用户无权使用普通 Looker 用户拥有的所有权限。如需查看嵌入权限的完整列表,请参阅已签名嵌入文档页面。

4. 验证用户的内容访问权限

确认嵌入用户具有正确的权限和角色分配后,您需要检查用户的内容访问权限。为此,请验证以下信息:

  • 嵌入的内容保存在哪个文件夹中?
  • 嵌入用户或嵌入用户所属的群组是否有权访问此文件夹 (View or Manage, Edit)?

如需确认内容保存在哪个文件夹中,最快的方法是在常规 Looker 环境中查看内容,然后在内容标题中找到文件夹名称。转到该文件夹后,选择右上角“管理访问权限”下方的齿轮图标 。您可以通过向特定嵌入用户 View 授予对文件夹的访问权限,快速确定 404 错误是否由内容访问问题导致。

如果未向嵌入用户(或分配给他们的已签名嵌入群组 ID 的群组)授予访问权限,该用户将无法查看保存在该文件夹中的任何内容。此时,管理员(或已获授予对相应文件夹的 Manage Access, Edit 权限的非管理员)可以更改内容访问权限设置,以添加嵌入用户或用户群组。

如果信息中心已复制并存在于多个文件夹中,可能会出现一个常见的复杂问题。信息中心的每个副本都有一个唯一 ID,因此请确保要嵌入的信息中心与用户预期访问的信息中心具有相同的 ID。您可以在信息中心的网址中验证 ID,网址格式如下:

~/embed/dashboards/<specific_content_id>

封闭式系统

在检查内容访问权限方面,封闭系统属于特殊情况。封闭的系统会将内容存储在各个群组的孤岛中。对于每项“Powered By Looker”部署(嵌入式分析),通常建议采用实现封闭系统的最佳实践。这种系统的主要优势在于,它会彻底移除所有用户群组,将所有个人文件夹设为私享,并阻止用户在实例中看到其他用户或其内容(除非所有用户都属于同一群组)。这会为多个客户端有效创建一个多租户实例,这样一来,除非获得明确授权,否则这些客户端无法访问其他用户的内容或信息。

仔细检查受影响的嵌入用户是否属于正确的 Looker 群组;否则,他们将无法查看其所在组织的任何内容。

如果您想为实例启用封闭式系统,请与 Google Cloud 销售专员联系或创建支持请求