配置存储库以使用 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:
打开 Active Directory 用户和计算机。
选择用户容器。
在操作菜单中,选择新建,然后选择用户。
在“新建对象 - 用户”对话框中,键入用户信息。在本例中,我们使用
your-anaconda-repository作为登录名。在下一个对话框中,选择选项密码永不过期和用户不能更改密码。
右键单击新创建的用户,然后选择属性。
在“属性”对话框中,选择“帐户”选项卡,并确保选择“不需要 Kerberos 预身份验证”选项。
打开管理提示并运行:
ktpass -princ HTTP/your.anaconda.repository@YOUR.DOMAIN -out http.keytab -pass "*" -mapUser your-anaconda-user@your-anaconda-server -ptype KRB5_NT_PRINCIPAL将新创建的文件复制
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 的服务主体的服务类型。HTTP在
HTTP/your.anaconda.repository@YOUR.REALM。默认值:
HTTP。 |
| KRB5_HOSTNAME | 细绳 | 用于标识 Repository 的服务主体的主机名。your.anaconda.repository在
HTTP/your.anaconda.repository@YOUR.REALM。默认值:运行 Repository 的机器的主机名。 |