管理员设置 - Google 身份验证

通过管理菜单的身份验证部分中的 Google 身份验证页面,您可以在 Looker 端设置 Google OAuth。

功能概览

Looker 可以使用 Google OAuth 为在 Google Google Workspace 中注册了账号的用户执行身份验证。

  • 使用 Google Google Workspace 的组织可以对拥有 Google 账号的 Looker 用户进行身份验证。
  • 用户通过 Google 账号进行身份验证来登录 Looker。
  • 新的 Google 账号会自动获得 Looker 的访问权限。无需单独邀请用户加入 Looker。您为新用户设置了默认角色,这可能会限制他们对功能和数据的访问权限。
  • 组织可以配置 Google 群组镜像,以便根据 Google 群组成员资格自动分配 Looker 角色和群组。
  • 启用后,Looker 仅通过 Google OAuth 对用户进行身份验证,除非选择了“备用登录”选项(请参阅下文中的在启用 Google 身份验证的同时启用电子邮件登录)。
  • 用户的 Google 头像会显示在导航栏中,而不是标准用户符号。
  • 启用 Google OAuth 后,Looker 实例可以将现有用户账号与 Google 注册的网域合并,但仅限邮箱与该网域匹配的账号。所有其他非管理员账号都将无法登录。
  • 指定网域中的所有用户都可以访问 Looker 实例。
  • 新 Google 用户的权限默认为对指定模型列表的基本访问权限(也可以选择不授予任何模型的访问权限)。账号创建后,管理员可以更新权限。
  • 使用 Google OAuth 进行身份验证的新 Looker 账号无法切换到密码身份验证,即使 Looker 实例已停用 OAuth 也是如此。

初步要求

使用 Google OAuth 需要满足以下条件:

  • 组织的 Google Workspace 账号。
  • 由组织控制并在 Google Google Workspace 账号中注册的网域。
  • 邮箱位于与 Google 账号关联的网域中的用户。
  • 每位用户都必须在 Google Google Workspace 中拥有一个受管理的用户账号。如需查找和迁移任何使用非受管用户账号的用户,请使用非受管用户转移工具。

如需使用 Google 群组镜像,还需满足以下额外要求:

  • 在包含 OAuth 客户端的 Google Cloud 项目中,必须启用 Cloud Identity API (cloudidentity.googleapis.com)。
  • 对于客户托管的 Looker 实例,实例主机必须能够通过 HTTPS (cloudidentity.googleapis.com:443) 访问互联网。
  • 用户必须对其所属的 Google 群组拥有 VIEW_MEMBERSHIP 权限。在 Google 群组设置中,将谁可以查看成员字段设置为群组成员。
  • 处于符合 FIPS 标准的模式下的 Looker 实例不支持 Google 群组镜像。

启用 Google OAuth 身份验证

如需启用 Google OAuth 身份验证,管理员需要同时在 Google 端和 Looker 端执行相关步骤,具体如下所述。

在 Google 端进行设置

本部分介绍了在 Google 端启用 Google OAuth 的步骤。如需查看这些步骤的通用说明,请参阅设置 OAuth 2.0 的 Google 支持页面。您还可以参阅 Google Cloud 控制台帮助文档。

  1. 前往 Google Cloud 控制台。

  2. 点击选择项目下拉菜单中的向下箭头。您可能会在下拉菜单中看到现有项目的名称;无论如何,请点击向下箭头,系统会显示创建新项目的选项。

  3. 在选择项目页面中,点击新建项目。

    Google Cloud 控制台会显示新建项目页面。

  4. 填写新建项目页面上的信息,然后点击创建。

    Google Cloud 控制台创建完新项目后,Google 会将您返回到 Google Cloud 控制台并显示您的新项目。

  5. 可选:如果您计划使用 Google 群组镜像,请在 Google Cloud 项目中启用 Cloud Identity API。启用此 API 后,当您配置 OAuth 权限请求页面时,https://www.googleapis.com/auth/cloud-identity.groups.readonly 范围会显示。您必须拥有 Service Usage Admin (roles/serviceusage.serviceUsageAdmin) Identity and Access Management (IAM) 角色才能启用 API。

    启用 API

  6. 在左侧菜单中,依次选择 API 和服务 > 凭证。

  7. 在凭证页面上,点击创建凭证按钮,然后从下拉菜单中选择 OAuth 客户端 ID。

    Google Cloud 控制台会显示创建 OAuth 客户端 ID 页面。

  8. Google Cloud 控制台要求您配置 OAuth 权限请求页面,以便用户选择如何授予对其私密数据的访问权限,并提供指向贵组织服务条款和隐私权政策的链接。点击配置权限请求页面。(如果您已为之前的项目配置 OAuth 同意,则不会看到此选项,您可以跳到第 13 步。)

    Google Cloud 控制台会显示 OAuth 权限请求页面。

  9. 在已获授权的网域字段中输入 Looker 实例的网域。例如,如果 Looker 在 https://mycompany.looker.com 托管您的实例,则网域为 looker.com。对于客户托管的 Looker 部署,请输入您托管 Looker 的网域。

  10. 配置 OAuth 权限请求页面,然后点击保存并继续。

  11. 在范围页面上,按如下方式配置范围:

    • 如果您打算使用 Google 群组镜像,请点击添加或移除范围。找到 https://www.googleapis.com/auth/cloud-identity.groups.readonly 范围,选中其旁边的复选框,然后点击更新。如果您没有看到此范围,请验证您是否已在Google Cloud 项目中启用 Cloud Identity API。
    • 如果您不打算使用 Google 群组镜像,则无需进行其他范围配置。

    点击保存并继续。

  12. 在摘要页面上,点击返回信息中心。

    Google Cloud 控制台会返回到创建 OAuth 客户端 ID 页面。

  13. 在应用类型下,选择网页应用。

  14. 在名称字段中,输入 OAuth 客户端 ID 的名称。

  15. 在已获授权的 JavaScript 来源字段中,输入 Looker 实例的网址,包括 https://。例如:

    • 如果 Looker 托管您的实例:https://mycompany.looker.com
    • 如果您使用的是客户托管的 Looker 实例:https://looker.mycompany.com
    • 如果您的 Looker 实例需要端口号:https://looker.mycompany.com:9999
  16. 在已获授权的重定向 URI 字段中,输入 Looker 实例的网址,后跟 /oauth2callback。例如:https://mycompany.looker.com/oauth2callback 或 https://looker.mycompany.com:9999/oauth2callback。

  17. 点击创建。

  18. 复制客户端 ID 和客户端密钥值,您需要使用这些值来配置 Looker。

在 Looker 端进行设置

如需在 Looker 端启用 Google OAuth,请按照以下步骤操作。

  1. 在 Looker 应用中,以管理员身份登录后,点击管理下拉菜单,打开管理菜单。

  2. 在身份验证组下,点击 Google。Looker 会显示 Google 身份验证页面。

  3. 点击已启用,以显示和修改 Google OAuth 设置。(这不会立即启用 Google 身份验证;您必须稍后确认您的选择)。

  4. 输入您的 Google 身份验证设置。

    • 客户端 ID 和客户端密钥 - 从 Google OAuth 客户端页面复制并粘贴这些值,如之前的 Google 设置说明中所述。
    • 域名 - 贵组织由 Google 管理的域名。指定网域中的任何 Google 用户都可以登录您的 Looker 实例。如果您控制多个 Google 域名,可以输入这些域名,并用英文逗号分隔。
  5. 输入迁移选项,用于控制 Looker 实例在过渡到 Google OAuth 期间的行为。

    • 管理员和指定用户的备用登录方式 - 允许管理员和指定用户继续使用邮箱和密码登录。如果托管 Looker OAuth 客户端的项目被删除或停用(即使在项目恢复后,也可能导致 401 deleted_client 错误),或者 Google OAuth 因其他原因而失败,此设置会启用关键后备方法,以防止完全锁定。 Google Cloud 强烈建议您启用此设置,如需了解详情,请参阅在启用 Google Auth 的同时启用电子邮件登录。
    • 合并用户 - 将在指定网域中拥有邮箱的现有用户转换为在下次登录时使用 Google OAuth(例如 Looker 邮箱/密码)。建议使用此设置。
    • 新用户的角色 - 指定新的非管理员用户拥有的功能和模型访问权限。此列表日后可以更新。如果留空,则新通过 Google 身份验证的用户在 Looker 平台内的功能将受到限制,直到管理员向其账号添加角色。由于您 Google 域名中的所有用户都将能够登录 Looker,因此请考虑为新用户指定一个默认角色,以适当限制其访问权限。
  6. 配置群组和角色,以选择性地将 Google 群组镜像到 Looker 群组并自动分配角色:

    如果您有受管理的 Google 群组,Looker 可以创建 Looker 群组,这些群组会镜像 Google 群组的成员资格,这意味着您无需直接在 Looker 中设置用户,而是可以通过管理 Google 群组的成员资格来管理用户访问权限。此外,您还可以使用 Looker 群组向群组成员分配角色、设置内容访问权限控制、控制功能和数据访问权限,以及分配用户属性。

    为确保群组镜像功能正常运行,用户必须对其所属的 Google 群组拥有 VIEW_MEMBERSHIP 权限,以便 Looker 在用户登录时检查其群组成员资格。如需在 Google 群组设置中授予此权限,请将谁可以查看成员字段设置为群组成员。

    如需启用群组镜像,请按以下步骤操作:

    1. 开启镜像 Google 群组切换开关。
    2. 点击管理群组,打开群组映射配置。
    3. 针对您要镜像的每个 Google 群组填写以下字段:
      • Looker 群组名称:输入 Looker 群组的名称。此名称会显示在 Looker 中的群组页面上。
      • Google 群组 ID:输入要镜像的 Google 群组的名称或邮箱。
      • 角色:选择一个或多个要分配给群组成员的 Looker 角色。

    Looker 会为您添加到配置中的每个 Google 群组创建一个 Looker 群组。您可以在 Looker 的群组页面上查看这些群组。

    当用户登录 Looker 实例时,Looker 会应用镜像 Looker 群组(以及任何关联的角色和访问权限)。Google 群组中的群组成员资格变更会在每位用户下次登录时更新。

创建 Google 群组的镜像

配置 Google 群组镜像后,您可以修改或停用镜像群组,并配置高级角色管理选项,如以下部分所述。

修改镜像组

当您更改 Google 群组成员资格时,这些更改会自动传播到镜像 Looker 群组的成员资格,并在每个用户下次登录时进行验证。

如果您在 Google 身份验证页面上修改分配给群组的 Looker 群组名称或角色,则会更改镜像群组在群组页面上的显示方式或分配给群组的角色,但不会更改群组成员。

如果您将 Google 群组 ID 字段中的名称或邮箱更改为新的 Google 群组 ID,则镜像 Looker 群组的成员会更改为新 Google 群组的成员,同时保留 Google 身份验证页面上定义的群组名称和角色。

当镜像群组的用户下次登录 Looker 时,Looker 会将您对该群组所做的任何修改应用到这些用户。

停用镜像组

如果您想停止在 Looker 中镜像 Google 群组,请在 Google 身份验证页面上关闭镜像 Google 群组切换开关。停用该切换开关会导致以下行为:

  • 任何没有用户的镜像 Google 群组都会立即被删除。
  • 任何确实包含用户的镜像 Google 群组都会被标记为孤立群组。无法再向孤立群组添加用户或从中移除用户。如果孤立群组中的用户在 31 天内均未登录,该群组将被删除。

高级角色管理

如果镜像 Google 群组切换开关处于启用状态,高级角色管理部分会显示一些选项,用于确定 Looker 管理员在配置从 Google 镜像的 Looker 群组和用户时可以有多严格。

如果您希望 Looker 群组和用户配置与 Google 群组配置严格匹配,请选择所有高级角色管理选项。启用所有选项后,Looker 管理员将无法直接修改镜像群组成员资格,只能通过 Google 群组向用户分配角色。

如果您希望在 Looker 中更灵活地自定义群组,请勿选中这些选项。您的 Looker 群组仍会镜像 Google 群组配置,但您可以在 Looker 中执行其他群组和用户管理操作,例如将 Google 用户添加到内置 Looker 群组,或直接向 Google 用户分配角色。

高级角色管理部分包含以下选项:

  • 禁止个别 Google 用户获得直接角色:开启此选项后,Looker 管理员将无法直接向 Google 用户分配 Looker 角色。Google 用户只能通过其群组成员资格获取角色。如果允许 Google 用户加入内置(非镜像)Looker 群组,他们仍然可以从镜像 Google 群组和内置 Looker 群组继承角色。之前直接分配了角色的所有 Google 用户在下次登录时,这些角色都将被移除。

  • 禁止直接加入非 Google 群组:此选项可防止 Looker 管理员将镜像群组的成员直接添加到不属于 Google 身份验证页面上镜像群组配置的内置 Looker 群组。

    如果选择此选项,则之前分配到内置 Looker 群组的所有 Google 用户在下次登录时都会从这些群组中移除。

    如果取消选中此选项,Looker 管理员可以直接将 Google 用户添加到内置 Looker 群组。

  • 禁止从非 Google 群组继承角色:此选项可防止镜像群组的成员从内置 Looker 群组继承角色。如果允许镜像 Google 群组成为内置 Looker 群组的成员,则 Google 用户可以保留内置 Looker 群组的成员资格,但之前从内置群组继承角色的任何 Google 用户在下次登录时都会失去这些角色。

    如果此选项处于未选中状态,则作为内置 Looker 群组成员添加的镜像群组或 Google 用户将继承分配给该内置群组的角色。

  • Auth Requires Role(身份验证需要角色):如果此选项处于开启状态,则 Google 用户必须具有已分配的 Looker 角色。如果此选项处于开启状态,Looker 会要求 Google 用户必须拥有已分配的 Looker 角色,才能登录 Looker。

    如果此选项处于未选中状态,则 Google 用户即使未分配任何角色,也可以向 Looker 进行身份验证。未分配角色的用户将无法在 Looker 中查看数据或采取行动,但可以登录。

测试用户身份验证

  1. 点击测试 Google 身份验证,使用当前设置并尝试在新窗口中对当前浏览器进行身份验证。此操作不会保存当前设置,也不会将其应用于 Looker 实例。

    如果您尚未登录 Google,系统会提示您登录,并征求您同意使用您的 Google 账号信息。此流程会使用您在 Google 端设置中使用的自定义权限请求页面设置。

    成功后,系统会显示用户信息部分,其中包含您的姓名、电子邮件地址和网域,以及为您的账号检测到的所有镜像 Google 群组。此用户信息部分的存在表明 Looker 会成功对该用户进行身份验证。

    如果失败,系统会显示错误说明。一些常见问题包括:

    • 客户端 ID 或客户端密钥复制错误。这些代码必须完整、准确地复制和粘贴。
    • 用户不在网域内。如果您看到个人信息部分,但没有看到用户信息,则可能是因为该用户不在您指定的网域中。这表明该用户已向 Google 正确验证了自己的身份,但他们使用的 Google 账号并非您选择允许访问 Looker 实例的账号。
    • Looker 网址或重定向网址在 Google 中未针对您的 Looker 实例正确设置。
    • 如果 Google 群组未能加载,请验证您的 Google Cloud 项目中是否已启用 Cloud Identity API、是否已添加 https://www.googleapis.com/auth/cloud-identity.groups.readonly 范围,以及用户是否对其 Google 群组拥有 VIEW_MEMBERSHIP 权限。
  2. 如需保存并应用更改,请选择我已确认上述配置,希望启用全局应用。点击更新。

使用 API 配置 Google 身份验证

管理员可以使用 Looker API 中的 google_config 端点,以编程方式读取和更新 Google 身份验证设置和群组角色映射。如需了解详情,请参阅 Looker API 参考文档。

提示

  • 如需体验完整的身份验证周期,您可以退出 Google,然后尝试登录 Looker,此时 Google 会提示您再次登录。

  • 在 Google 中,您可以点击个人下拉菜单(位于 Google Google Workspace 页面右上角您的邮箱旁边)中的账号,以管理您的个人账号。

    在该管理页面上,有一个安全标签页,其中包含账号权限部分。点击应用和网站查看全部,您(作为用户)可以查看和管理您已授予权限的服务和应用。

    点击您为登录而授予的 Looker 权限,即可查看用户在您之前自定义的权限请求页面中看到的详细信息。您也可以点击撤消访问权限,这样下次您登录 Looker(或测试授权)时,系统会再次显示权限请求页面。您可以使用此工作流来自定义权限请求页面,并查看用户将看到的内容。

问题排查

如需排查身份验证问题,请查看“系统活动”中的“用户活动”信息中心。此信息中心包含多个图块,用于显示最近的登录失败情况,包括所用的身份验证方法、返回的出错提示以及尝试登录的时间。

  • 如果用户尝试登录失败,请先确保该用户的 Google 账号中同时包含名字和姓氏。如果用户从其 Google 账号中删除了名字或姓氏,Looker 可能无法通过 Google OAuth 对该用户进行身份验证。

  • 如果用户尝试登录失败,并且 Looker 显示 User not in the authorized domain 等错误,请检查 JSON 响应的 hd 字段。如果 hd 字段包含域名,请确保该域名已注册到您的 Google Workspace 账号。如果 hd 字段为空,请使用非受管用户转移工具邀请用户将其账号转换为您网域中的受管理账号。

  • 如果用户尝试登录失败,但 Looker 未显示出错提示,则用户可能修改了其 Google Google Workspace 账号名称,并删除了其名字或姓氏。在这种情况下,Google Workspace 账号名称在管理控制台中可能仍显示为完整名称,而不会显示用户的修改。为防止出现此问题,Google Workspace 管理员可以停用允许用户自定义此设置选项。

  • 如果 Google 身份验证返回 401 deleted_client 错误,则表示托管 Looker OAuth 客户端的 Google Cloud 项目已被删除或停用。即使 Google Cloud 项目随后恢复,OAuth 客户端也可能会继续失败并显示 deleted_client 错误,从而导致所有用户完全无法登录。如果 Google 身份验证是唯一启用的身份验证方法,则此锁定会阻止访问,即使管理员也无法访问。

    为防止在 OAuth 客户端被删除或发生故障时完全无法登录,您必须启用管理员备用登录设置。此设置可确保管理员有备用登录方法来访问 Looker 实例并更新身份验证设置。

在启用 Google Auth 的同时启用邮箱登录

新的 Google 账号会自动获得 Looker 的访问权限,因此无需添加 Google 域名中的用户。

如需添加使用非 Google 域名邮箱的用户,请执行以下操作:

  1. 在 Google Auth 页面上启用管理员和指定用户的备用登录方式选项
  2. 创建或修改现有用户角色,以添加login_special_email权限
  3. 从用户面板 (/admin/users/new) 转到添加用户
  4. 添加您要包含的邮箱以及这些用户应拥有的角色,其中必须包含具有 login_special_email 权限的角色
  5. 这些用户现在可以使用 https://mycompany.looker.com/login/email(隐藏网址)登录

停用已启用的 Google Auth

如果您想在 Looker 实例已启用 Google 身份验证后将其停用,则需要考虑以下几点:

  • 在添加 Google 身份验证之前创建的用户,如果已经设置了正常的电子邮件登录和密码,则仍然可以正常使用。
  • 在添加 Google 身份验证器之后创建的用户将无法再登录。虽然他们的账号仍然存在,但他们无法访问这些账号,这些账号实际上已成为孤立账号。

因此,我们建议您避免使用此路线。如果您必须采用这种方法,则可以使用 Looker API 来修复孤立账号。如需更多指导,请与 Looker 支持团队联系。