配置 Repository 以使用 Kerberos#
Kerberos 是一种身份验证协议,旨在允许通过不安全网络进行通信的节点验证身份。Repository 可以使用 Kerberos 来验证用户身份。
Kerberos 协议使用时间戳来防止重放攻击过期的凭据,因此必须设置并正确运行网络时间协议 (NTP) 服务。
Kerberos 的几个方面依赖于名称服务。您的域名系统 (DNS) 条目和您的主机必须具有正确的信息。hostname
命令和配置文件 /etc/hostname
必须反映机器的完全限定域名 (FQDN)。配置文件 /etc/hosts
必须包含带有 FQDN 的条目,以允许执行反向 DNS 查找。
要允许客户端针对 Anaconda Enterprise 4 Repository 进行身份验证,请为服务创建一个主体,并使用标识该服务的私钥。创建服务主体 HTTP/your.anaconda.repository
,并将包含此主体的 keytab 创建为 $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 用户和计算机”。
选择“Users”容器。
在“操作”菜单中,选择“新建”,然后选择“用户”。
在“新建对象 - 用户”对话框中,键入用户信息。在此示例中,我们使用
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
复制到 Repository 服务器上的$PREFIX/etc/anaconda-server/http.keytab
。
要在 Repository 上启用 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 Repository 设置示例。
Kerberos 配置选项#
AUTH_TYPE |
字符串 |
配置用于 Repository 的身份验证方案。设置为 |
KRB5_KTNAME |
字符串 |
包含 Repository 服务主体的 keytab 文件路径。默认值: |
KRB5_SERVICE_NAME |
字符串 |
用于标识 Repository 服务主体 的服务类型。 |
KRB5_HOSTNAME |
字符串 |
用于标识 Repository 服务主体的主机名。 |