使用SAML配置身份认证

发布日期:2020-12-30 09:40
3297585-50f9c9530cef962d
如何在Cloudera Manager中使用SAML配置身份认证。
Cloudera Manager支持安全性声明标记语言(SAML),这是一种基于XML的开放标准数据格式,用于在各方之间,尤其是在身份提供者(IDP)和服务提供者(SP)之间交换身份认证和授权数据。SAML规范定义了三个角色:Principal(通常是用户)、IDP和SP。在SAML解决的用例中,委托人(用户代理)向服务提供商请求服务。服务提供者从IDP请求并获取身份声明。基于此断言,SP可以做出访问控制决定,换句话说,它可以决定是否为连接的Principal执行某些服务。
SAML的主要用例称为Web浏览器单点登录(SSO)。使用用户代理(通常是Web浏览器)的用户请求受SAML SP保护的Web资源。SP希望知道发出请求的用户的身份,因此通过用户代理向SAML IDP发出身份认证请求。在此术语的上下文中,Cloudera Manager充当SP。本主题讨论配置过程中的Cloudera Manager部分。它假定您在一般意义上熟悉SAML和SAML配置,并且已经部署了有效的IDP。
注意
• Cloudera Manager支持SP和IDP发起的SSO。
• Cloudera Manager中的注销操作将向IDP发送一次注销请求。
• 已使用SiteMinder和Shibboleth的特定配置对SAML身份认证进行了测试。尽管SAML是标准,但是不同IDP产品之间的配置存在很大差异,因此其他IDP实施或SiteMinder和Shibboleth的其他配置可能无法与Cloudera Manager互操作。
• 如果SAML配置不正确或不起作用,要绕过SSO,您可以使用URL使用Cloudera Manager本地帐户登录: http://cm_host:7180/cmf/localLogin

准备文件
您将需要准备以下文件和信息,并将其提供给Cloudera Manager:
• Java Keystore,其中包含供Cloudera Manager用来签名/加密SAML消息的私钥。有关创建Java Keystore的指导,请参阅了解 Keystore 和 truststore 。
• IDP中的SAML元数据XML文件。该文件必须包含根据SAML元数据互操作性配置文件认证IDP使用的签名/加密密钥所需的公共证书。例如,如果您正在使用Shibboleth IdP,则元数据文件位于以下位置: https://:8080/idp/shibboleth.
注意
有关如何从IDP获取元数据XML文件的指导,请与IDP管理员联系或查阅文档以获取所使用IDP版本的信息。
• 用来标识Cloudera Manager实例的实体ID
• 如何在SAML身份认证响应中传递用户ID:
o 作为属性。如果是这样,则使用什么标识符。
o 作为NameID。
• 建立Cloudera Manager角色的方法:
o 从身份认证响应中的属性:
• 该属性将使用什么标识符
• 将传递什么值来指示每个角色
o 从每次使用都会被调用的外部脚本中:
• 该脚本将用户标识设为$ 1
• 该脚本设置退出代码以反映成功的身份认证。退出代码的有效值在0到127之间。这些值在Cloudera Manager中用于将经过身份认证的用户映射到Cloudera Manager中的用户角色。

配置Cloudera Manager
1) 登录到Cloudera Manager管理控制台。
2) 选择管理>设置。
3) 为 类别过滤器选择外部身份认证以显示设置。
4) 将“外部身份认证类型”属性设置为SAML(“ SAML”将忽略“身份认证后端顺序”属性)。
5) 将“ SAML IDP元数据文件的路径”属性设置为指向IDP元数据文件。
6) 将“ SAML Keystore文件的路径”属性设置为指向先前准备的Java Keystore。
7) 在“ SAML Keystore密码”属性中,设置Keystore密码。
8) 在“ SAML签名/加密专用密钥的别名”属性中,设置用于标识供Cloudera Manager使用的专用密钥的别名。
9) 在“ SAML签名/加密私钥密码”属性中,设置私钥密码。
10) 在以下情况下,设置SAML实体ID属性:
• 同一IDP使用了多个Cloudera Manager实例(每个实例需要一个不同的实体ID)。
• 实体ID由组织政策分配。
11) 在“ SAML响应中的用户ID的源”属性中,设置是从属性还是从NameID获取用户ID。
如果将使用属性,请在用户ID属性的SAML属性标识符中设置属性名称。默认值为用于用户ID的常规OID,因此可能不需要更改。
12) 在“ SAML角色分配机制”属性中,设置是从属性还是从外部脚本完成角色分配。
• 如果将使用属性:
o 如果需要,在用户角色属性的SAML属性标识符中,设置属性名称。默认值为用于OrganizationalUnits的常规OID,因此可能无需更改。
• 如果将使用外部脚本,请在“ SAML角色分配脚本的路径”属性中设置该脚本的路径。确保脚本是可执行的(可执行二进制文件很好-不必是Shell脚本)。
13) 保存更改。Cloudera Manager将运行一组认证,以确保可以找到元数据XML和 Keystore,并且密码正确。如果看到认证错误,请在继续操作之前更正问题。
14) 重新启动Cloudera Manager Server。
在为Cloudera Manager配置身份认证之后,请为经过身份认证的用户配置授权。通过将经过身份认证的用户映射到Cloudera Manager用户角色来完成此操作。有关更多信息,请参阅《Cloudera Manager 用户角色》 。

配置IDP
重新启动Cloudera Manager Server之后,它将尝试重定向到IDP登录页面,而不显示正常的CM页面。这可能成功也可能不成功,具体取决于IDP的配置方式。无论哪种情况,都需要将IDP配置为识别CM,然后身份认证才能真正成功。此过程的详细信息特定于每个IDP实施-有关详细信息,请参阅IDP文档。如果您正在使用Shibboleth IdP,则此处 提供了有关配置IdP与服务提供商进行通信的信息。
1) 从中下载Cloudera Manager的SAML元数据XML文件 。http://hostname:7180/saml/metadata
2) 检查元数据文件,并确保文件中包含的所有URL都可以被用户的Web浏览器解析。IDP将在此过程中的各个时间点将Web浏览器重定向到这些URL。如果浏览器无法解决它们,则身份认证将失败。如果URL不正确,则可以手动修复XML文件或将CM配置中的Entity Base URL设置为正确的值,然后重新下载该文件。
3) 使用IDP提供的任何机制将此元数据文件提供给IDP。
4) 确保IDP有权访问必需的任何公共证书,以认证先前提供给Cloudera Manager的私钥。
5) 确保将IDP配置为使用Cloudera Manager配置为期望的属性名称提供用户ID和角色(如果相关)。
6) 确保对IDP配置的更改已生效(可能需要重新启动)。

验证身份认证和授权
1) 返回Cloudera Manager管理控制台并刷新登录页面。
2) 尝试使用已授权用户的凭据登录。身份认证应该完成,您应该看到Home > Status选项卡。
3) 如果身份认证失败,您将看到IDP提供的错误消息。Cloudera Manager不参与该过程的这一部分,您必须确保IDP正常工作以完成身份认证。
如果身份认证成功,但是用户无权使用Cloudera Manager,则Cloudera Manager会将他们带到错误页面,该错误页面会说明情况。如果应该被授权的用户看到此错误,那么您将需要认证其角色配置,并确保通过属性或外部脚本将其正确传达给Cloudera Manager。Cloudera Manager日志将提供有关建立用户角色失败的详细信息。如果在角色映射期间发生任何错误,Cloudera Manager将假定用户未经授权。
分享到:
推荐精彩博文