20.6. 在 IdM WebUI 中创建一个 sudo 规则,该规则以 IdM 客户端上服务帐户的身份运行命令

在 IdM 中,您可以使用 RunAs alias 配置 sudo 规则,以便以另一个用户或组身份运行 sudo 命令。例如,您可能有一个托管数据库应用的 IdM 客户端,您需要以与该应用对应的本地服务帐户运行命令。

使用这个示例来在 IdM WebUI 中创建一个名为 run_third- party-app_reportsudo 规则,以允许 idm_user 帐户以 idmclient 主机上 thirdpartyapp 服务帐户的身份运行 /opt/third-party-app/bin/report 命令。

先决条件

  • 以 IdM 管理员身份登录。
  • 您已在 IdM 中创建 了 idm_user 的用户帐户,并通过为用户创建密码来解锁帐户。有关使用 CLI 添加新 IdM 用户的详情,请参阅使用命令行添加用户
  • idmclient 主机上没有本地的 idm_useridm_user 用户未列在本地 /etc/passwd 文件中。
  • 您已在 idmclient 主机上已安装了一个名为 third-party-app 的自定义应用程序。
  • 用于 third-party-appreport 命令安装在 /opt/third- party-app/bin/report 目录中。
  • 您已创建了一个名为 thirdrdapp 的本地服务帐户,来执行 third-party-app 应用程序的命令。

流程

  1. /opt/third-party-app/bin/report 命令添加到 sudo 命令的 IdM 数据库中:

    1. 导航到 PolicySudoSudo Commands
    2. 单击右上角的 Add,以打开 Add sudo 命令对话框。
    3. 输入命令:/opt/third-party-app/bin/report

      标有"Add sudo 命令"的弹出窗口屏幕截图。 有一个标为"Sudo command"的必填字段,其内容为"/opt/third-party-app/bin/report"。"Description"字段为空。窗口的右下角有四个按钮:"Add" - "Add and Add Another" - "Add and Edit" - "Cancel"。
    4. 点击 Add
  2. 使用新的 sudo 命令条目来创建新的 sudo 规则:

    1. 导航到 PolicySudoSudo rules
    2. 单击右上角的 Add,以打开 Add sudo 规则对话框。
    3. 输入 sudo 规则的名称:run_third-party-app_report

      标记为"Add sudo rule"的弹出窗口的截图。 有一个标记为 "Rule name" 的必填字段,其内容为 "run_third-party-app_report"。窗口的右下角有四个按钮:"Add" - "Add and Add Another" - "Add and Edit" - "Cancel"。
    4. Add and Edit
    5. 指定用户:

      1. Who 部分中,选中指定的用户和组单选按钮
      2. User category the rule applies to 子部分中,单击 Add 来打开 将用户添加到 sudo 规则 "run_third-party-app_report" 对话框。
      3. Available 栏的 Add users into sudo rule "run_third-party-app_report" 对话框中,选择 idm_user,并把它移到 Prospective 栏。

        标有"Add users to sudo rule"的弹出窗口的截图。 您可以从左侧的 Available 列表中选择用户,并将它们移到右侧的 Prospective 列中。窗口的右下角有两个按钮:"Add" - "Cancel"。
      4. 点击 Add
    6. 指定主机:

      1. Access this host 部分中,选中指定的 Hosts and Groups 单选按钮。
      2. Host category this rule applies to 子部分中,单击Add 来打开 将用户添加到 sudo 规则 "run_third-party-app_report" 对话框。
      3. Available 栏的 Add hosts to sudo rule "run_third- party-app_report" 对话框中,选中 idmclient.idm.example.com 复选框,并将它移到 Prospective 列。

        标有"Add hosts to sudo rule"的弹出窗口的截图。 您可以从左侧的 Available 列表中选择主机,并将它们移到右侧的 Prospective 列中。窗口的右下角有两个按钮:"Add" - "Cancel"。
      4. 点击 Add
    7. 指定命令:

      1. Run Commands 一节的 Command category the rule applies to 子小节中,选择 Specified Commands and Groups 单选按钮。
      2. Sudo Allow Commands 子部分中,单击 Add 来打开 将允许 sudo 命令添加到 sudo 规则 "run_third-party-app_report" 对话框。
      3. Available 栏的 Add allow sudo commands into sudo rule "run_third-party-app_report" 对话框中,选中 /opt/third-party-app/bin/report 并将其移到 Prospective 栏。

        标有"Add allow sudo command in sudo rule"的弹出窗口的截图。 您可以从左侧的 Available 列表中选择 sudo 命令,并将它们移到右侧的 Prospective 列中。窗口的右下角有两个按钮:"Add" - "Cancel"。
      4. 单击 Add 以返回到 run_third-party-app_report 页。
    8. 指定 RunAs 用户:

      1. As Whom 部分中,选中 Specified Users and Groups 单选按钮。
      2. RunAs Users 子部分中,单击 Add 以将 Add RunAs 用户打开 sudo 规则 "run_third-party-app_report" 对话框。
      3. Add RunAs users in sudo rule "run_third-party-app_report" 对话框中,在 External 框中输入 thirdpartyapp 服务帐户,并将它移到 Prospective 列中。

        对话框的截图,您可以在其中将"thirdpartyapp"服务帐户指定为外部用户。
      4. 单击 Add 以返回到 run_third-party-app_report 页。
    9. 单击左上角的 Save

新规则默认为启用。

图 20.3. sudo 规则的详细信息

添加的 sudo 规则概述的屏幕截图。"Who"部分有一个"idm_user"的条目。 "Access this host"部分有"idmclient.idm.example.com"。 "Run Commands"部分有"/opt/third-party-app/bin/report"命令。"As Whom"部分列出了"thirdpartyapp"帐户。
注意

将更改从服务器传播到客户端可能需要几分钟时间。

验证步骤

  1. idm_user 帐户身份登录 idmclient 主机。
  2. 测试新的 sudo 规则:

    1. 显示允许 idm_user 帐户执行的 sudo 规则。

      [idm_user@idmclient ~]$ sudo -l
      Matching Defaults entries for idm_user@idm.example.com on idmclient:
          !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin,
          env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS",
          env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE",
          env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES",
          env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE",
          env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY KRB5CCNAME",
          secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
      
      User idm_user@idm.example.com may run the following commands on idmclient:
          (thirdpartyapp) /opt/third-party-app/bin/report
    2. 作为 thirdpartyapp 服务帐户,运行 report 命令。

      [idm_user@idmclient ~]$ sudo -u thirdpartyapp /opt/third-party-app/bin/report
      [sudo] password for idm_user@idm.example.com:
      Executing report...
      Report successful.