配置 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

  1. 打开“Active Directory 用户和计算机”。

  2. 选择“Users”容器。

  3. 在“操作”菜单中,选择“新建”,然后选择“用户”。

  4. 在“新建对象 - 用户”对话框中,键入用户信息。在此示例中,我们使用 your-anaconda-repository 作为登录名。

  5. 在下一个对话框中,选择“密码永不过期”和“用户不能更改密码”选项。

  6. 右键单击新创建的用户,然后选择“属性”。

  7. 在“属性”对话框中,选择“帐户”选项卡,并确保选中“不要求 Kerberos 预身份验证”选项。

  8. 打开管理提示符并运行

    ktpass -princ HTTP/[email protected] -out http.keytab -pass "*" -mapUser your-anaconda-user@your-anaconda-server -ptype KRB5_NT_PRINCIPAL
    
  9. 将新创建的文件 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 的身份验证方案。设置为 KERBEROS 以启用 Kerberos 身份验证。默认值:NATIVE

KRB5_KTNAME

字符串

包含 Repository 服务主体的 keytab 文件路径。默认值:/etc/krb5.keytab

KRB5_SERVICE_NAME

字符串

用于标识 Repository 服务主体 的服务类型。HTTPHTTP/your.anaconda.repository@YOUR.REALM 中。默认值:HTTP

KRB5_HOSTNAME

字符串

用于标识 Repository 服务主体的主机名。your.anaconda.repositoryHTTP/your.anaconda.repository@YOUR.REALM 中。默认值:Repository 运行所在机器的主机名。