你可以创build主机名是灵活的Kerberos主体? (泊坞)

我特意试图用Apache Storm(1.0.2)来做到这一点,但它与任何使用Kerberos保护的服务都是相关的。 我试图在Docker中运行安全的Storm集群。 Storm有很多现成的docker图片,而且他们的工作很不安全。 我使用https://github.com/Baqend/docker-storm 。 我也有Storm在RHEL VM上安全运行。

但是,我的理解是Kerberos将主机名与主体绑定,所以如果我为客户端提供服务foobar,则需要创buildfoobar/hostname@REALM的主体。 然后,一个客户端服务可能会连接到hostname与主要foobar ,Kerberos将查找foobar/hostname@REALM在其数据库中,发现它在那里(因为我们创build一个正是这个名字的主体),一切都会工作。

在我的情况下,这里描述: https : //docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.3.0/bk_installing_manually_book/content/configure_kerberos_for_storm.html 。 nimbusauthentication为storm/<nimbus host>@REALM ,主pipe和外部客户authentication为storm/REALM 。 一切正常。

但在2017年,我们有容器和主机名不再是静态的。 那么,我将如何Kerberize在Docker数据中心(或Kubernetes等)中运行的服务? 我必须将未知的主机名附加到服务器身份validation。 我想我可以为所有可能的主机名创build一个主体,并根据容器的存储位置在启动时dynamic地select正确的主体,但这就是kludgy。

我误解了Kerberos的工作原理吗? 这里有没有解决方法,我不明白? 我在网上看到多个在Docker上运行Storm的人的例子,但我无法想象没有人的群集是安全的。

我不知道Apache Storm或者Docker,但是基于以前在一个集群中使用JBOSS的工作,在这个集群中,一个入站客户端可以连接到可能数量的不同主机中的任何一个,那么你只需要给整个在负载均衡器池中,根据虚拟名称而不是主机级别的单个主机名来克服服务。 因此,如果您要将服务foob​​ar提供给客户端,则需要在您的目录中创buildfoob​​ar / virtualhostname @ REALM的服务主体(SPN),以便与服务进行比较。 您将该SPN分配给用户帐户(而不是计算机帐户),使其可以灵活地使用使用该SPN的任何Kerberized服务。 如果您使用的是Active Directory,则必须在其中创build一个SPN的密钥表,然后将密钥表放在运行Kerberized服务实例foob​​ar / virtualhostname @ REALM的每个主机上。