配置存储库以使用 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 的机器的主机名。 |