配置存储库以使用Kerberos#
Kerberos 是一种认证协议,旨在允许在不安全的网络上通信的节点验证身份。存储库可以使用 Kerberos 来认证用户。
Kerberos协议使用时间戳来防止对过期凭证的重放攻击,因此必须设置并正确运行网络时间协议(NTP)服务。
Kerberos 的多个方面依赖于名称服务。您的域名系统(DNS)条目和主机必须包含正确的信息。hostname
命令和配置文件 /etc/hostname
必须反映机器的完全限定域名(FQDN)。配置文件 /etc/hosts
必须包含一个带有 FQDN 的条目,以允许执行反向 DNS 查找。
为了让客户端能够对Anaconda Enterprise 4 仓库进行身份验证,需要为该服务创建一个带有私钥的主体,以标识该服务。创建一个服务主体 HTTP/your.anaconda.repository
,并将包含此主体的密钥表创建到 $PREFIX/etc/anaconda-server/http.keytab
:
SERVER_NAME=your.anaconda.repository
注意:将 your.anaconda.repository
替换为您的服务器 IP 地址或域名。
如果您正在使用MIT Kerberos:
kadmin -q "addprinc HTTP/${SERVER_NAME}"
kadmin -q "ktadd -k $PREFIX/etc/anaconda-server/http.keytab HTTP/${SERVER_NAME}"
chown anaconda-server:anaconda-server $PREFIX/etc/anaconda-server/http.keytab
chmod 600 $PREFIX/etc/anaconda-server/http.keytab
如果您正在使用Active Directory:
打开 Active Directory 用户和计算机。
选择用户容器。
在操作菜单中,选择新建,然后选择用户。
在新建对象 - 用户对话框中,输入用户信息。在这个例子中,我们使用
your-anaconda-repository
作为登录名。在下一个对话框中,选择选项“密码永不过期”和“用户不能更改密码”。
右键单击新创建的用户,然后选择属性。
在属性对话框中,选择账户选项卡,并确保选中了不需要Kerberos预认证选项。
打开一个管理提示符并运行:
ktpass -princ HTTP/[email protected] -out http.keytab -pass "*" -mapUser your-anaconda-user@your-anaconda-server -ptype KRB5_NT_PRINCIPAL
将新创建的文件
http.keytab
复制到您的仓库服务器上的$PREFIX/etc/anaconda-server/http.keytab
。
要在存储库上启用Kerberos身份验证,请将配置选项添加到 $PREFIX/etc/anaconda-server/config.yaml
:
AUTH_TYPE: KERBEROS
KRB5_KTNAME: /home/anaconda-server/repo/etc/anaconda-server/http.keytab
有关最小配置示例,请参见Kerberos-Anaconda Enterprise 4 仓库设置示例。
Kerberos 配置选项#
认证类型 |
字符串 |
配置用于Repository的认证方案。
设置为 |
KRB5_KTNAME |
字符串 |
包含Repository服务主体的keytab文件路径。默认值: |
KRB5_SERVICE_NAME |
字符串 |
用于标识Repository服务主体的服务类型。 |
KRB5_HOSTNAME |
字符串 |
用于标识Repository服务主体的主机名。 |