配置 Kerberos 认证

Kerberos 是一种安全的、基于票证的身份验证协议,旨在利用密钥加密技术为客户端-服务器应用程序提供强有力的网络身份验证。

准备工作

注: Kerberos 是一项可申请的功能, VDEV-196042 ( Kerberos 桌面单点登录,请访问 krb5 )。 如需申请此功能,请联系您的 IBM 销售代表或 IBM 联系人,并表明您希望启用此功能的意愿。 如果您有相应权限,也可以使用该功能编号提交支持工单。 IBM® Verify 试用订阅用户无法创建支持工单。
  • 您必须具有管理许可权,才能完成此任务。
  • 以管理员身份登录管理控制台 IBM Verify 如需了解更多信息,请参阅《 访问 IBM Verify 》。

关于此任务

Kerberos 提供三项关键的安全服务:身份验证、授权和计费。 它有助于在不安全的网络上对用户进行身份验证,同时避免以明文形式传输密码。 它允许用户只需验证一次身份,即可访问多项服务,而无需再次输入凭据。

使用 Kerberos 的优势:
  • 防止密码通过网络传输。
  • 防止重放攻击(时间戳确保票据在限定时间内有效)。
  • 支持单点登录,因此是大型企业网络的可扩展方案。
Kerberos 的关键组件
  1. 密钥分发中心(KDC)
    • 中央可信机构
    • 包含两个逻辑组件:
      • 身份验证服务器 (AS):验证用户身份
      • 票证授予服务器(TGS):签发服务票证
  2. 客户端:请求访问的用户或应用程序。
  3. 服务服务器:客户端希望访问的资源(例如,文件服务器、电子邮件服务器)。
SPNEGO 如何与 Kerberos 配合使用
SPNEGO(简单且受保护的GSS-API协商机制)是一种关键的辅助协议,用于在异构环境中扩展 Kerberos 的功能。
下文描述了浏览器使用 SPNEGO 访问由 Kerberos 保护的 Web 应用程序时的身份验证过程:
  1. 客户端请求访问 Web 应用程序以获取某个 Web 资源。
  2. 该请求通过 SPNEGO 进行解析,以检查其中是否包含所需的 Authorisation 头部。 如果请求中未包含该标头,或者该标头不符合 GSS 规范,则会向浏览器发送响应,告知下一个受支持的身份验证算法。 该过程将持续进行,直到自动收到所需的令牌。
  3. 浏览器现在向KDC中的TGS请求 Kerberos 服务票证。
  4. TGS 会与 Active Directory 用户建立内部连接,并向浏览器返回一个基于时间的票证。
  5. TGS 生成的票据现已包含在 Authorisation 头部中,并通过 SPNEGO 进行解析。 SPNEGO 获取用户信息并调用 GSS API。
  6. 该 API 加载 Kerberos 的配置( KRB5 配置)并验证凭据。 如果验证通过,请求将发送至 Web 应用程序资源。
  7. Web 应用程序资源处理该请求,并将响应发送至浏览器。

过程

  1. Verify请以管理员身份登录。 点击个人资料图标,然后点击 “切换至管理员 ”。
  2. 选择 “安全 ”>“ Kerberos ”。
  3. 上传该 .keytab 文件。 更多详细信息,请参阅 “配置 keytab 文件 ”。
    keytab 文件(密钥表文件)是一种用于存储 Kerberos 主体及其相关加密密钥的文件。 它允许服务和应用程序自动向 Kerberos 进行身份验证,无需手动输入密码,也不需要以明文形式存储密码。

    文件内容可包含 Kerberos 主体、加密密钥、密钥版本号(KVNO)以及加密类型。

  4. 在相应的字段中输入服务主体名称(SPN)。 您可以添加多个 SPN。 更多详细信息,请参阅 “配置服务主体名称”
    服务主体名称(SPN)是 Kerberos 环境中服务实例的唯一标识符。 这本质上是客户端用于向运行在特定服务器上的特定服务请求认证票据的地址。 它能唯一标识服务,并使客户端能够从KDC请求正确的服务凭证。
    注意:
    • 一个账户可以拥有多个SPN。
    • 每个SPN只能注册到一个账户。
    • 重复的 SPN 会导致身份验证失败。
  5. 从下拉菜单中选择支持的身份提供商
    注意: 系统列出了除 IBMid 和社交身份之外的所有身份提供商。
  6. IBM Verify启用即时(JIT)配置 在用户首次使用 进行身份验证时,在服务提供商处创建或更新用户账户。 当服务提供商不需要在用户尝试访问服务之前就创建或知晓用户身份信息时,应使用即时配置(JIT)。
  7. 用户映射规则 :您可以使用 CELx 编辑器定义一个表达式,以便在用户配置过程中转换 Kerberos userPrincipalName 凭据,格式如下: {"p": {"username": [$expression$]}} 其中 $expression 代表您的自定义表达式。
    例如,
    {"p": {"username": [requestContext.userPrincipalName[0].split('@')[0]]}}
    CEL 评估规则
    • CEL 表达式必须返回 JSON 格式。 如果返回的是其他数据类型,则请求失败
    • 如果 CEL 表达式无效或有误,则求值将失败。
    注意:
    • 默认情况下,如果身份提供商选为 “云目录 ”,且 CEL 表达式未显式修改数据源,则系统将采用所选的身份提供商。
    • 如果通过 CEL 显式设置了身份提供商,则该设置将优先于所选的身份提供商。
    • 其他身份验证来源(例如 SAML 或 OIDC)也遵循同样的行为规则。
    更多详情请参阅 “属性函数 ”。
  8. 确保该规则有效。
    1. 选择 “显示”
      userPrincipalName一个示例 JSON 编辑器显示了.
    2. 选择 “运行测试 ”。
    3. 请确认 “结果 ”部分返回的值是否正确。
      有关编写自定义规则的更多信息,请参阅 “属性函数 ”。
    4. 选择 “保存 ”。