通过管理菜单的身份验证部分中的 SAML 页面,您可以配置 Looker 以使用安全断言标记语言 (SAML) 对用户进行身份验证。本页介绍了该流程,并提供了将 SAML 群组与 Looker 角色和权限相关联的说明。
要求
仅当满足以下条件时,Looker 才会显示管理菜单的身份验证部分中的 SAML 页面:
- 您拥有管理员角色。
- 您的 Looker 实例已启用 SAML。
如果满足这些条件,但您没有看到 SAML 页面,请提交支持请求,以便在您的实例中启用 SAML。
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 中,此字段可能称为“Post Back 网址”“Recipient”或“Destination”等。
您需要提供的信息是您通常使用浏览器访问 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 的管理部分的 SAML 身份验证页面,查看以下配置选项。请注意,您对配置选项所做的任何更改只有在您测试并保存页面底部的设置后才会生效。
SAML 身份验证设置
Looker 需要 IdP 网址、IdP 颁发者和 IdP 证书来对您的 IdP 进行身份验证。
在 IdP 端配置 Looker 的过程中,您的 IdP 可能会提供 IdP 元数据 XML 文档。此文件包含 SAML 身份验证设置部分中请求的所有信息。如果您有此文件,可以在 IdP Metadata(IdP 元数据)字段中上传该文件,系统会自动填充此部分中的必填字段。或者,您也可以填写从 IdP 端配置期间获得的输出中的必填字段。如果您上传 XML 文件,则无需填写这些字段。
- IdP 元数据(可选):粘贴包含 IdP 信息的 XML 文档的公开网址,或将该文档的全部文本粘贴到此处。Looker 会解析该文件以填充必需字段。
如果您未上传或粘贴 IdP 元数据 XML 文档,请改为在 IdP 网址、IdP Issuer 和 IdP Certificate 字段中输入 IdP 身份验证信息。
IdP 网址:Looker 将前往此网址来验证用户身份。在 Okta 中,这称为“重定向网址”。
IdP Issuer(IdP 发布者):IdP 的唯一标识符。在 Okta 中,这称为“外部密钥”。
IdP 证书:用于让 Looker 验证 IdP 响应签名的公钥。
这三个字段共同作用,可让 Looker 确认一组已签名的 SAML 断言确实来自可信的 IdP。
- 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 用于用户电子邮件地址的属性名称。
名字属性:IdP 用于用户名字的属性名称。
LName Attr:您的 IdP 用于用户姓氏的属性名称。
将 SAML 属性与 Looker 用户属性配对
您还可以选择在用户登录时使用 SAML 特性中的数据自动填充 Looker 用户属性中的值。例如,如果您已配置 SAML 以建立特定于用户的数据库连接,则可以将 SAML 属性与 Looker 用户属性配对,以便在 Looker 中建立特定于用户的数据库连接。
如需将 SAML 属性与相应的 Looker 用户属性配对,请执行以下操作:
- 在 SAML 属性字段中输入 SAML 属性的名称,然后在 Looker 用户属性字段中输入要与之配对的 Looker 用户属性的名称。
- 如果您希望要求提供 SAML 属性值才能允许用户登录,请勾选 Required。
- 点击 +,然后重复上述步骤以添加更多属性对。
群组和角色
您可以选择让 Looker 创建与外部管理的 SAML 群组对应的群组,然后根据用户对应的 SAML 群组向用户分配 Looker 角色。当您更改 SAML 群组成员资格时,这些更改会自动传播到 Looker 的群组配置中。
通过镜像 SAML 群组,您可以使用外部定义的 SAML 目录来管理 Looker 群组和用户。这样,您就可以在一个位置管理多个软件即服务 (SaaS) 工具(例如 Looker)的群组成员资格。
如果您开启 Mirror SAML Groups(镜像 SAML 群组),Looker 将为引入到系统中的每个 SAML 群组创建一个 Looker 群组。您可以在 Looker 的管理部分的群组页面上查看这些 Looker 群组。群组可用于为群组成员分配角色、设置内容访问权限控制和分配用户属性。
默认群组和角色
默认情况下,镜像 SAML 群组开关处于关闭状态。在这种情况下,您可以为新的 SAML 用户设置默认群组。在新用户群组和新用户角色字段中,输入您希望在新的 Looker 用户首次登录 Looker 时为其分配的任何 Looker 群组或角色名称:
这些群组和角色会在新用户首次登录时应用。这些群组和角色不会应用于现有用户,而且如果在用户首次登录后从用户身上移除,也不会重新应用。
如果您之后启用镜像 SAML 群组,系统会在用户下次登录时移除这些默认角色,并替换为镜像 SAML 群组部分中分配的角色。这些默认选项将不再可用或分配,并且将完全被镜像群组配置所取代。
启用镜像 SAML 群组
如果您使用的是 Looker (Google Cloud Core) 实例,建议您仅针对主要身份验证方法启用群组镜像,而不要针对备用 OAuth 身份验证启用群组镜像。如果您同时为主身份验证方法和辅助身份验证方法启用群组镜像,则会发生以下行为:
- 如果用户合并了身份,无论用户使用哪种实际的身份验证方法登录,群组镜像都会匹配主要身份验证方法。
- 如果用户没有合并身份,群组镜像将与用于登录的身份验证方法相匹配。
启用镜像群组的步骤
如果您选择在 Looker 中镜像 SAML 群组,请开启镜像 SAML 群组开关。Looker 会显示以下设置:
群组查找器策略:选择 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>
在这种情况下,请选择将群组作为具有成员资格值的单独属性。
“Groups”属性:当群组查找器策略设置为将群组作为单个属性的值时,Looker 会显示此字段。输入 IdP 使用的群组属性的名称。
群组成员值:当群组查找器策略设置为将群组作为具有成员值的单个属性时,Looker 会显示此字段。输入表示用户是群组成员的值。
首选群组名称/角色/SAML 群组 ID:借助这组字段,您可以分配自定义群组名称以及分配给 Looker 中相应 SAML 群组的一个或多个角色:
在 SAML Group ID(SAML 群组 ID)字段中输入 SAML 群组 ID。对于 Okta 用户,请输入 Okta 群组名称作为 SAML 群组 ID。SAML 群组中的 SAML 用户将被添加到 Looker 中的镜像群组。
在自定义名称字段中,为镜像群组输入自定义名称。此名称将显示在 Looker 的管理部分的群组页面上。
在自定义名称字段右侧的字段中,选择将分配给群组中每个用户的一个或多个 Looker 角色。
点击
+
可添加其他字段组,以配置其他镜像组。如果您配置了多个群组,并且想要移除某个群组的配置,请点击该群组的字段集旁边的X
。
如果您修改之前在此界面中配置的镜像群组,该群组的配置会发生变化,但群组本身会保持不变。例如,您可以更改群组的自定义名称,这会更改群组在 Looker 的群组页面中的显示方式,但不会更改分配的角色和群组成员。更改 SAML 群组 ID 会保留群组名称和角色,但群组成员会根据外部 SAML 群组(具有新的 SAML 群组 ID)的成员重新分配。
对镜像群组所做的任何修改都会在相应群组的用户下次登录 Looker 时应用于这些用户。
高级角色管理
如果您已启用镜像 SAML 群组开关,Looker 会显示这些设置。此部分中的选项用于确定 Looker 管理员在配置从 SAML 镜像的 Looker 群组和用户时有多大的灵活性。
例如,如果您希望 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 群组的角色。
Auth Requires Role:如果此选项处于开启状态,则 SAML 用户必须具有已分配的角色。未分配角色的任何 SAML 用户都将无法登录 Looker。
如果此选项处于关闭状态,即使未向 SAML 用户分配任何角色,他们也可以通过身份验证来访问 Looker。未分配角色的用户将无法在 Looker 中查看任何数据或执行任何操作,但可以登录 Looker。
停用镜像 SAML 群组
如果您想停止在 Looker 中镜像 SAML 群组,请关闭镜像 SAML 群组开关。关闭开关会导致以下行为:
- 系统会立即删除没有任何用户的任何镜像 SAML 群组。
- 任何不包含用户的镜像 SAML 群组都会标记为孤立群组。如果此群组中的所有用户在 31 天内均未登录,系统会删除该群组。无法再向孤立的 SAML 群组添加用户或从中移除用户。
可供选择的迁移方案
管理员和指定用户的备用登录方式
启用 SAML 身份验证后,系统会一直为普通用户停用 Looker 电子邮件地址/密码登录。此选项允许管理员和具有 login_special_email
权限的指定用户使用 /login/email
以基于电子邮件地址的备用方式登录。
此选项是设置 SAML 身份验证期间的一个后备选项,如果日后出现 SAML 配置问题,或者您需要支持某些在 SAML 目录中没有账号的用户,此选项会非常有用。
指定用于将 SAML 用户合并到 Looker 账号的方法
在合并用户时使用字段中,指定用于将首次 SAML 登录与现有用户账号合并的方法。您可以合并以下系统中的用户:
- Looker 电子邮件地址/密码(不适用于 Looker (Google Cloud Core))
- LDAP(不适用于 Looker (Google Cloud Core))
- OIDC
如果您有多个系统,可以在此字段中指定要合并的多个系统。Looker 将按指定顺序从所列系统中查找用户。例如,假设您之前使用 Looker 电子邮件地址和密码创建了一些用户,然后启用了 LDAP,现在您想使用 SAML。Looker 会先按电子邮件地址和密码合并,然后再按 LDAP 合并。
当用户首次通过 SAML 登录时,此选项会查找具有匹配电子邮件地址的账号,并将用户关联到其现有账号。如果用户没有现有账号,系统会创建一个新用户账号。
使用 Looker (Google Cloud Core) 时合并用户
如果您使用的是 Looker(Google Cloud 核心)和 SAML,则合并功能会按上一部分中所述的方式运行。不过,只有在满足以下两个条件之一时,才能实现此目的:
- 条件 1:用户通过 SAML 协议使用其 Google 身份向 Looker (Google Cloud Core) 进行身份验证。
条件 2:在选择合并选项之前,您已完成以下两个步骤:
- Google Cloud 中使用 Cloud Identity 的联合用户身份
- 使用联合身份用户设置 OAuth 身份验证作为备用身份验证方法。
如果您的实例不满足这两个条件中的任何一个,则无法使用使用选项合并用户。
合并时,Looker (Google Cloud Core) 会搜索具有完全相同电子邮件地址的用户记录。
测试用户身份验证
点击测试按钮以测试您的设置。测试将重定向到服务器并打开浏览器标签页。该标签页会显示:
- Looker 是否能够与服务器通信并进行验证。
- Looker 从服务器获取的名称。您需要验证服务器是否返回了正确的结果。
- 用于显示信息查找方式的轨迹。如果信息不正确,请使用轨迹进行问题排查。如果您需要更多信息,可以读取原始 XML 服务器文件。
提示:
- 您可以随时运行此测试,即使 SAML 仅部分配置也是如此。在配置期间运行测试有助于了解哪些参数需要配置。
- 即使您尚未保存这些设置,测试也会使用在 SAML 身份验证页面上输入的设置。此测试不会影响或更改该页面上的任何设置。
- 在测试期间,Looker 会使用 SAML
RelayState
参数将信息传递给 IdP。IdP 应将此RelayState
值原封不动地返回给 Looker。
保存并应用设置
输入完信息并完成所有测试后,勾选我已确认上述配置,并希望启用全局应用,然后点击更新设置以保存。
用户登录行为
当用户尝试使用 SAML 登录 Looker 实例时,Looker 会打开登录页面。用户必须点击身份验证按钮才能通过 SAML 启动身份验证。
如果用户尚无有效的 Looker 会话,则这是默认行为。
如果您希望用户在 IdP 对其进行身份验证后直接登录 Looker 实例,并绕过登录页面,请在登录行为下启用绕过登录页面。
如果您使用的是 Looker(原始版本),则需要由 Looker 启用绕过登录页面功能。如需更新许可以使用此功能,请与 Google Cloud 销售专员联系或提交支持请求。如果您使用的是 Looker (Google Cloud Core),则当 SAML 用作主要身份验证方法时,系统会自动提供绕过登录页面选项,并且默认处于停用状态。
启用绕过登录页面后,用户登录顺序如下:
用户尝试连接到 Looker 网址(例如
instance_name.looker.com
)。Looker 会确定用户是否已启用有效会话。为此,Looker 会使用 Cookie
AUTH-MECHANISM-COOKIE
来识别用户在上一个会话中使用的授权方法。该值始终是以下值之一:saml
、ldap
、oidc
、google
或email
。如果用户确实启用了有效会话,系统会将用户转到所请求的网址。
如果用户未启用有效会话,系统会将其重定向到 IdP。当用户成功登录 IdP 时,IdP 会对用户进行身份验证。然后,当 IdP 将用户重定向回 Looker 时,Looker 会对用户进行身份验证,同时会收到表明用户已通过 IdP 身份验证的信息。
如果 IdP 的身份验证成功,Looker 随后会验证 SAML 断言、接受身份验证、更新用户信息,并将用户转发到所请求的网址,从而绕过登录页面。
如果用户无法登录 IdP,或者未获得 IdP 授权来使用 Looker,那么根据 IdP 的不同,他们将停留在 IdP 的网站上,或者被重定向到 Looker 的登录页面。
SAML 响应超出限制
如果尝试进行身份验证的用户收到错误消息,指出 SAML 响应已超出最大大小,您可以增加允许的最大 SAML 响应大小。
对于 Looker 托管的实例,请创建支持请求以更新 SAML 响应的最大大小。
对于客户托管的 Looker 实例,您可以使用 MAX_SAML_RESPONSE_BYTESIZE
环境变量设置 SAML 响应大小上限(以字节为单位)。例如:
export MAX_SAML_RESPONSE_BYTESIZE=500000
SAML 响应大小上限的默认值为 250,000 字节。