41.12. 委托对主机和服务的访问
通过委托对 IdM 域中主机和服务的访问权限,您可以为另一个主机或服务检索 keytab 和证书。
每个主机和服务都有一个 managedby
条目,其列出了哪些主机和服务可以管理它。默认情况下,主机可以管理自身及其所有服务。您可以配置一个主机来管理其他主机,或者管理 IdM 域中其他主机上的服务。
通过 managedby
条目将主机的授权委托给其他主机时,它不会自动为该主机上的所有服务授予管理权限。您必须独立执行每个委托。
主机和服务委托
41.12.1. 委托服务管理
您可以将权限委托给主机,以管理域中其他主机上的服务。
当您将权限委托给主机来管理其他主机时,它不会自动包含管理其服务的权限。您必须单独委托服务管理。
流程
使用
service-add-host
命令将服务管理委托给特定的主机:ipa service-add-host principal --hosts=<hostname>
您必须使用
principal
参数指定服务主体,使用--hosts
选项指定带有控制的主机。例如:
[root@server ~]# ipa service-add HTTP/web.example.com [root@server ~]# ipa service-add-host HTTP/web.example.com --hosts=client1.example.com
主机委托授权后,主机主体可用于管理服务:
[root@client1 ~]# kinit -kt /etc/krb5.keytab host/client1.example.com [root@client1 ~]# ipa-getkeytab -s server.example.com -k /tmp/test.keytab -p HTTP/web.example.com Keytab successfully retrieved and stored in: /tmp/test.keytab
要为委托的服务生成证书,请使用委托的颁发机构在主机上创建一个证书请求:
[root@client1]# kinit -kt /etc/krb5.keytab host/client1.example.com [root@client1]# openssl req -newkey rsa:2048 -subj '/CN=web.example.com/O=EXAMPLE.COM' -keyout /etc/pki/tls/web.key -out /tmp/web.csr -nodes Generating a 2048 bit RSA private key .............................................................+++ ............................................................................................+++ Writing new private key to '/etc/pki/tls/private/web.key'
使用
cert-request
工具来提交证书请求,并加载认证信息:[root@client1]# ipa cert-request --principal=HTTP/web.example.com web.csr Certificate: MIICETCCAXqgA...[snip] Subject: CN=web.example.com,O=EXAMPLE.COM Issuer: CN=EXAMPLE.COM Certificate Authority Not Before: Tue Feb 08 18:51:51 2011 UTC Not After: Mon Feb 08 18:51:51 2016 UTC Serial number: 1005
41.12.2. 委托主机管理
您可以使用 host-add-managedby
工具为主机委托授权,来管理其他主机。这会创建一个 managedby
条目。创建 managedby
条目后,管理主机可以检索它管理的主机的 keytab。
流程
以 admin 用户身份登录:
[root@server ~]# kinit admin
添加
managedby
条目。例如,这通过 client2 将授权委托给 client1 :[root@server ~]# ipa host-add-managedby client2.example.com --hosts=client1.example.com
获取作为主机 client1 的票据:
[root@client1 ~]# kinit -kt /etc/krb5.keytab host/client1.example.com
检索 client2 的 keytab:
[root@client1 ~]# ipa-getkeytab -s server.example.com -k /tmp/client2.keytab -p host/client2.example.com Keytab successfully retrieved and stored in: /tmp/client2.keytab
41.12.3. 访问委托的服务
当客户端有委托的授权时,它可以在本地机器上为服务和主机的主体获取 keytab。
使用 kinit
命令,使用 -k
选项加载 keytab ,使用 -t
选项指定 keytab。主体格式为 <principal>/hostname@REALM
。对于服务,将 <principal>
替换为服务名称,如 HTTP。对于主机,使用 host
作为主体。
流程
要访问主机:
[root@server ~]# kinit -kt /etc/krb5.keytab host/ipa.example.com@EXAMPLE.COM
要访问服务:
[root@server ~]# kinit -kt /etc/httpd/conf/krb5.keytab HTTP/ipa.example.com@EXAMPLE.COM