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 默认是备用身份验证方法。
使用 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 时,系统都会验证此角色(或包含 通过 IAM 分配的管理员角色包含 管理员 Looker 角色的所有权限和功能。此角色无法在 Looker (Google Cloud Core) 实例中移除或重新分配。如需移除 Admin via IAM 角色,请将相应的主账号重新分配给 Looker Admin ( |
此外,拥有项目 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) 实例 |
用户可以同时拥有 Admin 和 Admin via IAM Looker 角色。因此,如果您想撤消管理员权限,请务必同时移除 Looker (Google Cloud Core) 实例中的 IAM 角色和 Admin 角色。
在 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 查找该用户,如果找不到匹配的用户,则会使用 SAML 查找该用户。
如果您不希望 Looker (Google Cloud Core) 合并用户,请将此字段留空。
在 OIDC 身份提供方之间迁移
当您从一个 OIDC 身份提供方迁移到另一个 OIDC 身份提供方(例如,从 PingFederate 迁移到 Okta)时,合并用户账号中所述的账号合并选项不适用。只有在不同身份验证类型(例如 SAML 到 OIDC)之间转换时,才适用合并。
Looker (Google Cloud Core)使用 OIDC 载荷中的 sub 声明来填充 oidc_user_id 用户属性,该属性可唯一标识 OIDC 用户账号。为防止 Looker (Google Cloud Core)在 OIDC 迁移期间生成重复的用户账号,请配置新的 OIDC 身份提供方,确保 OIDC 载荷中发送的 sub 声明与上一个提供方建立的 oidc_user_id 匹配(例如,sub 声明应包含用户的邮箱,而不是新生成的 UUID)。
如果无法在新身份提供方上维护相同的 sub 声明,系统会创建新的用户账号。在这种情况下,您可以使用 Looker API 检索收藏的内容,并在删除旧账号之前将旧用户账号中的时间表重新分配给新用户账号。
创建 Google 群组的镜像
如果您有受管理的 Google 群组,Looker (Google Cloud Core) 可以创建 Looker 群组,这些群组的成员与您的 Google 群组的成员相同。这意味着,您无需在 Looker (Google Cloud Core) 中直接设置用户,而是可以通过管理 Google 群组的成员资格来管理用户访问权限。此外,Looker 群组还可用于向群组成员分配角色、设置内容访问权限控制、控制功能和数据访问权限以及分配用户属性。
为了使群组镜像功能正常运行,用户必须拥有 VIEW_MEMBERSHIP 权限,以便查看自己所属 Google 群组的成员资格。如需在 Google 群组界面设置中授予此权限,请将谁可以查看成员字段设置为群组成员。
当新用户首次登录 Looker (Google Cloud Core) 实例时,系统会为其应用镜像的 Looker 群组(以及任何关联的角色和访问权限)。这些群组不会应用于现有用户,而且如果在用户首次登录后从 Looker (Google Cloud Core) 中的用户账号中移除,也不会重新应用。
系统会自动向在 IAM 系统中拥有 Looker Admin 角色的用户授予 Admin via IAM Looker 角色,该角色会替换群组镜像。无论用户在 IAM 系统中拥有哪些群组成员资格,只要拥有 Looker Admin 角色,系统都会自动在 Looker (Google Cloud Core) 中为其分配 Admin via IAM 角色。此外,系统还会将这些用户分配到镜像群组,并通过标准镜像流程向其授予角色和访问权限。
我们建议您仅为 Looker (Google Cloud Core) 的主要身份验证方法启用群组镜像。如果您使用 OAuth 作为备用身份验证方法,请勿为 OAuth 启用群组镜像。如果您同时为主要身份验证方法和次要身份验证方法启用群组镜像,则会发生以下行为:
- 如果用户合并了身份,则无论实际使用哪种身份验证方法登录,群组镜像都会与主要身份验证方法匹配。
- 如果用户没有合并的身份,群组镜像将与用于登录的身份验证方法相匹配。
启用镜像组的步骤
如需启用群组镜像,请完成以下步骤:
- 在 Google Cloud 控制台中,在包含 OAuth 客户端的 Google Cloud 项目中启用 Cloud Identity API。您必须拥有 Service Usage Admin (
roles/serviceusage.serviceUsageAdmin) IAM 角色才能启用 API。 在 Google Cloud 控制台中,更新 OAuth 客户端的权限请求页面,以添加
https://www.googleapis.com/auth/cloud-identity.groups.readonly范围。您必须拥有clientauthconfig.clients.updateIAM 权限才能添加范围。如需更新权限请求页面,请完成以下步骤:- 前往 OAuth 客户端。
- 选择数据访问权限页面。
- 点击添加或移除范围按钮。系统会打开更新所选范围面板。
- 找到
https://www.googleapis.com/auth/cloud-identity.groups.readonly范围,然后选中其旁边的复选框。 - 点击更新按钮以添加范围。
关闭面板,然后点击数据访问页面上的保存以保存范围。
在 Looker (Google Cloud Core) 实例中,在 Google 身份验证页面上启用镜像 Google 群组切换开关。此切换开关默认处于停用状态。填写以下字段:
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 群组的角色。
Auth Requires Role(身份验证需要角色):如果此选项处于开启状态,则 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) 实例时,系统会向其授予该角色。如需设置默认角色,请按以下步骤操作:
- 在管理菜单的身份验证部分中,前往 Google 身份验证页面。
- 在新用户的角色设置中,选择您要默认授予所有新用户的角色。该设置包含 Looker (Google Cloud Core) 实例中的所有默认角色和自定义角色的列表。
管理员角色不能是默认角色。拥有 Looker Admin (roles/looker.admin) IAM 角色的用户账号在首次登录时,除了获得新用户的角色设置中选择的角色外,还会获得通过 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 添加用户。如需添加用户,请按以下步骤操作:
- 确保您拥有 Project IAM Admin 角色或可让您管理 IAM 访问权限的其他角色。
前往 Looker (Google Cloud Core) 实例所在的 Google Cloud 控制台项目。
前往 Google Cloud 控制台的 IAM 和管理 > IAM 部分。
选择授予访问权限。
在添加主账号部分中,添加以下一项或多项:
- Google 账号邮箱
- Google 群组
- Google Workspace 网域
在分配角色部分,选择一个预定义的 Looker (Google Cloud Core) IAM 角色或您添加的自定义角色。
点击保存。
告知新的 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 用作备用身份验证方法
如果您使用其他身份验证方法(例如员工身份联合、SAML 或 OpenID Connect [OIDC]),则可以将 Google OAuth 配置为辅助或备用身份验证方法。此配置可确保用户和管理员在无法访问主要身份提供方时,仍可以使用 Google 账号进行身份验证。
将 OAuth 设置为 SAML 或 OIDC 的备用方法
当 SAML 或 OIDC 是主要身份验证方法时,OAuth 是备用身份验证方法。
如需将 OAuth 设置为备用方法,请向每个 Looker (Google Cloud Core) 用户授予适当的 IAM 角色,以便登录实例。
将 OAuth 设置为员工身份联合的辅助方法
您可以选择将 OAuth 设置为员工身份联合的辅助身份验证方法。如需将 OAuth 设置为辅助身份验证方法,请修改实例以启用启用辅助 OAuth 设置。
使用 OAuth 登录
设置好备用方法后,用户可以通过以下步骤使用该方法:
- 在登录页面上,选择使用 Google 账号进行身份验证。
- 系统会显示一个对话框,要求您确认 Google 身份验证。在对话框中选择确认。
然后,用户可以使用其 Google 账号登录。首次使用 OAuth 登录时,系统会提示他们接受在实例创建期间设置的 OAuth 权限请求页面。
后续步骤
- 将 Looker (Google Cloud Core) 连接到您的数据库
- 配置 Looker (Google Cloud Core) 实例
- Looker (Google Cloud Core) 管理员设置
- 通过 Google Cloud 控制台管理 Looker (Google Cloud Core) 实例