概述

默认情况下,任何有权访问 LSF 集群的用户都可以查询所有作业信息。但在以下场景中,这种默认行为可能不适合:

  • HPC 数据中心共享环境:不同组织的项目共享集群资源,但不希望其他人看到自己的工作负载
  • 商业客户内部集群:公司政策可能不允许外包人员访问内部工作负载信息

常见需求

  1. 普通用户只能从命令行工具访问自己的作业信息
  2. 项目负责人只能访问其管理项目的工作负载信息
  3. 同一项目的所有用户可以访问同事的工作负载信息

LSF 访问控制级别(ACL)功能从 LSF 9.1.2 版本开始提供,支持不同级别的作业信息查询访问控制。

示例一:控制作业信息访问

需求

  • 用户只能访问自己的作业信息
  • 用户组管理员可以访问其组的作业信息

配置步骤

1. 配置 lsb.params 参数

1
2
3
4
5
# 限制所有用户只能访问自己的作业信息
SECURE_JOB_INFO_LEVEL=4

# 允许用户组管理员访问其组的作业信息
ENABLE_JOB_INFO_BY_ADMIN_ROLE=usergroup

2. 重新配置 LSF

1
badmin reconfig

3. 验证配置

1
bparams -a

效果演示

假设 jack 和 mike 是普通用户,susan 是他们的组长:

jack(普通用户)只能看到自己的作业:

1
2
3
[jack@host1]$ bjobs -u all
JOBID USER STAT QUEUE FROM_HOST EXEC_HOST JOB_NAME    SUBMIT_TIME
337   jack PEND normal host1               *eep 12345 Jun 9 15:15

mike(普通用户)只能看到自己的作业:

1
2
3
[mike@host1]$ bjobs -u all
JOBID USER STAT QUEUE FROM_HOST EXEC_HOST JOB_NAME    SUBMIT_TIME
338   mike RUN  normal host1     host1     sleep 123   Jun 9 15:36

susan(组管理员)可以看到所有组员的作业:

1
2
3
4
[susan@host1]$ bjobs -u all
JOBID USER STAT QUEUE FROM_HOST EXEC_HOST JOB_NAME    SUBMIT_TIME
337   jack PEND normal host1               *eep 12345 Jun 9 15:15
338   mike RUN  normal host1     host1     sleep 123   Jun 9 15:36

示例二:控制作业历史信息访问

需求

控制用户对作业历史信息(bhistbacct)的访问。

配置步骤

1. 配置 lsb.params 参数

1
SECURE_INFODIR_USER_ACCESS=Y

2. 重启 mbatchd

1
badmin mbdrestart

3. 验证配置

1
bparams -a

4. 设置 setuid 位

为 LSF 主管理员在 bhistbacct 可执行文件上启用 setuid 位:

1
2
3
4
5
6
7
8
9
10
11
12
# 查看当前权限
$ ls -l bhist bacct
-rwxr-xr-x 1 lsfadmin lsf 2958368 Nov 28  2022 bacct*
-rwxr-xr-x 1 lsfadmin lsf 3072216 Nov 28  2022 bhist*

# 设置 setuid 位
$ chmod u+s bhist bacct

# 验证权限变更
$ ls -l bhist bacct
-rwsr-xr-x 1 lsfadmin lsf 2958368 Nov 28  2022 bacct*
-rwsr-xr-x 1 lsfadmin lsf 3072216 Nov 28  2022 bhist*

效果

  • 普通用户使用 bhistbacct 只能查询自己的作业信息
  • 只有 LSF 主管理员可以查询所有作业历史信息

访问控制级别

LSF ACL 功能支持五种不同级别的作业信息访问控制:

级别 说明
0 无限制(默认)
1 隐藏命令行和 CWD
2 隐藏输入/输出文件路径
3 隐藏环境变量
4 仅允许访问自己的作业

管理员角色

角色 参数值 说明
用户组管理员 usergroup 可访问其管理的用户组的作业信息
队列管理员 queue 可访问其管理队列的作业信息
集群管理员 cluster 可访问集群所有作业信息

配置参数汇总

参数 配置文件 说明
SECURE_JOB_INFO_LEVEL lsb.params 作业信息访问控制级别
ENABLE_JOB_INFO_BY_ADMIN_ROLE lsb.params 允许管理员角色访问作业信息
SECURE_INFODIR_USER_ACCESS lsb.params 控制作业历史信息访问

参考资料

  1. IBM Documentation - Applying job access control
  2. IBM Documentation - Best practices and tips for LSF