Main Content

设置 MATLAB 作业调度器集群安全性

设置安全级别

在集群节点上启动 mjs 服务之前,使用 mjs_def 文件中的 SECURITY_LEVEL 参数设置 MATLAB® 作业调度器安全级别。mjs_def 文件指示您可以设置的值并简要描述每个安全级别。

该表描述了访问 MATLAB 作业调度器及其作业的可用安全级别。

安全级别描述用户限制
0

无安全保护。

  • 任何用户都可以访问任何作业。

  • 任务与在工作进程机器上启动 mjs 进程的用户(通常是 root 或本地系统)相关联。

  • 这是默认级别,也是 R2010b 之前所有版本中的安全级别。

  • 作业与默认用户名相关联,但软件不提供任何保护。

1

作业与提交用户相关。

  • 任何用户都可以访问任何作业。如果访问的作业属于另一个用户,则会显示一个对话框发出警告。

  • 任务与在工作进程机器上启动 mjs 进程的用户(通常是 root 或本地系统)相关联。

  • 第一次访问作业管理器时,会出现一个对话框提示您指定用户名。

  • 您的 MATLAB 作业调度器用户名不必与您的系统或网络用户名匹配。

  • 您不需要密码。

2

作业有 MATLAB 作业调度器密码保护。

  • 作业和任务与提交用户相关联,并且受密码保护。提交用户可以授权其他用户访问他们的作业和任务。在这种情况下,授权用户可以输入自己的密码来访问作业和任务。其他未经授权的用户无法访问您的作业。

  • 任务与在工作进程机器上启动 mjs 进程的用户(通常是 root 或本地系统)相关联。

  • 当您启动 MATLAB 作业调度器时,您必须为作业管理器管理员帐户提供一个新密码。您可以使用此帐户访问所有作业和任务。

    如果您使用 LDAP 服务器身份验证,则当 MATLAB 作业调度器提示您时,您必须提供管理员帐户的 LDAP 服务器密码。

  • 当您首次从 MATLAB 客户端会话访问 MATLAB 作业调度器时,会出现一个对话框提示您指定用户名和密码。

  • 您的 MATLAB 作业调度器用户名和密码不必与您的系统或网络用户名和密码相匹配。

    如果您使用 LDAP 服务器身份验证,您的 MATLAB 作业调度器用户名和密码必须与 LDAP 服务器中的用户名和密码匹配。

3

除了级别 2 的安全性之外,任务还与工作进程机器上的提交用户相关联。

  • 作业和任务与提交用户相关联,并且受密码保护。其他未经授权的用户无法访问您的作业。

  • 任务与提交作业的用户相关。

  • MATLAB 作业调度器必须与工作进程使用加密通信。有关详细信息,请参阅设置加密通信

  • 当您启动 MATLAB 作业调度器时,您必须为作业管理器的管理员帐户提供一个新密码。您可以使用此帐户访问所有作业和任务。

    如果您使用 LDAP 服务器身份验证,则当 MATLAB 作业调度器提示您时,您必须提供管理员帐户的 LDAP 服务器密码。

  • 当您首次从 MATLAB 客户端访问 MATLAB 作业调度器时,会出现一个对话框提示您指定用户名和密码。

  • 您的作业管理器 MATLAB 作业调度器用户名和密码必须与您的系统或网络用户名和密码相同,因为并行工作进程必须登录您才能以您的身份运行任务。

  • 必须将 CHECKPOINTBASE 文件夹及其所有子文件夹的读写权限限制为启动 mjs 进程的用户。

  • 在 UNIX 系统上,root 用户必须在集群节点上启动 mjs 进程。

  • 在 Windows 系统上,提交用户必须能够本地登录到每台工作进程机器才能在集群上成功运行作业。您必须授予每个提交用户帐户 "Allow log on locally" 的权限。如果您禁用此权限,则当集群启动时,您提交的所有作业都将失败。

    要启用此权限,请在集群集中每台机器的用户权限分配安全策略设置中更改用户的 SeInteractiveLogonRight 常量。

提示

在相同的安全级别运行作业管理器和工作进程。作业管理器不会注册在较低安全级别运行的工作进程。

本地、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/createSharedSecret

  • Windows® 操作系统上的 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

命令描述

pausejobmanager

暂停在 mjs 服务下运行的作业管理器。

resize

确定或更新 mjs 服务下作业管理器进程的调整大小信息。

resumejobmanager

恢复在 mjs 服务下运行的作业管理器。

startjobmanager

mjs 服务下启动作业管理器进程和相关的作业管理器查找进程。

startworker

mjs 服务下启动一个 MATLAB 工作进程。

stopjobmanager

停止 mjs 服务下的作业管理器进程和相关的作业管理器查找进程。

stopworker

停止 mjs 服务下的 MATLAB 工作进程。

util/clusterlogs

设置或获取 mjs 服务的日志级别。

util/workerRegisterWithJobManager

将 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 文件中提供密钥文件的路径。

    只有对密钥文件具有读取权限的用户才能在集群上运行特权命令。

另请参阅

| (Parallel Computing Toolbox) | (Parallel Computing Toolbox) |

相关主题