为了方便起见,我在 Docker 容器上运行了 MIT Kerberos KDC 和 Kadmin 服务器实例。我能够毫无问题地构建和运行它,只需提取重要的配置即可完成 Docker 卷。我还通过 kldap 模块将 KDC 连接到 OpenLDAP。
但是,我发现一个可能的问题:每次重建时,KDC 似乎都会启动不同的钥匙串或其他东西,这会导致旧的身份验证中断。所有这些都是有道理的,不是问题。
我的问题是:是否可以将 KDC 的内部数据库(或将凭据存储在哪里)存储到 docker 卷? 如果是这样,我应该查看哪一部分?
我的目标是,无论容器如何重建,我都能够连接到旧容器创建的相同旧 KDC 数据库。这可能吗?
答案1
难道仅仅将卷安装到容器的默认 KDC 数据库路径还不够吗docker run -v /var/local/docker-volumes/krb5kdc:/usr/local/var/krb5kdc <kdc_image>
?或者,database_name
如果您想要容器中的不同安装点,您可以在 kdc.conf 中的领域配置中指定选项。
答案2
您应该检查配置文件 kdc.conf。它将告诉您正在使用的文件存储在哪里。
在容器运行时执行 exec 并找到 kdc.conf 文件。此外,krb5.conf 文件将包含其他文件的位置。
https://web.mit.edu/kerberos/krb5-1.12/doc/admin/conf_files/kdc_conf.html
kdc.conf The KDC configuration file contains configuration information for the KDC and admin servers. kadmind uses settings in this file to locate the Kerberos database, and is also affected by the acl_file, dict_file, kadmind_port, and iprop-related settings.
我怀疑您可能会遇到主机名更改和生成不同密钥的问题。
您可以查看下面项目的工作,了解他们是如何做到的。他们的解决方案是在 MacOS(使用 VirtualBox)上的 Docker 中运行 Heimdal Kerberos 5。 https://github.com/tillt/docker-kdc/blob/master/kdc