Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

MATLAB ジョブ スケジューラ クラスターのセキュリティの設定

セキュリティ レベルの設定

クラスター ノード上の mjs サービスの開始前に、mjs_def ファイルの SECURITY_LEVEL パラメーターを使用して、MATLAB® ジョブ スケジューラのセキュリティ レベルを設定します。mjs_def ファイルは、設定できる値を示し、それぞれのセキュリティ レベルについて簡単に説明します。

この表では、MATLAB ジョブ スケジューラとそのジョブへのアクセスに使用できるセキュリティ レベルについて説明しています。

セキュリティ レベル説明ユーザー制限
0

セキュリティは設定されません。

  • すべてのユーザーがすべてのジョブにアクセスできます。

  • タスクは、ワーカー マシンで mjs プロセスを開始したユーザー (通常は root または Local System) に関連付けられます。

  • これは既定レベルであり、R2010b より前のすべてのリリースでこのセキュリティ レベルになります。

  • ジョブは既定のユーザー名と関連付けられていますが、ソフトウェアで保護は提供されません。

なし

1

ジョブはその投入ユーザーに関連付けられます。

  • すべてのユーザーがすべてのジョブにアクセスできます。アクセスされたジョブが別のユーザーに属する場合は、ダイアログ ボックスによって警告されます。

  • タスクは、ワーカー マシンで mjs プロセスを開始するユーザー (通常は root または Local System) に関連付けられます。

  • ジョブ マネージャーへの初回アクセス時に、ダイアログ ボックスでユーザー名の指定を求められます。

  • MATLAB ジョブ スケジューラのユーザー名は、システムまたはネットワークのユーザー名と一致させる必要はありません。

  • パスワードは不要です。

2

ジョブには MATLAB ジョブ スケジューラのパスワード保護があります。

  • ジョブおよびタスクはその投入ユーザーに関連付けられ、パスワードで保護されます。投入ユーザーは他のユーザーにジョブおよびタスクへのアクセスを承認できます。この場合、承認されたユーザーは自身のパスワードを入力してジョブおよびタスクにアクセスできます。その他の未承認のユーザーはそのジョブにアクセスできません。

  • タスクは、ワーカー マシンで mjs プロセスを開始したユーザー (通常は root または Local System) に関連付けられます。

  • 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 ジョブ スケジューラはそのユーザーの ID を確認する必要があります。

セキュリティ レベル 0 では、ソフトウェアは Username プロパティを、ジョブを作成したユーザーのログイン名に設定します。この値はいつでも変更できます。それより上のすべてのセキュリティ レベルでは、MATLAB ジョブ スケジューラへの初回アクセス時に、ダイアログ ボックスでユーザー名が求められます。セキュリティ レベルが 2 または 3 の場合、パスワードも入力しなければなりません。MATLAB ジョブ スケジューラに入力するユーザー名とパスワードは、セキュリティ レベル 3 を使用している場合、または MATLAB ジョブ スケジューラ クラスターで LDAP サーバー認証が構成されている場合は、ネットワークのユーザー名およびパスワードと一致させる必要があります。それ以外の場合は、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"];

共有シークレット ファイルの作成

シークレット ファイルにより、異なるマシン上のプロセス間で信頼が確立されます。

このファイルを作成するには、次のいずれかのスクリプトを実行します。

  • matlabroot/toolbox/parallel/bin/createSharedSecret (Linux® オペレーティング システム)

  • matlabroot\toolbox\parallel\bin\createSharedSecret.bat (Windows® オペレーティング システム)

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_CLUSTERfalse として指定した場合、mjs サービスは MATLAB ジョブ スケジューラとワーカーの間にのみ暗号化通信を確立します。ワーカー間の通信が暗号化されることはありません。ワーカーとクライアント間の通信が別のワーカー経由で送信された場合、そのワーカーとクライアント間の通信のみが暗号化されます。

また、ジョブ マネージャーまたはワーカーを実行するすべてのホストで、mjs_def ファイルの SHARED_SECRET_FILE パラメーターで指定された場所にシークレット ファイルがある必要があります。シークレット ファイルを作成する場合は、共有シークレット ファイルの作成を参照してください。

メモ

MATLAB ジョブ スケジューラのセキュリティ レベル 3 を使用する場合は、暗号化通信が必要です。

MATLAB クライアント検証の設定

MATLAB クライアントが MATLAB ジョブ スケジューラ クラスターに接続できるかどうかを検証します。

クラスターと同じシークレット ファイルを使用して証明書ファイルを作成する必要があります。ジョブ マネージャーの開始時、および認証済みクラスター プロファイルを作成する場合に証明書を使用します。シークレット ファイルを作成する場合は、共有シークレット ファイルの作成を参照してください。

MATLAB クライアントと MATLAB ジョブ スケジューラ クラスター間の接続は、相互 TLS (mTLS) を使用して検証されます。

MATLAB ジョブ スケジューラ クラスターの構成

mjs_def ファイルで REQUIRE_CLIENT_CERTIFICATEtrue に設定します。

次のフォルダーのいずれかに移動します。

  • matlabroot\toolbox\parallel\bin (Windows オペレーティング システム)

  • matlabroot/toolbox/parallel/bin (Linux オペレーティング システム)

シークレット ファイルの場所がある場合は、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 クライアントにインポートできます。詳細については、クラスターの検出とクラスター プロファイルの使用 (Parallel Computing Toolbox)を参照してください。

クラスター コマンド検証の設定

MATLAB ジョブ スケジューラ クラスター管理者は、MATLAB ジョブ スケジューラ クラスターのコマンドの使用を、指定したユーザーのみに制限できます。コマンドの使用を制限して、未承認のユーザーが "特権" コマンドをクラスターに送信できないようにします。特権コマンドとは、クラスターの状態を変更できるコマンドのことです。

特権コマンド

この表は、検証が必要な特権コマンドの一覧です。これらのコマンドの実行可能ファイルは次のフォルダーにあります。

  • matlabroot\toolbox\parallel\bin (Windows オペレーティング システム)

  • matlabroot/toolbox/parallel/bin (Linux オペレーティング システム)

コマンド説明

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) |

関連するトピック