如果 Kerberos keytab 有多个条目,如何防止错误的人使用一个条目?

If a Kerberos keytab has multiple entries, how keep wrong person from using an entry?

Kerberos keytab 文件按照惯例位于 /etc/krb5/krb5.keytab,这是一个非用户特定的位置。该密钥表(和所有密钥表)可以包含多个条目。

假设一台计算机有三个用户:Alice、Bob 和 Eve。他们每个人都通过以下过程向共享密钥表添加一个条目,但使用各自的名称:

$ ktutil
ktutil:  addent -password -p alice@REALM.COM -e aes256-cts -k 1
Password for alice@REALM.COM:
ktutil:  list -e
slot KVNO Principal
---- ---- ---------------------------------------------------------------------
   1    1            alice@REALM.COM (aes256-cts-hmac-sha1-96)
ktutil:  wkt krb5.keytab

稍后,Alice、Bob 和 Eve 都可以使用他们的密钥表条目分别像这样验证脚本:

> kinit alice@REALM.COM -k -t mykeytab; myscript

是什么阻止 Eve 在密钥表中使用 Alice 或 Bob 的条目?我还没有发现任何明确涵盖如何保护具有多个条目的 keytabs 的内容。如果我们不想让 Eve 使用 Alice 的条目,他们是否应该有单独的受文件权限保护的密钥表?

或者,这是 Kerberos 信任模型吗?如果他们每个人都可以访问这个密钥表,那么我们就隐含地信任他们使用任何条目?我们应该只让受信任的服务共享密钥表吗?

提前感谢您的提示。只是想确保我正确理解信任模型。

密钥表文件包含一个(或多个)Kerberos 主体的密码,并使用一个(或多个)密码进行预加密。实际上这是一个 历史 密码,新密码被添加 "on top" 旧密码。

Keytab 文件必须像任何其他密码文件一样受到保护,即具有严格的 FS 访问权限。

使用一个密钥表文件作为多个主体的转储是没有意义的 - 除非所有这些主体都被 运行 在 相同 下的各种服务或作业使用Linux 帐户。即便如此,这也可能是个坏主意。
例如,了解 Ambari 如何管理各种 Hadoop 服务的 keytab(包括由所有具有 HTTP 接口的服务共享的 "spnego" keytab),并关注 chownchmod 命令:
https://ambari.apache.org/1.2.5/installing-hadoop-using-ambari/content/ambari-kerb-1-4.html