使用员工身份联合进行 Looker (Google Cloud Core) 用户身份验证

员工身份联合让您可以使用外部身份提供方 (IdP) 对用户和用户群组进行身份验证,以便他们登录 Looker (Google Cloud Core) 实例。通过使用员工身份联合,您组织中的用户可以使用单点登录 (SSO) 访问 Looker (Google Cloud Core),而无需您为每位用户预配或同步 Google 账号(Cloud Identity 或 Google Workspace 账号)。

员工身份联合支持使用 OpenID Connect (OIDC) 或 SAML 2.0, 例如 Microsoft Entra ID(以前称为 Azure AD)、Okta、PingIdentity 等。

在功能预览期间,仅支持使用公共安全连接的 Looker (Google Cloud Core) 实例。

员工身份联合如何与 Looker (Google Cloud Core) 搭配使用

为 Looker (Google Cloud Core) 实例配置员工身份联合时,会发生以下过程:

  1. 身份验证 :用户导航到 Looker (Google Cloud Core) 实例网址。如果启用了 绕过登录页面 设置,系统会自动将用户重定向到 Google Cloud 登录门户 (https://auth.cloud.google/authorize),该门户会将用户重定向到您的 外部 IdP 以进行身份验证。
  2. 令牌交换:用户通过 IdP 进行身份验证后,IdP 会向 Google Cloud Security Token Service (STS) 返回身份验证断言。STS 会将断言交换为联合访问令牌和 ID 令牌。
  3. 授权 :Looker (Google Cloud Core) 会验证联合主账号是否对实例具有所需的 Identity and Access Management (IAM) 权限 (looker.instances.login)。
  4. 预配和角色分配 :Looker (Google Cloud Core) 会在首次登录时创建用户账号(即时预配),并应用基于从 IdP 收到的声明的群组到角色映射和用户属性。

准备工作

在为 Looker (Google Cloud Core) 配置员工身份联合之前,请确保您拥有以下角色和配置:

所需 IAM 角色

如需配置员工身份联合并创建 Looker (Google Cloud Core) 实例,您需要以下角色:

必需的 API

在您的 Google Cloud 项目中启用以下 API:

第 1 步:设置员工身份池和提供方

员工身份池和提供方是在 Google Cloud 组织级而非项目级创建的。

请完成以下步骤来设置员工身份池和提供方:

  1. 按照 配置员工身份联合 文档页面上的说明创建员工身份池。
  2. 为 OIDC 或 SAML 2.0 IdP 创建员工身份池提供方:
    • 对于 OIDC 提供方,请参阅 配置 OIDC 员工身份 联合。
    • 对于 SAML 提供方,请参阅 配置 SAML 2.0 员工身份 联合。
    • 在创建提供方期间立即定义以下属性映射:
      • 电子邮件地址 :将 IdP 的电子邮件地址声明映射到 google.email。此映射是用户标识的必需项 ;如果缺少此映射,身份验证将失败。
      • 名字和姓氏 :将 IdP 的名字和姓氏声明映射到 attribute.given_name(名字)和 attribute.family_name(姓氏)。这些映射是填充 Looker 用户个人资料的必需项 ;如果缺少这些映射,身份验证将失败。
  3. 您还可以选择性地配置以下属性映射:

    • 群组 :将 IdP 的群组声明(例如 assertion.groups)映射到 google.groups。如果您计划启用群组 镜像并将 IdP 群组映射到 Looker 角色,则需要此映射。对于 OIDC 提供方,如果 IdP 需要,请确保您的提供方配置也会请求 the groups 范围(请参阅 配置员工身份联合 ,了解特定于 IdP 的要求)。
    • 自定义属性:将 自定义 IdP 声明 映射到 attribute.<attribute_name>。您可以在 Looker (Google Cloud Core) 中使用这些映射的属性来参数化数据库连接并应用行级数据访问权限过滤器。

配置延长的会话时长和后台同步

如需支持不间断的浏览器会话、长时间运行的计划传送、用户 API 密钥访问权限和连接器集成,请完成以下步骤:

  1. 在员工池 提供方上配置后台属性同步,以便 Google Cloud 定期在后台刷新用户属性和 群组成员资格:
    • 对于 OIDC 提供方: 配置 OIDC 授权代码 流(使用 offline_access 范围,该范围使用刷新令牌定期 刷新用户属性和群组成员资格)或 SCIM 2.0 预配。 如果用户所属的群组数量过多,超出 OIDC 令牌大小 限制,请配置 SCIM 2.0 预配 以将群组成员资格同步到 Google Cloud。
    • 对于 SAML 提供方: 在员工池提供方上配置 SCIM 2.0 预配 。由于 SAML 断言本身不提供刷新令牌,因此需要 SCIM 2.0 才能启用离线计划传送和提醒。
  2. 使用 Access Context Manager 云绑定为员工池配置 延长的会话时长政策 ,并将该 政策设置为 90 天(7,776,000 秒)。

    此政策将最长会话时长和刷新令牌有效期设置为 90 天。如果未配置延长的会话时长政策或将其设置为 较短的时长,则员工池刷新令牌有效期优先于 Looker 的 会话时长设置, 导致浏览器会话、离线计划、用户 API 密钥和连接的 应用在刷新令牌过期时需要重新进行身份验证。

第 2 步:向员工主账号授予 IAM 权限

如需让员工用户登录 Looker (Google Cloud Core) 实例,请向员工主账号或群组授予 Looker Instance User (roles/looker.instanceUser) 或 Looker Admin (roles/looker.admin) IAM 角色。

您可以使用以下主账号标识符向 单个用户、整个群组或员工池中的所有主账号 授予角色:

  • 单个员工用户 :

    principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject/SUBJECT_ID
    

  • 员工群组 :

    principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP_ID
    

  • 员工池中的所有主账号 :

    principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/*
    

如需详细了解如何分配 IAM 角色,请参阅 Looker (Google Cloud Core) 使用 IAM 进行访问权限控制文档页面。

第 3 步:选择员工身份联合作为主要身份验证方法

您可以在创建新的 Looker (Google Cloud Core) 实例时或通过修改现有实例来选择员工身份联合作为主要身份验证方法。

在创建实例期间

创建新的 Looker (Google Cloud Core) 实例时,您可以选择员工身份联合作为主要身份验证方法:

控制台

  1. 在 Google Cloud 控制台中,转到 Looker (Google Cloud Core) 页面。

    前往 Looker (Google Cloud Core)

  2. 点击创建实例 。
  3. 按照创建使用 公共安全连接、Private Service Connect 连接或 专用服务访问连接的实例的文档中所述,完成实例名称、区域和版本配置。
  4. 在身份验证 部分中,选择 Workforce Identity Federation (SAML/OIDC) 作为主要身份验证方法。
  5. 点击创建 。

如需将 OAuth 设置为辅助身份验证方法,请在创建实例后修改实例配置。

修改现有实例时

如果您有现有的 Looker (Google Cloud Core) 实例,则可以修改实例配置以选择员工身份联合作为主要身份验证方法,或将 OAuth 设置为辅助身份验证方法:

控制台

  1. 在 Google Cloud 控制台中,转到 Looker (Google Cloud Core) 页面。

    前往 Looker (Google Cloud Core)

  2. 点击要修改的实例的名称。
  3. 在实例的详细信息 标签页中,点击修改 。
  4. 在身份验证 部分中,选择 Workforce Identity Federation (SAML/OIDC) 作为主要身份验证方法。
  5. (可选)如需允许 OAuth 作为辅助身份验证 方法,请启用 启用辅助 OAuth 开关。
  6. 点击保存 。

第 4 步:在 Looker 中配置员工身份设置

创建 Looker (Google Cloud Core) 实例后,管理员可以在 Looker 管理控制台的员工身份验证 页面中配置用户属性映射、群组镜像和登录选项。

  1. 使用具有 Admin Looker 角色的账号登录 Looker (Google Cloud Core) 实例。
  2. 在左侧导航菜单中,依次选择管理 > 身份验证 > 员工身份 。
  3. 配置以下部分中所述的设置。

如需详细了解以下设置,请参阅 员工身份验证 页面文档。

合并用户账号

在使用以下系统合并用户 字段中,选择用户首次使用员工身份联合登录时应从中合并现有用户账号的身份验证系统。

支持合并的系统包括:

  • Google
  • SAML
  • OIDC

绕过登录页面

绕过登录页面 选项用于控制是否自动将未经身份验证的用户重定向到企业 SSO 门户:

  • 已启用(默认) :当用户导航到实例网址时,系统会自动将他们重定向到 IdP 登录界面,而不会显示 Looker 登录页面。
  • 已停用 :用户会看到 Looker 登录页面,并且可以在可用的身份验证选项之间进行选择。

点击保存配置 以应用您的设置。

用户属性映射

将 IdP 断言中的声明映射到 Looker 用户属性。 用户属性可用于许多用途,例如参数化数据库连接和应用行级安全过滤器。

  • 在 属性映射 部分中,将 Google 员工属性映射到 相应的 Looker 用户属性(例如,将 attribute.department 映射到 Looker 中的 department 用户属性)。

群组和角色

您可以通过群组镜像或默认角色分配来管理用户角色:

  • 镜像 IdP 中的群组 :启用此设置后,Looker (Google Cloud Core) 会创建 Looker 群组,这些群组会镜像在 IdP 令牌断言中传递的群组。
    • 在群组映射 表中,将外部 IdP 群组名称映射到 Looker 群组,并分配适当的 Looker 角色(例如 Viewer、用户或开发者)。
  • 新用户的默认角色 :如果未使用群组镜像或群组镜像与用户不匹配,请指定在首次登录时授予新用户的默认角色。
  • 新用户的默认群组 :如果未使用群组镜像或群组镜像与用户不匹配,请指定分配给新用户的默认群组。

会话管理和令牌有效期

Looker (Google Cloud Core) 中的用户会话和令牌受员工身份池政策(例如延长的会话时长政策)中配置的 会话时长和刷新令牌有效期的约束:

  • 浏览器会话:使用持久会话时,Looker 会话时长设置 支持最长 30 天的会话。 但是,如果员工身份池的有效期小于在 Looker 中配置的会话时长,则员工身份池的刷新令牌有效期优先。当刷新令牌过期时,用户必须重新登录。我们建议您在延长的会话时长政策中设置 90 天的刷新令牌有效期。
  • 计划的传送和提醒(离线作业) :只要计划所有者拥有有效的 IdP 令牌,后台作业就会运行。如果计划或提醒创建者超过 90 天(或在员工池会话政策中配置的时长)未登录实例,其离线会话就会过期,并且该用户拥有的计划传送或提醒会暂停。如需恢复已暂停的计划或提醒,所有者必须登录实例,或者管理员必须分配计划所有权。
  • Looker OAuth 服务器和连接器 :使用 Looker OAuth 服务器的集成(例如数据洞察、Connected Sheets 和第三方连接器)使用 30 天的刷新令牌(或数据洞察中永不过期的刷新令牌)。如果员工池会话时长设置为少于 90 天,用户可能需要在会话时长过期时重新向 Looker 进行身份验证。
  • 用户 API 密钥 :用户 API 密钥生成的 API 访问令牌有效期为 1 小时,并且需要有效的用户 IdP 会话。如果用户的 IdP 会话过期(每 90 天或根据员工池会话时长),用户必须再次登录实例才能继续使用其 API 密钥。
  • 服务账号 API 密钥 :服务账号 API 访问令牌不受员工池会话政策的影响。

后续步骤