配置存储库以使用 Kerberos

Kerberos 是一种身份验证协议,旨在允许节点通过不安全的网络进行通信以验证身份。Repository 可以使用 Kerberos 对用户进行身份验证。

Kerberos 协议使用时间戳来防止对过期凭据的重放攻击,因此必须设置网络时间协议 (NTP) 服务并使其正常工作。

Kerberos 的几个方面依赖于名称服务。您的域名系统 (DNS) 条目和您的主机必须具有正确的信息。的hostname命令和配置文件/etc/hostname 必须反映在机器的完全合格域名(FQDN)。配置文件/etc/hosts必须包含一个带有 FQDN 的条目,以允许执行反向 DNS 查找。

要允许客户端对 Anaconda Repository 进行身份验证,请使用标识服务的私钥为服务创建主体。创建一个服务主体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/your.anaconda.repository@YOUR.DOMAIN -out http.keytab -pass "*" -mapUser your-anaconda-user@your-anaconda-server -ptype KRB5_NT_PRINCIPAL
    
  9. 将新创建的文件复制http.keytab$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 存储库设置示例

Kerberos 配置选项

AUTH_TYPE 细绳 配置用于存储库的身份验证方案。设置为KERBEROS启用 Kerberos 身份验证。默认值:NATIVE
KRB5_KTNAME 细绳 包含存储库服务主体的密钥表的文件路径。默认值:/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 的机器的主机名。