Red Hat Training

A Red Hat training course is available for RHEL 8

117.4. 配置 Web 控制台以允许通过智能卡验证的用户运行 sudo,而无需再次进行身份验证

在登录到 RHEL web 控制台中的用户帐户后,可能需要以 Identity Management (IdM)系统管理员的身份使用超级用户权限运行命令。您可以使用 受限委派 功能在系统中运行 sudo,而无需再次进行身份验证。

按照以下流程,将 Web 控制台配置为使用受限的委托。在以下示例中,web 控制台会话在 myhost.idm.example.com 主机上运行。

先决条件

  • 已获得 IdM admin ticket-granting ticket (TGT)。
  • web 控制台服务存在于 IdM 中。
  • IdM 中存在 myhost.idm.example.com 主机。
  • 您已为 IdM 服务器 上的域管理员启用了 admin sudo 访问权限
  • web 控制台在用户会话中创建了一个 S4U2Proxy Kerberos ticket。要验证这种情况,以 IdM 用户身份登录 web 控制台,打开 Terminal 页面,输入:

    $ klist
    Ticket cache: FILE:/run/user/1894000001/cockpit-session-3692.ccache
    Default principal: user@IDM.EXAMPLE.COM
    
    Valid starting     Expires            Service principal
    07/30/21 09:19:06 07/31/21 09:19:06 HTTP/myhost.idm.example.com@IDM.EXAMPLE.COM
    07/30/21 09:19:06  07/31/21 09:19:06  krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM
            for client HTTP/myhost.idm.example.com@IDM.EXAMPLE.COM

流程

  1. 创建可由委派规则访问的目标主机列表:

    1. 创建服务委托目标:

      $ ipa servicedelegationtarget-add cockpit-target
    2. 将目标主机添加到委托目标:

      $ ipa servicedelegationtarget-add-member cockpit-target \ --principals=host/myhost.idm.example.com@IDM.EXAMPLE.COM
  2. 允许 cockpit 会话通过创建服务委托规则并将 HTTP 服务主体添加到目标主机列表来访问目标主机列表:

    1. 创建服务委托规则:

      $ ipa servicedelegationrule-add cockpit-delegation
    2. 在 delegation 规则中添加 Web 控制台服务:

      $ ipa servicedelegationrule-add-member cockpit-delegation \ --principals=HTTP/myhost.idm.example.com@IDM.EXAMPLE.COM
    3. 在委托规则中添加委托目标:

      $ ipa servicedelegationrule-add-target cockpit-delegation \ --servicedelegationtargets=cockpit-target
  3. 启用 pam_sss_gss,这是通过通用安全服务应用程序接口(GSSAPI)验证用户身份的 PAM 模块,并与系统安全服务守护进程(SSSD)协同工作:

    1. 打开 /etc/sssd/sssd.conf 文件进行编辑。
    2. 指定 pam_sss_gss 可以在 IdM 域中为 sudosudo -i 命令提供身份验证:

      [domain/idm.example.com]
      pam_gssapi_services = sudo, sudo-i
    3. 保存并退出文件。
    4. 打开 /etc/pam.d/sudo 文件进行编辑。
    5. #%PAM-1.0 列表的顶部插入以下行以允许,但不需要 sudo 命令进行 GSSAPI 身份验证:

      auth sufficient pam_sss_gss.so
    6. 保存并退出文件。
  4. 重启 SSSD 服务,以便上述更改立即生效:

    $ systemctl restart sssd