Google OAuth 与身份和访问管理 (IAM) 搭配使用,用于对 Looker(Google Cloud 核心)用户进行身份验证。
使用 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 核心)资源。 |
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) 实例时创建的。
Admin Looker 角色与通过 IAM Looker 角色的 Admin
Looker (Google Cloud Core) 实例中有两个角色使用“管理员”权限集,并在实例中授予相同的管理员权限。下表总结了这两种角色的异同。
属性 | “管理员 Looker”角色 | 通过 IAM Looker 角色分配的 Admin 角色 |
---|---|---|
权威来源 | 由 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 角色和管理员角色。
在 Looker (Google Cloud Core) 实例中配置 OAuth
在 Looker (Google Cloud Core) 实例中,您可以通过 Admin 菜单的 Authentication 部分中的 Google Authentication 页面配置一些 Google OAuth 设置。您必须拥有 Admin Looker 角色。
合并用户账号
在Merge Users Using(使用以下方法合并用户)字段中,指定用于将首次 OAuth 登录合并到现有用户账号的方法。当用户首次通过 OAuth 登录时,此选项会通过查找电子邮件地址匹配的账号,将用户关联到其现有账号。如果用户没有账号,系统会创建一个新用户账号。
您可以合并来自以下系统的用户:
- SAML
- OIDC
如果您有多个系统,则可以在此字段中指定要合并的多个系统。Looker (Google Cloud Core) 将按指定的系统顺序从列出的系统中查找用户。例如,如果您先使用 OIDC 创建了一些用户,然后又使用 SAML,那么当用户首次尝试使用 OAuth 登录时,Looker(Google Cloud 核心)会先使用 OIDC 查找用户,如果未找到与 OIDC 匹配的用户,则会使用 SAML 查找用户。
如果您不希望 Looker (Google Cloud Core) 合并用户,请将此字段留空。
创建 Google 群组的镜像
如果您管理了 Google 群组,Looker (Google Cloud Core) 可以创建与 Google 群组的成员资格对应的 Looker 群组。这意味着,您无需直接在 Looker(Google Cloud 核心)中设置用户,而是可以通过管理 Google 群组的成员资格来管理用户访问权限。此外,Looker 群组还可用于向群组成员分配角色、设置内容访问权限控制、控制功能和数据访问权限,以及分配用户属性。
镜像的 Looker 群组(以及任何关联的角色和访问权限)会在新用户首次登录 Looker (Google Cloud Core) 实例时应用。这些群组不会应用于现有用户,而且如果在用户首次登录后从 Looker(Google Cloud 核心)中的用户账号中移除这些群组,系统也不会重新应用这些群组。
我们建议您仅为 Looker (Google Cloud Core) 的主要身份验证方法启用群组镜像。如果您使用 OAuth 作为备用身份验证方法,请勿为 OAuth 启用群组镜像。如果您同时为主要和次要身份验证方法启用群组镜像,则会出现以下行为:
- 如果用户合并了身份,无论登录时使用的是哪种实际身份验证方法,群组镜像都将与主要身份验证方法匹配。
- 如果用户没有合并的身份,群组镜像将与登录时使用的身份验证方法匹配。
启用镜像组的步骤
如需启用群组镜像,请完成以下步骤:
- 在 Google Cloud 控制台中,在包含 OAuth 客户端的项目中启用 Cloud Identity API。 Google Cloud 您必须拥有 Service Usage Admin (
roles/serviceusage.serviceUsageAdmin
) IAM 角色才能启用 API。 在 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
作用域,然后选中旁边的复选框。 - 点击更新按钮以添加镜重。
关闭该面板,然后点击数据访问页面上的保存以保存范围。
在 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 核心)的群组页面中的显示方式或分配给该群组的角色,但不会更改群组成员。
如果您将 Google 身份验证页面上的 Google 群组 ID 字段中的名称或电子邮件地址更改为新 Google 群组的 ID,则会将镜像 Looker 群组的成员更改为新 Google 群组的成员,但会保留 Google 身份验证页面上定义的群组名称和角色。
对镜像群组所做的任何修改都会在该群组的用户下次登录 Looker (Google Cloud core) 时应用于他们。
停用镜像组
如果您想停止在 Looker (Google Cloud Core) 中镜像 Google 群组,请在 Looker (Google Cloud Core) 实例的 Google 身份验证页面上停用 Mirror Google Groups 切换开关。
停用此选项后,仍包含用户的镜像 Looker 群组仍可在 Looker (Google Cloud Core) 中使用,并且可用于内容管理和角色分配。不过,停用镜像 Google 群组后,您将无法再向镜像 Looker 群组添加或从中移除用户。系统会删除不包含用户的任何镜像 Looker 组。
高级角色管理
如果镜像 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 管理员将镜像群组的成员直接添加到 Google 身份验证页面上未包含在镜像群组配置中的内置 Looker 群组。
如果选择此选项,则之前分配到内置 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 (Google Cloud Core) 实例时向其授予该角色。如果用户账号具有 Looker Instance User (roles/looker.instanceUser
) IAM 角色或 Looker Viewer (roles/looker.viewer
) IAM 角色,则系统会向其授予该角色。如需设置默认角色,请按以下步骤操作:
- 前往管理菜单的身份验证部分中的 Google Authentication 页面。
- 在新用户的角色设置中,选择您希望默认向所有新用户授予的角色。此设置包含 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 配置。
保存并应用设置
输入完信息且所有测试均通过后,选中 I have confirmed the configuration above and want to enable applying it globally 复选框,然后点击 Submit 进行保存。
向 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 或 OIDC 是主要身份验证方法,则 OAuth 是备用身份验证方法。
如需将 OAuth 设置为备用方法,请向每个 Looker (Google Cloud Core) 用户授予相应的 IAM 角色,以便他们登录实例。
备份方法设置完毕后,用户可以按照以下步骤访问该备份方法:
- 在登录页面上选择使用 Google 进行身份验证。
- 系统会显示一个对话框,用于确认 Google 身份验证。在对话框中选择确认。
然后,用户可以使用自己的 Google 账号登录。首次使用 OAuth 登录时,系统会提示他们接受在实例创建期间设置的 OAuth 权限请求页面。
后续步骤
- 将 Looker (Google Cloud Core) 连接到您的数据库
- 配置 Looker (Google Cloud Core) 实例
- Looker (Google Cloud Core) 管理设置
- 通过 Google Cloud 控制台管理 Looker (Google Cloud Core) 实例