このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
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 ジョブ スケジューラはそのユーザーの 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"];
共有シークレット ファイルの作成
シークレット ファイルにより、異なるマシン上のプロセス間で信頼が確立されます。
このファイルを作成するには、次のいずれかのスクリプトを実行します。
(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
に設定します。
次のフォルダーのいずれかに移動します。
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 オペレーティング システム)
コマンド | 説明 |
---|---|
| |
|
|
| |
ジョブ マネージャー プロセスおよび関連するジョブ マネージャー ルックアップ プロセスを | |
| |
ジョブ マネージャー プロセスおよび関連するジョブ マネージャー ルックアップ プロセスを | |
| |
|
|
| 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