使用 Google OAuth 进行 Looker (Google Cloud Core) 用户身份验证

Google OAuth 与 Identity and Access Management (IAM) 结合使用,以对 Looker (Google Cloud core) 用户进行身份验证。

使用 OAuth 进行身份验证时,Looker (Google Cloud Core) 会通过 OAuth 2.0 协议对用户进行身份验证。创建实例时,您可以使用任何 OAuth 2.0 客户端来创建授权凭据。举例来说,本页面将引导您完成以下步骤:使用 Google Cloud 控制台创建 OAuth 凭据,从而为 Looker (Google Cloud Core) 实例设置身份验证。

如果其他方法是主要的身份验证方式,则 Google OAuth 默认是备用身份验证方法。Google OAuth 也是 Cloud Customer Care 在提供支持时使用的身份验证方法。

用于身份验证的 OAuth 客户端必须与用于设置实例的 OAuth 客户端相同。

使用 OAuth 和 IAM 进行身份验证和授权

与 OAuth 搭配使用时,Looker (Google Cloud Core) IAM 角色可为给定 Google Cloud 项目中的所有 Looker (Google Cloud Core) 实例提供以下级别的身份验证和授权。根据您希望每个主账号拥有的访问权限级别,为每个主账号分配以下 IAM 角色之一:

IAM 角色 身份验证 授权
Looker Instance User (roles/looker.instanceUser)

可以登录 Looker (Google Cloud Core) 实例

首次登录 Looker (Google Cloud Core) 时,系统会授予用户在新用户的角色中设置的默认 Looker 角色。

无法在 Google Cloud 控制台中访问 Looker (Google Cloud Core) 资源。

Looker Viewer (roles/looker.viewer) 可以登录 Looker (Google Cloud Core) 实例 首次登录 Looker (Google Cloud Core) 时,系统会授予用户在新用户的角色中设置的默认 Looker 角色。

可以在 Google Cloud 控制台中查看 Looker (Google Cloud Core) 实例的列表和实例详情
Looker Admin (roles/looker.admin) 可以登录 Looker (Google Cloud Core) 实例 首次登录 Looker (Google Cloud Core) 时,系统会授予用户在新用户的角色中设置的默认 Looker 角色。

在每次登录使用主 OAuth备用 OAuth 的 Looker (Google Cloud Core) 时,以及每次用户调用 Looker API 时,系统都会验证此角色(或包含 looker.instances.update 权限的自定义角色),该角色还会授予实例中的 Admin via IAM 角色。

通过 IAM 进行管理角色包含 管理员 Looker 角色的所有权限和功能。此角色无法在 Looker (Google Cloud Core) 实例中移除或重新分配。如需移除 Admin via IAM 角色,请将主账号重新分配给 Looker Admin (roles/looker.admin) 以外的 IAM 角色。即使用户在更改后使用第三方身份提供方登录,对 IAM 角色的更改也会自动同步到 Looker (Google Cloud Core) 实例。如需了解详情,请参阅“Looker 管理员角色”与“通过 IAM 授予的 Looker 管理员角色”部分。

只要用户的 OAuth 刷新令牌有效,即使该用户之后使用第三方身份提供方登录,其角色在 Looker (Google Cloud Core) 中也会显示为 Admin via IAM。如果 OAuth 刷新令牌过期或被撤消,用户必须使用 OAuth 再次登录实例,才能重新获得 Admin via IAM 角色。

可以在 Google Cloud 控制台中执行 Looker (Google Cloud Core) 的所有管理任务

此外,如果用户账号对某个项目具有 owner 角色,则可以登录并管理该项目中的任何 Looker (Google Cloud Core) 实例。系统会为这些用户授予 Admin Looker 角色。

如果预定义角色未提供您所需的权限集,您还可以创建自己的自定义角色

Looker (Google Cloud Core) 账号是在首次登录 Looker (Google Cloud Core) 实例时创建的。

Looker 管理员角色与通过 IAM 分配的 Looker 管理员角色

在 Looker (Google Cloud Core) 实例中,有两个角色使用管理员权限集,并在实例内授予相同的管理员权限。下表总结了这两种角色的异同。

属性 管理员 Looker 角色 通过 IAM 分配的 Looker 管理员角色
权威来源 由 Looker (Google Cloud Core) 实例中的其他管理员授予 直接关联到 Looker Admin IAM 角色
可在 Looker (Google Cloud Core) 实例中添加或移除?
是否可以通过 IAM 添加或移除?
Looker (Google Cloud Core) 中的权限 所有权限 所有权限
Google Cloud 控制台中的权限 拥有对所有 Looker (Google Cloud Core) 资源的完全访问权限
角色验证 持续在 Looker (Google Cloud Core) 实例中 每次登录 Looker (Google Cloud Core) 实例时,以及每次调用 Looker API 时。

对具有 IAM 的角色的更改可能需要几分钟才能传播。
范围 Looker (Google Cloud Core) 个人版实例 Google Cloud 项目中的所有 Looker (Google Cloud Core) 实例

用户可以同时拥有 AdminAdmin via IAM Looker 角色。因此,如果您想撤消管理员权限,请务必同时移除 IAM 角色和 Looker (Google Cloud Core) 实例中的管理员角色。

在 Looker (Google Cloud Core) 实例中配置 OAuth

在 Looker (Google Cloud Core) 实例中,您可以在管理菜单的身份验证部分中,通过 Google 身份验证页面配置一些 Google OAuth 设置。您必须拥有 Admin Looker 角色。

合并用户账号

合并用户时使用字段中,指定用于将首次 OAuth 登录与现有用户账号合并的方法。当用户首次通过 OAuth 登录时,此选项会查找具有匹配电子邮件地址的账号,将用户关联到其现有账号。如果用户没有账号,系统将创建一个新的用户账号。

您可以合并以下系统中的用户:

  • SAML
  • OIDC

如果您有多个系统,可以在此字段中指定要合并的多个系统。Looker (Google Cloud Core) 将按指定顺序从所列系统中查找用户。例如,如果您先使用 OIDC 创建了一些用户,然后又使用了 SAML,那么当用户首次尝试使用 OAuth 登录时,Looker (Google Cloud Core)会先使用 OIDC 查找用户,如果找不到与该用户匹配的 OIDC,则会使用 SAML 查找用户。

如果您不希望 Looker (Google Cloud Core) 合并用户,请将此字段留空。

创建 Google 群组的镜像

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

镜像的 Looker 群组(以及任何关联的角色和访问权限)会在新用户首次登录 Looker (Google Cloud Core) 实例时应用。这些群组不会应用于现有用户,而且如果在用户首次登录后从 Looker (Google Cloud Core)中的用户账号中移除,也不会重新应用。

我们建议您仅为 Looker (Google Cloud Core) 的主要身份验证方法启用群组镜像。如果您使用 OAuth 作为备用身份验证方法,请勿为 OAuth 启用群组镜像。如果您同时为主身份验证方法和辅助身份验证方法启用群组镜像,则会发生以下行为:

  • 如果用户合并了身份,无论用户使用哪种实际的身份验证方法登录,群组镜像都会匹配主要身份验证方法。
  • 如果用户没有合并身份,群组镜像将与用于登录的身份验证方法相匹配。

启用镜像群组的步骤

如需启用群组镜像,请完成以下步骤:

  1. 在 Google Cloud 控制台中,在包含 OAuth 客户端的 Google Cloud 项目中启用 Cloud Identity API。您必须拥有 Service Usage Admin (roles/serviceusage.serviceUsageAdmin) IAM 角色才能启用 API。

    启用 API

  2. 在 Google Cloud 控制台中,更新 OAuth 客户端的权限请求页面以添加 https://www.googleapis.com/auth/cloud-identity.groups.readonly 范围。您必须拥有 clientauthconfig.clients.update IAM 权限才能添加范围。如需更新同意屏幕,请完成以下步骤:

    • 前往 OAuth 客户端。
    • 选择数据访问页面。
    • 点击添加或移除范围按钮。系统会打开更新所选范围面板。
    • 找到 https://www.googleapis.com/auth/cloud-identity.groups.readonly 范围,然后选中旁边的复选框。
    • 点击更新按钮以添加相应范围。
    • 关闭面板,然后点击数据访问页面上的保存以保存范围。

  3. 在 Looker (Google Cloud Core) 实例中,在 Google 身份验证页面上启用镜像 Google 群组切换开关。此切换开关默认处于停用状态。填写以下字段:

    • Looker 群组名称字段中,添加 Looker 群组的名称。此名称将显示在 Looker (Google Cloud Core) 中的群组页面上。
    • Google 群组 ID 字段中,输入要镜像的 Google 群组的名称或电子邮件地址
    • 角色字段中,输入要分配给相应群组成员的 Looker 角色

Looker (Google Cloud Core) 会为添加到 Google 身份验证页面的每个 Google 群组创建一个 Looker 群组。您可以在 Looker (Google Cloud Core) 的群组页面上查看这些 Looker 群组。

修改镜像群组

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

如果您在 Google 身份验证页面上修改分配给群组的自定义名称角色字段,则镜像 Looker 群组在 Looker (Google Cloud Core)的群组页面上显示的名称或分配给该群组的角色会发生变化,但群组成员不会发生变化。

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

对镜像群组所做的任何修改都会在相应群组的用户下次登录 Looker (Google Cloud core) 时应用于这些用户。

停用镜像组

如果您想停止在 Looker (Google Cloud Core) 中镜像 Google 群组,请在 Looker (Google Cloud Core) 实例的 Google 身份验证页面上停用镜像 Google 群组切换开关。停用相应切换开关会导致以下行为:

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

高级角色管理

如果启用了镜像 Google 群组切换开关,Google 身份验证页面会显示高级角色管理设置。此部分中的选项用于确定 Looker 管理员在配置从 Google 镜像的 Looker 群组和用户时可获得的灵活性。

如果您希望 Looker 群组和用户配置与 Google 群组配置完全一致,请开启所有高级角色管理选项。如果所有选项均已启用,Looker 管理员将无法修改镜像群组成员资格,并且只能通过 Google 群组向用户分配角色。

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

对于 Looker (Google Cloud Core) 实例,这些选项默认处于关闭状态。

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

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

    如果此选项处于关闭状态,Looker 管理员可以直接在 Looker (Google Cloud Core) 实例中向 Google 用户分配 Looker 角色。

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

    如果选择此选项,之前分配给内置 Looker 群组的所有 Google 用户将在下次登录时被移出这些群组。

    如果此选项处于未选中状态,Looker 管理员可以直接将 Google 用户添加到内置 Looker 群组。

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

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

  • 身份验证需要角色:如果此选项处于开启状态,则 Google 用户必须具有分配的 Looker 角色。未分配角色的任何 Google 用户都将无法登录 Looker (Google Cloud Core)。

    如果此选项处于关闭状态,即使 Google 用户未获分配任何角色,也可以对 Looker (Google Cloud Core) 进行身份验证。未分配任何角色的用户将无法在 Looker (Google Cloud Core) 中查看任何数据或执行任何操作,但可以登录 Looker (Google Cloud Core)。

设置默认 Looker 角色

如果镜像 Google 群组切换开关处于停用状态,新用户的角色设置会显示在 Google 身份验证页面上。通过此设置,您可以设置默认的 Looker 角色,当具有 Looker Instance User (roles/looker.instanceUser) IAM 角色或 Looker Viewer (roles/looker.viewer) IAM 角色的用户首次登录 Looker (Google Cloud Core) 实例时,系统会向其授予该角色。如需设置默认角色,请按以下步骤操作:

  1. 管理菜单的身份验证部分中,前往 Google 身份验证页面。
  2. 新用户的角色设置中,选择您希望默认授予所有新用户的角色。该设置包含 Looker (Google Cloud Core) 实例中的所有默认角色自定义角色的列表。

管理员角色不能是默认角色。具有 Looker Admin (roles/looker.admin) IAM 角色的用户账号在首次登录时,除了在新用户的角色设置中选择的角色之外,还会被授予 Admin via IAM Looker 角色。

如果您在自定义新用户的角色设置后启用镜像 Google 群组 开关,则系统会在用户下次登录时移除通过新用户的角色设置分配给用户的角色,并替换为通过镜像 Google 群组 设置分配的角色。

测试用户身份验证

点击 Test Google Authentication(测试 Google 身份验证)按钮以测试您的设置。测试将重定向到 Google 的 OAuth 服务器,并打开一个浏览器标签页。该标签页会显示以下信息:

  • Looker (Google Cloud Core) 是否能够与服务器通信并进行验证。
  • Looker (Google Cloud Core) 从服务器获取的用户信息。您需要验证服务器是否返回了正确的结果。
  • 用于显示信息查找方式的轨迹。如果信息不正确,请使用轨迹进行问题排查。如果您需要更多信息,可以读取原始 XML 服务器文件。
  • 收到的 ID 令牌的解码版本和原始版本。这些信息可用于确认用户详细信息以及 Google 配置。

保存并应用设置

输入完信息并完成所有测试后,选中我已确认上述配置,并希望启用该配置以将其应用到全局复选框,然后点击提交以保存。

向 Looker (Google Cloud Core) 实例添加用户

Looker (Google Cloud Core) 实例创建完毕后,可以通过 IAM 添加用户。如需添加用户,请按以下步骤操作:

  1. 确保您拥有 Project IAM Admin 角色或允许您管理 IAM 访问权限的其他角色
  2. 前往 Looker (Google Cloud Core) 实例所在的 Google Cloud 控制台项目。

  3. 前往 Google Cloud 控制台中的 IAM 和管理 > IAM 部分。

  4. 选择授予访问权限

  5. 添加主账号部分,添加以下一项或多项内容:

    • Google 账号电子邮件地址
    • Google 群组
    • Google Workspace 网域
  6. 分配角色部分,选择一个预定义的 Looker (Google Cloud Core) IAM 角色或您添加的自定义角色。

  7. 点击保存

  8. 告知 Looker (Google Cloud Core) 新用户已授予访问权限,并引导他们访问实例的网址。然后,他们可以登录实例,系统会随即创建他们的账号。系统不会发送任何自动通信内容。

如果您更改用户的 IAM 角色,该 IAM 角色会在几分钟内传播到 Looker (Google Cloud Core) 实例。如果存在现有的 Looker 用户账号,则该用户的 Looker 角色保持不变。

所有用户都必须按照前面介绍的 IAM 步骤进行预配,但有一个例外:您可以在 Looker (Google Cloud Core) 实例中创建仅限 Looker API 的服务账号

使用 OAuth 登录 Looker (Google Cloud Core)

首次登录时,系统会要求用户使用 Google 账号登录。在授予访问权限时,他们应使用 Looker 管理员在添加主账号字段中列出的同一账号。用户将看到在创建 OAuth 客户端期间配置的 OAuth 权限请求页面。用户同意同意声明屏幕上的内容后,系统会在 Looker (Google Cloud Core) 实例中创建其账号,并让其登录。

之后,除非用户的授权过期或被用户撤消,否则用户将自动登录 Looker (Google Cloud Core)。在这些情况下,用户将再次看到 OAuth 权限请求页面,并被要求同意授权。

某些用户可能会获分配 API 凭据,用于检索 API 访问令牌。如果这些用户的授权过期或被撤消,其 API 凭据将无法再使用。所有当前的 API 访问令牌也将停止运行。如需解决此问题,用户必须重新授权其凭据,方法是重新登录到每个受影响的 Looker (Google Cloud Core) 实例的 Looker (Google Cloud Core) 界面。或者,使用仅限 API 的服务账号有助于避免 API 访问令牌出现凭据授权失败的情况。

移除对 Looker (Google Cloud Core) 的 OAuth 访问权限

如果您拥有可用于管理 IAM 访问权限的角色,则可以通过撤消授予访问权限的 IAM 角色来移除对 Looker (Google Cloud Core) 实例的访问权限。如果您移除某个用户账号的 IAM 角色,相应更改会在几分钟内传播到 Looker (Google Cloud Core) 实例。用户将无法再通过该提供商对实例进行身份验证。不过,用户账号仍会在用户页面上显示为有效。如需从用户页面中移除用户账号,请在 Looker (Google Cloud Core) 实例中删除该用户

将 OAuth 用作备用身份验证方法

SAMLOIDC 是主要身份验证方法时,OAuth 是备用身份验证方法。

如需将 OAuth 设置为备用方法,请向每位 Looker (Google Cloud Core) 用户授予相应的 IAM 角色,以便其登录实例。

设置备份方法后,用户可以通过以下步骤访问该方法:

  1. 在登录页面上,选择使用 Google 账号进行身份验证
  2. 系统会显示一个对话框,用于确认 Google 身份验证。在对话框中选择确认

然后,用户可以使用自己的 Google 账号登录。首次使用 OAuth 登录时,系统会提示他们接受在创建实例期间设置的 OAuth 权限请求页面

后续步骤