身份验证—可以在主机名灵活的情况下创建kerberos主体吗( Docker )

ttp71kqs  于 2021-06-21  发布在  Storm
关注(0)|答案(1)|浏览(342)

我特别尝试用ApacheStorm(1.0.2)实现这一点,但它与任何使用kerberos保护的服务都相关。我要在docker管理一个安全的风暴群。有一个开箱即用的 Docker 的形象有很多风暴,他们的工作非常好。我在用https://github.com/baqend/docker-storm. 我也有风暴运行安全rhel虚拟机的。
然而,我的理解是kerberos将主机名与主体联系起来,所以如果我要使客户机可以使用servicefoobar,我需要创建的主体 foobar/hostname@REALM . 然后客户端服务可能会连接到 hostname 与校长 foobar ,kerberos将查找 foobar/hostname@REALM 在它的数据库中,找到它在那里(因为我们创建了一个具有该名称的主体),一切都将正常工作。
在我的例子中,这里描述了:https://docs.hortonworks.com/hdpdocuments/hdp2/hdp-2.3.0/bk_installing_manually_book/content/configure_kerberos_for_storm.html. nimbus认证为 storm/<nimbus host>@REALM ,并且主管和外部客户验证为 storm/REALM . 一切正常。
但在2017年,我们有了容器,主机名不再是静态的。那么,我该如何kerberize一个在docker数据中心(或kubernetes等)运行的服务呢?我必须为服务器身份验证附加一个未知的主机名。我想我可以为所有可能的主机名创建一个主体,并在启动时根据容器所在的位置动态地选择一个合适的主机名,但这很困难。
我是不是误解了kerberos的工作原理?有没有我看不到的解决办法?我在网上看到很多人在docker上运行storm的例子,但我无法想象没有人的集群是安全的。

sxpgvts3

sxpgvts31#

我不知道ApacheStorm或docker,但根据以前在集群中使用jboss的工作,在集群中,入站客户机可以连接到可能多个不同主机中的任何一个,然后,您只需在负载平衡器上为整个池分配一个虚拟名称,并根据虚拟名称而不是主机级别上的单个主机名称对服务进行kerberize。因此,如果要使服务foobar对客户端可用,则需要创建foobar的服务主体(spn)/virtualhostname@realm 在您的目录中使用。将该spn分配给用户帐户(而不是计算机帐户),使其能够灵活地处理使用该spn的任何kerberized服务。如果您使用的是activedirectory,则必须创建一个包含spn的keytab,并将keytab放置在运行kerberized服务示例foobar的每个主机上/virtualhostname@realm.

相关问题