排查已签名嵌入 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 权限才能查看。 在此步骤中,请仔细检查网址定义中向嵌入用户授予的权限,并确定是否缺少任何权限的dependencies。然后,检查嵌入网址中分配给用户的角色。

可以通过以下两种方式之一创建嵌入用户的角色:在已签名的嵌入网址中具有权限和模型设置访问权限;或者对用户被分配给的群组(如果这些群组具有与之关联的任何角色)来创建嵌入用户角色。通过这两种方式之一创建的角色是累加的,与常规 Looker 环境中的角色相同。在网址规范中检查将嵌入用户分配到的一个或多个群组(以及该群组或群组继承的角色)。

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

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

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

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

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

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

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

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

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

~/embed/dashboards/<specific_content_id>

封闭式系统

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

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

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