我们正在讨论在我们的大数据集群中使用Kerberos的问题。我们的管理员想要使用LDAP进行身份验证和授权。我在互联网上查阅了一些信息,得到了不同的回复,但是没有明确理解为何要使用Kerberos。
我知道你可以将Kerberos与LDAP一起使用,但我没有清晰地了解到使用Kerberos+LDAP相比仅使用LDAP的好处。有人能解释一下吗?
我们正在讨论在我们的大数据集群中使用Kerberos的问题。我们的管理员想要使用LDAP进行身份验证和授权。我在互联网上查阅了一些信息,得到了不同的回复,但是没有明确理解为何要使用Kerberos。
我知道你可以将Kerberos与LDAP一起使用,但我没有清晰地了解到使用Kerberos+LDAP相比仅使用LDAP的好处。有人能解释一下吗?
Kerberos是企业内部网络行业标准的单点登录协议。LDAP一直更多地是一个目录查找协议。然而,LDAP也可以进行认证,因为认证方面是在该协议本身构思数年之后加入的。使用LDAP认证,每次认证尝试都会对目录身份验证服务器产生负载,因此在这个意义上,它可能经常影响您的目录身份验证服务器。使用Kerberos,第一次认证后,客户端持有一张有效期默认为10小时的票据,因此不需要再次过载您的目录身份验证服务器进行其他认证尝试。并且客户端将负责获取身份验证“票证”到目标资源,而不是应用程序服务器代表客户端执行此操作,这是那些使用LDAP身份验证机制的应用程序服务器必须执行的操作。此外,如果未正确配置,LDAP将以明文形式发送认证尝试。即使您配置了通过LDAPS进行加密身份验证,那么您还需要获得SSL证书来执行此操作,然后您还需要解决在任何应用程序服务器上以明文形式存储用户名/密码的问题,除非有人采取额外的步骤对其进行加密。简而言之,作为身份验证协议,Kerberos比LDAP更加安全、分散,并且对您的目录身份验证服务器产生的负载更少。在纯微软活动目录环境中,Kerberos将为您执行身份验证和授权,而目录查找始终使用LDAP。此外,LDAP不是单点登录。用户必须始终手动输入用户名/密码,而使用Kerberos则不必这样做。
如果您使用Kerberos进行身份验证,使用LDAP进行目录查找和/或基于组的授权,则最佳实践是这样做,因为RFC中LDAP最初是作为仅目录查找协议而设计的。实际上,当您使用诸如“Active Directory用户和计算机”实用程序之类的工具时,当您使用它时会发生什么情况,就是您通过传递Kerberos身份验证来允许自己查询AD LDAP服务,然后从那一点开始,您的LDAP查询就是纯粹的LDAP。在由Windows和Linux等不同操作系统组成的混合环境中,您始终可以使用Kerberos进行身份验证,但这需要在应用程序端进行更多的操作,例如您需要由AD管理员为您生成一个keytab,但基于组的授权必须是LDAP,当然目录查找始终是LDAP。ktutil
(与kinit
和klist
一同安装)还是在Windows上使用ktab.exe
(与Sun/Oracle JRE一同安装),都可以创建一个keytab。 - Samson Scharfrichter