管理员设置 - SAML 身份验证

通过管理菜单身份验证部分的 SAML 页面,您可以将 Looker 配置为使用安全断言标记语言 (SAML) 对用户进行身份验证。本页面介绍了该流程,并说明了如何将 SAML 群组与 Looker 角色和权限相关联。

SAML 和身份提供方

公司会使用不同的身份提供方 (IdP) 来协调 SAML(例如 Okta 或 OneLogin)。以下设置说明和界面中使用的术语可能与 IdP 使用的术语并不直接匹配。在设置过程中,如需澄清说明,请与您的内部 SAML 或身份验证团队联系,或联系 Looker 支持团队。

Looker 假定 SAML 请求和断言会进行压缩;请确保您的 IdP 已按上述方式配置。Looker 向 IdP 发出的请求未签名。

Looker 支持 IdP 发起的登录。

部分设置流程必须在 IdP 的网站上完成。

Okta 提供了一个 Looker 应用,这是同时配置 Looker 和 Okta 的推荐方法。

在身份提供方上设置 Looker

您的 SAML IdP 需要 Looker 实例网址,SAML IdP 应将 SAML 断言发布到该网址。在您的 IdP 中,这个网址可能称为“回传网址”“收件人”或“目标”等。

您需要提供的信息是您通常使用浏览器访问 Looker 实例的网址,后跟 /samlcallback。例如:none https://instance_name.looker.com/samlcallback

https://looker.mycompany.com/samlcallback

某些 IdP 还要求您在实例网址后添加 :9999。例如:

https://instance_name.looker.com:9999/samlcallback

注意事项

请记住以下要点:

  • Looker 需要 SAML 2.0。
  • 在您通过 SAML 登录 Looker 时,请勿停用 SAML 身份验证,除非您设置了备用帐号登录。否则,您可能会无法访问该应用。
  • Looker 可以使用来自当前电子邮件地址和密码设置的电子邮件地址或者来自 Google Auth、LDAP 或 OIDC 的电子邮件地址将现有账号迁移到 SAML。您可以在设置过程中配置现有帐号的迁移方式。

使用入门

前往 Looker 的 Admin 部分中的 SAML Authentication 页面,查看以下配置选项。请注意,您对配置选项所做的任何更改均不会生效,直到您在页面底部进行测试并保存设置后才会生效。

SAML 身份验证设置

Looker 需要 IdP 网址IdP 颁发者IdP 证书来对您的 IdP 进行身份验证。

在 IdP 端的 Looker 配置过程中,您的 IdP 可能会提供 IdP 元数据 XML 文档。此文件包含在 SAML 身份验证设置部分中要求提供的所有信息。如果您有此文件,可在 IdP Metadata(IdP 元数据)字段中上传该文件,该字段将填充此部分的必填字段。或者,您也可以填写在 IdP 端配置期间获取的输出中的必填字段。如果上传 XML 文件,则无需填写相关字段。

  • IdP Metadata (Optional)(IdP 元数据(可选)): 您可以将包含 IdP 信息的 XML 文档的公开网址粘贴,也可以将完整的文档文本粘贴到此处。Looker 将解析该文件,以填充必填字段。

如果您未上传或粘贴 IdP 元数据 XML 文档,请改为在 IdP 网址IdP 颁发者IdP 证书字段中输入您的 IdP 身份验证信息。

  • IdP 网址:Looker 将用于对用户进行身份验证的网址。这在 Okta 中称为重定向网址

  • IdP Issuer(IdP 发布者):IdP 的唯一标识符。这在 Okta 中称为“外部密钥”。

  • IdP Certificate(IdP 证书):用于让 Looker 验证 IdP 响应签名的公钥。

结合这三个字段,Looker 可以确认一组已签名的 SAML 断言确实来自受信任的 IdP。

  • SP Entity/IdP Audience(SP 实体/IdP 受众):Looker 不需要此字段,但许多 IdP 都需要此字段。如果您在此字段中输入一个值,该值将在授权请求中作为 Looker 的 Entity ID 发送到您的 IdP。在这种情况下,Looker 仅接受值为 Audience 的授权响应。如果您的 IdP 要求提供 Audience 值,请在此处输入该字符串。
  • 允许的时钟偏移:允许的时钟偏移的秒数(IdP 和 Looker 之间的时间戳差)。此值通常是默认值 0,但某些 IdP 可能需要额外的空间才能成功登录。

用户属性设置

在 IdP 的 SAML 配置(包含每个字段的相应信息)中,在以下字段中指定属性名称。输入 SAML 属性名称可告知 Looker 如何映射这些字段并在登录时提取其信息。Looker 并不特别关注这些信息的构建方式,重要的是,您将其输入到 Looker 的方式与您在 IdP 中定义属性的方式一致。Looker 提供有关如何构造这些输入的默认建议。

标准属性

您需要指定以下标准属性:

  • 电子邮件属性:IdP 用于用户电子邮件地址的属性名称。

  • FName Attr(身份属性):IdP 用于用户名字的属性名称。

  • LName Attr(名称属性):IdP 用于用户姓氏的属性名称。

将 SAML 属性与 Looker 用户属性配对

您可以选择使用 SAML 属性中的数据,以便在用户登录时自动填充 Looker 用户属性中的值。例如,如果您已将 SAML 配置为面向数据库建立特定于用户的连接,则可以将 SAML 属性与 Looker 用户属性配对,以便在 Looker 中将数据库连接设为特定于用户

如需将 SAML 属性与相应的 Looker 用户属性配对,请执行以下操作:

  1. SAML Attribute(SAML 属性)字段中输入 SAML 属性的名称,然后在 Looker 用户属性字段中输入要与之配对的 Looker 用户属性的名称。
  2. 如果您想要求用户提供 SAML 属性值让用户登录,请选中 Required(必填)。
  3. 点击 +,然后重复这些步骤以添加更多属性对。

群组和角色

您可以选择让 Looker 创建镜像外部管理的 SAML 群组的群组,然后根据用户镜像的 SAML 群组为其分配 Looker 角色。当您更改 SAML 群组成员资格后,这些更改会自动传播到 Looker 的群组配置中。

通过镜像 SAML 群组,您可以使用外部定义的 SAML 目录来管理 Looker 群组和用户。这样一来,您就可以在一个位置集中管理 Looker 等多种软件即服务 (SaaS) 工具的群组成员资格。

如果您启用了 Mirror SAML Groups(镜像 SAML 群组),则 Looker 会为系统引入的每个 SAML 群组分别创建一个 Looker 群组。您可以在 Looker 的管理部分的群组页面查看这些 Looker 群组。群组可用于为群组成员分配角色、设置内容访问权限控制和分配用户属性

默认群组和角色

默认情况下,Mirror SAML Groups(镜像 SAML 群组)开关处于关闭状态。在这种情况下,您可以为新的 SAML 用户设置默认群组。在新用户群组新用户角色字段中,输入您要在新的 Looker 用户首次登录 Looker 时向其分配的所有 Looker 群组或角色的名称:

这些群组和角色会在新用户首次登录时为其应用。群组和角色不会应用于先前存在的用户,如果用户在首次登录后将其从用户中移除,也不会重新应用这些群组和角色。

如果您之后启用镜像 SAML 群组,那么当用户下次登录时,系统会移除这些默认设置,并将其替换为在镜像 SAML 群组部分分配的角色。这些默认选项将不再可用或分配,并将完全替换为镜像的群组配置。

启用镜像 SAML 群组

如果您选择在 Looker 中镜像 SAML 群组,请开启镜像 SAML 群组开关。Looker 会显示以下设置:

Group Finder Strategy:选择 IdP 用于分配群组的系统,具体取决于您的 IdP。

  • 几乎所有 IdP 都使用单个属性值来分配群组,如以下 SAML 断言示例所示: none <saml2:Attribute Name='Groups'> <saml2:AttributeValue >Everyone</saml2:AttributeValue> <saml2:AttributeValue >Admins</saml2:AttributeValue> </saml2:Attribute> 在本例中,请选择群组作为单个属性的值

  • 有些 IdP 会针对每个群组使用单独的属性,然后要求提供第二个属性来确定用户是否为群组成员。以下是显示此系统的 SAML 断言示例: none <saml2:Attribute Name='group_everyone'> <saml2:AttributeValue >yes</saml2:AttributeValue> </saml2:Attribute> <saml2:Attribute Name='group_admins'> <saml2:AttributeValue >no</saml2:AttributeValue> </saml2:Attribute> 在本示例中,请选择将群组作为具有成员资格值的各个属性

群组属性:当群组查找工具策略设置为群组作为单个属性的值时,Looker 会显示此字段。输入 IdP 使用的群组属性的名称。

群组成员值:当群组查找器策略设为将群组作为具有成员资格值的个人属性时,Looker 会显示此字段。输入用于指明用户是群组成员的值。

首选群组名称/角色/SAML 群组 ID:借助这组字段,您可以分配自定义群组名称,以及一个或多个已分配给 Looker 中相应 SAML 群组的角色:

  1. SAML Group ID(SAML 群组 ID)字段中输入 SAML 群组 ID。对于 Okta 用户,请输入 Okta 群组名称作为 SAML 群组 ID。SAML 群组中包含的 SAML 用户将被添加到 Looker 中的镜像群组。

  2. Custom Name(自定义名称)字段中输入镜像群组的自定义名称。此名称将显示在 Looker 的管理部分的群组页面上。

  3. 自定义名称字段右侧的字段中,选择将分配给群组中每位用户的一个或多个 Looker 角色

  4. 点击 + 可添加其他字段集,以配置其他镜像群组。如果您配置了多个群组,但想要移除某个群组的配置,请点击该群组的字段组旁边的 X

如果您修改之前在此屏幕中配置的镜像群组,群组的配置将会更改,但群组本身将保持不变。例如,您可以更改群组的自定义名称,这会更改群组在 Looker 的群组页面中的显示方式,但不会更改已分配的角色和群组成员。更改 SAML 群组 ID 后,系统会保留群组名称和角色,但系统会根据拥有新 SAML 群组 UD 的外部 SAML 群组中的用户重新分配群组成员。

对镜像群组所做的任何修改都将在该用户下次登录 Looker 时应用于该群组的用户。

高级角色管理

如果您启用了 Mirror SAML Groups(镜像 SAML 群组)开关,Looker 会显示这些设置。本部分中的选项决定了 Looker 管理员在配置 Looker 群组以及从 SAML 镜像的用户时所具有的灵活性。

例如,如果您希望您的 Looker 群组和用户配置与 SAML 配置严格匹配,请启用这些选项。当前三个选项全部启用后,Looker 管理员将无法修改镜像群组的成员资格,只能通过 SAML 镜像群组为用户分配角色。

如果您希望更灵活地在 Looker 中自定义群组,请关闭这些选项。您的 Looker 群组仍将镜像您的 SAML 配置,但您可以在 Looker 中执行额外的群组和用户管理,例如将 SAML 用户添加到特定于 Looker 的群组,或直接向 SAML 用户分配 Looker 角色。

对于新的 Looker 实例或之前未配置镜像组的实例,这些选项默认处于停用状态。

对于已配置镜像群组的现有 Looker 实例,这些选项默认处于启用状态。

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

禁止个人 SAML 用户接收直接角色:启用此选项可阻止 Looker 管理员直接向 SAML 用户分配 Looker 角色。SAML 用户只能通过其群组成员资格获得角色。如果 SAML 用户被允许成为原生(未镜像)Looker 群组的成员资格,他们仍然可以从镜像的 SAML 群组和原生 Looker 群组继承角色。对于之前直接分配了角色的任何 SAML 用户,在他们下次登录时,系统会移除这些角色。

如果停用此选项,Looker 管理员可以直接向 SAML 用户分配 Looker 角色,就像他们在 Looker 中以原生方式配置他们一样。

禁止在非 SAML 群组中直接加入:启用此选项可阻止 Looker 管理员将 SAML 用户直接添加到原生 Looker 群组。如果镜像的 SAML 群组可以成为原生 Looker 群组的成员,则 SAML 用户可以保留任何父级 Looker 群组中的成员资格。之前分配到原生 Looker 群组的所有 SAML 用户都将在下次登录时从这些群组中移除。

如果停用此选项,Looker 管理员可以将 SAML 用户直接添加到原生 Looker 群组。

禁止从非 SAML 群组继承角色:启用此选项可阻止镜像的 SAML 群组的成员从原生 Looker 群组继承角色。之前从父级 Looker 群组继承角色的任何 SAML 用户都将在下次登录时失去这些角色。

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

身份验证需要角色:如果此选项处于开启状态,则系统必须为 SAML 用户分配角色。任何没有分配角色的 SAML 用户都无法登录 Looker。

如果停用此选项,即使没有为 SAML 用户分配角色,他们也可以向 Looker 进行身份验证。没有分配角色的用户将无法在 Looker 中查看任何数据或执行任何操作,但可以登录 Looker。

停用镜像 SAML 群组

如果您想停止在 Looker 中镜像 SAML 群组,请关闭镜像 SAML 群组开关。所有空镜像 SAML 群组都将被删除。

非空镜像 SAML 群组仍可用于内容管理和角色创建。但是,您无法将用户添加到镜像 SAML 群组或从中移除用户。

可供选择的迁移方案

管理员和指定用户的备用登录信息

启用 SAML 身份验证后,系统会始终为普通用户停用 Looker 电子邮件/密码登录功能。此选项允许管理员和具有 login_special_email 权限的指定用户使用 /login/email 进行基于电子邮件的备用登录。

如果日后出现 SAML 配置问题,或者您需要支持某些在 SAML 目录中没有帐号的用户,启用此选项可作为 SAML 身份验证设置时的后备选项。

指定用于将 SAML 用户合并到 Looker 账号的方法

Merge Users With(使用以下用户合并)字段中,指定将首次 SAML 登录与现有用户帐号合并的方法。您可以合并以下系统中的用户:

  • Looker 电子邮件地址/密码(不适用于 Looker (Google Cloud Core))
  • Google
  • LDAP(不适用于 Looker (Google Cloud Core))
  • OIDC

如果您有多个系统,则可以在此字段中指定多个要合并的系统。Looker 会按照指定顺序从列出的系统中查询用户。例如,假设您使用 Looker 电子邮件地址/密码创建了一些用户,然后启用了 LDAP,现在又想使用 SAML。Looker 会先根据电子邮件地址/密码进行合并,然后再根据 LDAP 进行合并。

当用户通过 SAML 首次登录时,此选项会查找具有匹配电子邮件地址的帐号,将用户连接到现有帐号。如果用户没有现有帐号,系统会创建一个新用户帐号。

在使用 Looker (Google Cloud Core) 时合并用户

使用 Looker (Google Cloud Core) 和 SAML 时,合并的工作方式如上一部分所述。不过,只有在满足以下两个条件之一时才能执行:

  1. 条件 1:用户通过 SAML 协议使用其 Google 身份向 Looker (Google Cloud Core) 进行身份验证。
  2. 条件 2:在选择合并选项之前,已完成以下两个步骤:

如果您的实例不满足上述两个条件之一,则使用如下的用户合并选项将不可用。

合并后,Looker (Google Cloud Core) 将搜索具有相同电子邮件地址的用户记录。

测试用户身份验证

点击测试按钮以测试设置。测试将重定向到服务器,并打开浏览器标签页。该标签页会显示以下内容:

  • Looker 能否与服务器通信并进行验证。
  • Looker 从服务器获取的名称。您需要验证服务器返回正确的结果。
  • 显示如何发现信息的轨迹。如果信息不正确,请使用跟踪记录进行问题排查。如果您需要其他信息,可以查阅原始 XML 服务器文件。

提示

  • 即使 SAML 已部分配置,您可以随时运行此测试。在配置期间运行测试有助于了解哪些参数需要配置。
  • 测试会使用在 SAML Authentication 页面上输入的设置,即使这些设置尚未保存也是如此。测试不会影响或更改该页面上的任何设置。
  • 在测试期间,Looker 会使用 SAML RelayState 参数将信息传递给 IdP。IdP 应不加修改地将此 RelayState 值返回给 Looker。

保存并应用设置

输入您的信息且所有测试均通过后,请选中我已确认上述配置,并想在全局范围内应用该配置,然后点击 Update Settings(更新设置)进行保存。

用户登录行为

当用户尝试使用 SAML 登录 Looker 实例时,Looker 会打开登录页面。用户必须点击 Authenticate 按钮,通过 SAML 启动身份验证。

如果用户还没有有效的 Looker 会话,这是默认行为。

如果您希望用户在 IdP 通过身份验证后直接登录您的 Looker 实例,并绕过登录页面,请在登录行为下开启绕过登录页面

如果您使用的是 Looker(原始版本),则需要由 Looker 启用绕过登录页面功能。如需更新此功能的许可,请与 Google Cloud 销售专家联系提交支持请求。如果您使用的是 Looker (Google Cloud Core),那么当 SAML 用作主要身份验证方法时,绕过登录页面选项会自动可用,且默认处于停用状态。

启用绕过登录页面后,用户登录顺序将如下所示:

  1. 用户尝试连接到 Looker 网址(例如 instance_name.looker.com)。

  2. Looker 会确定用户是否已启用有效会话。为此,Looker 使用 Cookie AUTH-MECHANISM-COOKIE 来标识用户在上次会话中使用的授权方法。该值始终为以下值之一:samlldapoidcgoogleemail

  3. 如果用户确实启用了活动会话,则会转到请求的网址。

  4. 如果用户未启用活跃会话,系统会将其重定向到 IdP。在用户成功登录 IdP 后,IdP 会对其进行身份验证。然后,当 IdP 将用户发送回 Looker 时,Looker 会对该用户进行身份验证,并且其中包含的信息表明该用户已通过 IdP 进行身份验证。

  5. 如果 IdP 的身份验证成功,Looker 会验证 SAML 断言,接受身份验证,更新用户信息,并将用户转到请求的网址,从而绕过登录页面。

  6. 如果用户无法登录 IdP,或者 IdP 未授权其使用 Looker,则他们可能会留在 IdP 网站上,或被重定向到 Looker 登录页面,具体取决于 IdP。

SAML 响应超出限制

如果尝试进行身份验证的用户收到错误消息,提示 SAML 响应已超出大小上限,您可以提高 SAML 响应大小上限。

对于 Looker 托管的实例,请提交支持请求,更新 SAML 响应大小上限。

对于客户托管的 Looker 实例,您可以使用 MAX_SAML_RESPONSE_BYTESIZE 环境变量设置 SAML 响应大小上限(字节数)。例如:

export MAX_SAML_RESPONSE_BYTESIZE=500000

SAML 响应大小上限的默认值为 250,000 字节。