设置 MATLAB 作业调度器集群安全性
设置安全级别
在集群节点上启动 mjs
服务之前,使用 mjs_def
文件中的 SECURITY_LEVEL
参数设置 MATLAB® 作业调度器安全级别。mjs_def
文件指示您可以设置的值并简要描述每个安全级别。
该表描述了访问 MATLAB 作业调度器及其作业的可用安全级别。
安全级别 | 描述 | 用户限制 |
---|---|---|
0 | 无安全保护。
| 无 |
1 | 作业与提交用户相关。
|
|
2 | 作业有 MATLAB 作业调度器密码保护。
|
|
3 | 除了级别 2 的安全性之外,任务还与工作进程机器上的提交用户相关联。
|
|
提示
在相同的安全级别运行作业管理器和工作进程。作业管理器不会注册在较低安全级别运行的工作进程。
本地、MATLAB 作业调度器和网络密码
对于任何高于 0 级的安全级别,当您启动 MATLAB 作业调度器(例如,使用 startjobmanager
命令)时,软件会使用 mjs_def
文件中 ADMIN_USER
参数指定的用户名创建一个集群管理员帐户。如果您未指定用户名,则管理员帐户用户名默认为 admin
。该软件提示您提供新管理员帐户的密码。管理员帐户拥有访问集群及其所有作业所需的所有权限。要使用 LDAP 服务器身份验证,ADMIN_USER
中指定的用户名必须在 LDAP 服务器中。
对于任何安全级别,MATLAB 作业调度器都会将每个作业与提交该作业的用户相关联。因此,每当您访问 MATLAB 作业调度器或作业时,MATLAB 作业调度器都必须验证您的身份。
在安全级别 0 时,软件将 Username
属性设置为创建该作业的人员的登录名。您可以随时更改该值。对于所有较高的安全级别,第一次访问 MATLAB 作业调度器时,对话框会提示您输入用户名。如果安全级别为 2 或 3,您还必须提供密码。如果您使用安全级别 3 或 MATLAB 作业调度器集群配置了 LDAP 服务器身份验证,则您为 MATLAB Job 作业调度器提供的用户名和密码必须与您的网络用户名和密码相匹配。否则,您可以为 MATLAB 作业调度器创建新的用户名和密码。为了方便起见,您可以选择将用户名和密码保存在本地计算机上,这样您无需在每次访问作业时都输入它们。
有关更改密码和退出 MATLAB 作业调度器集群的信息,请参阅 changePassword
(Parallel Computing Toolbox) 和 logout
(Parallel Computing Toolbox)。有关 MATLAB 作业调度器集群的 LDAP 服务器身份验证的更多信息,请参阅为 MATLAB 作业调度器配置 LDAP 服务器身份验证。
授权用户访问作业和任务
此示例显示如何授权用户在安全级别为 2 或 3 的 MATLAB 作业调度器集群上访问您的作业。当您创建作业并将其提交给 MATLAB 作业调度器集群,作业和任务将与提交用户相关联。这些作业和任务受到密码保护,因此未经授权的用户无法访问您的作业。
使用parcluster
(Parallel Computing Toolbox)使用集群配置文件 'MyMJSCluster'
创建集群对象。将 'MyMJSCluster'
替换为您的集群配置文件的名称。然后,使用batch
(Parallel Computing Toolbox)在集群上创建并提交作业。
c = parcluster('MyMJSCluster');
j = batch(c,@rand,1,{2});
您可以设置作业的 AuthorizedUsers
属性来授权用户访问该作业及其任务。您指定的每个用户都必须已经使用过 MATLAB 作业调度器集群。授权用户“ user1
”和“ user2
”访问某项作业。
j.AuthorizedUsers = ["user1","user2"];
创建共享秘密文件
密钥文件在不同机器上的进程之间建立信任。
要创建此文件,请运行以下脚本之一:
Linux® 操作系统上的
matlabroot
/toolbox/parallel/bin/createSharedSecretWindows® 操作系统上的
matlabroot
\toolbox\parallel\bin\createSharedSecret.bat
在 mjs_def
文件中的 SHARED_SECRET_FILE
参数中指定密钥文件的位置,以便 MATLAB 作业调度器找到它。共享密钥文件包含敏感数据,对于启动 mjs
进程的用户必须是只读的。
在共享文件系统中,所有节点都可以指向同一个密钥文件。节点也可以共享同一个
mjs_def
文件。在非共享文件系统中,使用提供的脚本创建一个密钥文件,然后将该文件复制到每个节点,并确保每个节点的
mjs_def
文件指示其密钥文件的位置。
设置加密通信
要设置 MATLAB 作业调度器、客户端和工作进程之间的加密通信,请在 mjs_def
文件中设置以下值:
USE_SECURE_COMMUNICATION = true
ALL_SERVER_SOCKETS_IN_CLUSTER = true
使用 TLSv1.3 提供加密通信。
在 R2023a 之前: 通过使用 TLSv1.2 的 SSLSocket 提供加密通信。
注意
在 R2023a 之前: 如果在 mjs_def
文件中将 ALL_SERVER_SOCKETS_IN_CLUSTER
指定为 false
,则 mjs
服务仅在 MATLAB 作业调度器和工作进程之间建立加密通信。工作进程之间的通信从未加密。如果一个工作进程与客户端之间的通信是通过另一个工作进程发送的,则只有该工作进程与客户端之间的通信是加密的。
此外,运行作业管理器或工作进程的所有主机都需要在 mjs_def
文件中的 SHARED_SECRET_FILE
参数指定的位置放置密钥文件。要创建密钥文件,请参阅创建共享秘密文件。
注意
使用 MATLAB 作业调度器安全级别 3 时需要进行加密通信。
设置 MATLAB 客户端验证
验证 MATLAB 客户端是否可以连接到您的 MATLAB 作业调度器集群。
您必须使用与集群相同的密钥文件来创建证书文件。在启动作业管理器时使用该证书并创建经过认证的集群配置文件。要创建密钥文件,请参阅创建共享秘密文件。
MATLAB 客户端和 MATLAB 作业调度器集群之间的连接使用相互 TLS (mTLS) 进行验证。
配置 MATLAB 作业调度器集群
在 mjs_def
文件中,将 REQUIRE_CLIENT_CERTIFICATE
设置为 true
。
导航到以下某个文件夹:
Windows 操作系统上的
matlabroot\toolbox\parallel\bin
Linux 操作系统上的
matlabroot/toolbox/parallel/bin
当您有了密钥文件的位置后,请使用 generateCerticate
命令来生成证书。指定密钥文件的路径和证书的名称。
generateCertificate -secretfile path_to_shared_secret_file/secret -certfile mjsClusterClientCert
要启动作业管理器,请使用 -certificate
标志向 startjobmanager
命令指定证书的文件路径。
startjobmanager -certificate mjsClusterClientCert
创建认证集群配置文件
MATLAB 客户端还必须具有带有正确证书的集群配置文件文件才能连接到作业管理器。
要创建经过认证的集群配置文件,请使用 createProfile
命令。指定集群的名称和主机名以及证书文件的路径。例如,为集群 clusterName
、主机名 mjsHost
和证书文件 mjsClusterClientCert
创建集群配置文件。该命令创建一个扩展名为 .mlsettings
集群配置文件文件 clusterName
。该文件包含 MATLAB 客户端连接到作业管理器所需的证书。
createProfile -name clusterName -host mjsHost -certfile mjsClusterClientCert
证书和相关的集群配置文件控制哪些用户可以连接到作业管理器。您必须安全地存储这些数据并通过安全通道将集群配置文件分发给用户。您可以使用集群配置文件管理器将配置配置文件导入 MATLAB 客户端。有关详细信息,请参阅Discover Clusters and Use Cluster Profiles (Parallel Computing Toolbox)。
设置集群命令验证
MATLAB 作业调度器集群管理员可以将 MATLAB 作业调度器集群命令的使用限制为仅限指定用户。限制命令的使用,以防止未经授权的用户向集群发送特权命令。特权命令是可以改变集群状态的命令。
特权命令
下表列出了需要验证的特权命令。您可以在以下文件夹中找到这些命令的可执行文件:
Windows 操作系统上的
matlabroot\toolbox\parallel\bin
Linux 操作系统上的
matlabroot/toolbox/parallel/bin
命令 | 描述 |
---|---|
暂停在 | |
| 确定或更新 |
恢复在 | |
在 | |
在 | |
停止 | |
停止 | |
| 设置或获取 |
| 将 MATLAB 工作进程注册到指定的作业管理器。 |
注意
当您将 MATLAB 作业调度器设置为安全级别 3 时,命令验证默认启用。
在 mjs_def
文件中设置命令验证
要在 mjs
服务在集群上执行特权命令之前要求验证,请在 mjs_def
文件中将 REQUIRE_SCRIPT_VERIFICATION
参数设置为 true
。
您还必须将 SHARED_SECRET_FILE
参数设置为您尝试向其发送命令的 mjs
进程使用的密钥文件的位置。
使用以下选项之一指定密钥文件。
在命令行提供一个密钥文件。当您向集群发送特权命令时,您可以提供密钥文件的路径。
例如,要停止集群中的某个工作进程,请在 Windows 或 Linux 命令中输入以下命令:
stopworker -name worker1 -secretfile path_to_shared_secret_file/secret
在
mjs_def
文件中提供一个路径。如果您使用与密钥文件位置相同的集群主机,则可以在mjs_def
文件中提供密钥文件的路径。只有对密钥文件具有读取权限的用户才能在集群上运行特权命令。
另请参阅
startjobmanager
| changePassword
(Parallel Computing Toolbox) | logout
(Parallel Computing Toolbox) | mjs