配置存储库以使用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:

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

  2. 选择用户容器。

  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 复制到您的仓库服务器上的 $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的认证方案。 设置为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的机器的主机名。