Multi-Category Security (MCS) Guide
Overview
The MCS Plugin is meant to extend the current Slurm functionality related to
job nodes exclusivity and job/node information display privacy.
MCSプラグインは、ジョブノードの排他性とジョブ/ノード情報の表示プライバシーに関連する現在のSlurm機能を拡張することを目的としています。
Slurm's OverSubscribe option controls the ability of a partition to
execute more than one job at a time on each resource, no matter "what type"
of job.
SlurmのOverSubscribeオプションは、「どのタイプの」ジョブに関係なく、各リソースで一度に複数のジョブを実行するパーティションの機能を制御します。
Slurm job submission clients can also use the --exclusive and
--oversubscribe parameters to request how the job can be
shared.
Slurmジョブ送信クライアントは、-exclusiveおよび--oversubscribeパラメーターを使用して、ジョブの共有方法を要求することもできます。
The ExclusiveUser
slurm.conf parameter and the --exclusive=user client parameter value
modifies the exclusivity functionality.
ExclusiveUserslurm.confパラメーターと--exclusive = userクライアントパラメーター値は、排他機能を変更します。
With this parameter enabled, the
"type of job" now matters when considering exclusivity, so jobs can share
resources based on job users, meaning that only jobs whose user is the
same can share resources.
このパラメーターを有効にすると、排他性を検討するときに「ジョブのタイプ」が重要になるため、ジョブはジョブユーザーに基づいてリソースを共有できます。つまり、ユーザーが同じジョブのみがリソースを共有できます。
This indeed adds a new dimension to how Slurm manages
exclusivity.
これは確かに、Slurmが独占権を管理する方法に新しい次元を追加します。
With the introduction of the MCS Plugin, Slurm can now be
configured to associate an MCS_label to jobs and optionally ensure that
nodes can only be shared among jobs having the same label.
MCSプラグインの導入により、MCS_labelをジョブに関連付け、オプションでノードが同じラベルを持つジョブ間でのみ共有できるようにSlurmを構成できるようになりました。
This adds even more degrees of freedom to how Slurm manages exclusivity,
providing end users with much more flexibility in this area.
これにより、Slurmが独占権を管理する方法にさらに自由度が加わり、エンドユーザーにこの分野での柔軟性が大幅に向上します。
Slurm also has the PrivateData slurm.conf
parameter, which is used to control what type of information is hidden from
regular users.
SlurmにはPrivateDataslurm.confパラメーターもあります。これは、通常のユーザーから非表示にする情報の種類を制御するために使用されます。
Similar to the exclusivity property, the MCS Plugin also
extends the privacy by filtering job and/or node information
based on the user's access to their MCS_label.
排他性プロパティと同様に、MCSプラグインも、ユーザーのMCS_labelへのアクセスに基づいてジョブやノードの情報をフィルタリングすることにより、プライバシーを拡張します。
This means that privacy
is now less restrictive, and information is not just hidden or not to regular
users, but now it is filtered depending on these configurable/requestable
labels in coordination with the PrivateData option.
これは、プライバシーの制限が緩和され、情報が通常のユーザーに非表示または非表示になるだけでなく、PrivateDataオプションと連携してこれらの構成可能/要求可能なラベルに応じてフィルタリングされるようになったことを意味します。
Configuration
Two parameters are currently available to configure MCS: MCSPlugin
and MCSParameters.
現在、MCSの構成には、MCSPluginとMCSParametersの2つのパラメーターを使用できます。
- MCSPlugin Specifies which plugin should be used.
MCSPlugin使用するプラグインを指定します。
Plugins are mutually exclusive, and the type of label to be associated depends on the loaded plugin.
プラグインは相互に排他的であり、関連付けられるラベルのタイプは、ロードされたプラグインによって異なります。 - mcs/none is the default and disables MCS labels and functionality.
mcs / noneがデフォルトであり、MCSラベルと機能を無効にします。
- mcs/account MCS labels can only take a value equal to the job's
--account.
mcs / account MCSラベルは、ジョブの--accountと等しい値のみを取ることができます。
NOTE: this option requires enabling of accounting.
注:このオプションでは、アカウンティングを有効にする必要があります。
- mcs/group MCS labels can only take a value equal to the job's user
group.
mcs / group MCSラベルは、ジョブのユーザーグループと等しい値のみを取ることができます。
- mcs/user MCS labels can only take a value equal to the username of
the job's --uid.
mcs / user MCSラベルは、ジョブの--uidのユーザー名と同じ値のみを取ることができます。
MCS_labels on jobs can be displayed through 'squeue' with the format option
mcslabel or through 'scontrol show job'.
ジョブのMCS_labelsは、フォーマットオプションmcslabelを指定した「squeue」または「scontrolshowjob」を介して表示できます。
Nodes also acquire a MCS_label,
which is inherited from the allocated job's MCS_label.
ノードは、割り当てられたジョブのMCS_labelから継承されるMCS_labelも取得します。
The node's label can be
displayed with 'scontrol show nodes'.
ノードのラベルは、「scontrolshownodes」で表示できます。
The 'sview' command can also be used to
see these MCS_labels.
'sview'コマンドを使用して、これらのMCS_labelsを表示することもできます。
Users may either request a particular category label for a job (through the
--mcs-label option), or use the default value generated by the specific
MCS plugin implementation.
ユーザーは、ジョブの特定のカテゴリラベルを(--mcs-labelオプションを介して)要求するか、特定のMCSプラグイン実装によって生成されたデフォルト値を使用できます。
So labels can be configured to be enforced or set
on demand, and the specific MCS Plugin is responsible for checking the validity
of these labels.
したがって、ラベルはオンデマンドで適用または設定するように構成でき、特定のMCSプラグインがこれらのラベルの有効性をチェックする責任があります。
When enforced, the MCS Plugin implementation will always
associate a MCS label to a submited job, either the default value or the one
requested by the user (if it's considered correct).
実施されると、MCSプラグインの実装は、MCSラベルを、デフォルト値またはユーザーが要求した値(正しいと見なされる場合)のいずれかで、送信されたジョブに常に関連付けます。
The selection (exclusivity) of nodes can be filtered on MCS labels either
on demand (ondemand) or always (select) or never (noselect).
ノードの選択(排他性)は、オンデマンド(オンデマンド)または常に(選択)または決して(選択なし)のいずれかでMCSラベルでフィルタリングできます。
Users can force
the filter with the --exclusive=mcs option (except if noselect mode is
enabled).
ユーザーは、-exclusive = mcsオプションを使用してフィルターを強制できます(noselectモードが有効になっている場合を除く)。
Label enforcement, node selection filtering policy, private data based on
labels and a list of user groups allowed to be mapped to MCS labels can be
configured through MCSParameters option.
ラベルの適用、ノード選択フィルタリングポリシー、ラベルに基づくプライベートデータ、およびMCSラベルへのマッピングが許可されているユーザーグループのリストは、MCSParametersオプションを使用して構成できます。
- MCSParameters Specifies the options to pass to the specific MCS
Plugin implementation.
MCSParameters特定のMCSプラグイン実装に渡すオプションを指定します。
Options should satisfy the following expression:
オプションは次の式を満たす必要があります。
"[ondemand|enforced][,noselect|select|ondemandselect][,privatedata]:[mcs_plugin_parameters]".
「[ondemand | enforced] [、noselect | select | ondemandselect] [、privatedata]:[mcs_plugin_parameters]」。
The defaults are "ondemand,ondemandselect" and no privatedata.
デフォルトは「ondemand、ondemandselect」で、privatedataはありません。
- ondemand|enforced set MCS label on jobs either on demand (using
--mcs-label option) or always
オンデマンド|オンデマンド(--mcs-labelオプションを使用)または常にジョブにMCSラベルを設定する - noselect|select|ondemandselect select nodes with filter on MCS
label: never, always or on demand (using --exclusive=mcs option)
noselect | select | ondemandselect MCSラベルにフィルターがあるノードの選択:never、always、またはonデマンド(--exclusive = mcsオプションを使用) - privatedata accordingly with PrivateData specific option:
それに応じて、PrivateData固有のオプションを使用したprivatedata:
-
if MCS' privatedata and PrivateData's privatedata=jobs, jobs information is
filtered based on their MCS labels
MCSのprivatedataおよびPrivateDataのprivatedata = jobsの場合、ジョブ情報はMCSラベルに基づいてフィルタリングされます
-
if MCS' privatedata and PrivateData's privatedata=nodes, nodes informations is
filtered based on their MCS labels
MCSのprivatedataおよびPrivateDataのprivatedata = nodesの場合、ノード情報はMCSラベルに基づいてフィルタリングされます
-
if MCS' privatedata and PrivateData's privatedata=jobs, jobs information is
filtered based on their MCS labels
- mcs_plugin_parameters Only mcs/group is currently supporting this
option.
mcs_plugin_parameters現在、mcs / groupのみがこのオプションをサポートしています。
It can be used to specify the list of user groups (separated by the '|' character) that are allowed to be mapped to MCS labels by the mcs/group plugin.
これを使用して、mcs / groupプラグインによってMCSラベルにマップできるユーザーグループのリスト(「|」文字で区切る)を指定できます。
リクエストと構成が異なると、ユースケースの組み合わせも異なります。
The following table is intended to help understand the end user the expected behavior (related to exclusivity) for a subset of these use-cases:
次の表は、エンドユーザーがこれらのユースケースのサブセットに対して期待される動作(排他性に関連する)を理解するのに役立つことを目的としています。
Node filtering: |
Label enforcement: ondemand (MCS_label set only if requested.) |
Label enforcement: enforced (MCS_label is mandatory.) |
noselect | No filter on nodes even if --exclusive=mcs requested. | No filter on nodes even if --exclusive=mcs requested. |
select | Filter on nodes only if job MCS_label is set. | Always filter on nodes. |
ondemandselect | Filter on nodes only if --exclusive=mcs. | Filter on nodes only if --exclusive=mcs. |
Some examples
slurm.conf:
MCSPlugin=mcs/account MCSParameters=enforced,select,privatedataor
MCSPlugin=mcs/group MCSParameters=ondemand,noselect:groupA|groupB|groupCor
MCSPlugin=mcs/user MCSParameters=enforced,select,privatedata
View MCS parameters
Configured MCS parameters can be viewed using the scontrol command.
設定されたMCSパラメータは、scontrolコマンドを使用して表示できます。
scontrol show config |grep MCS MCSPlugin = mcs/group MCSParameters = ondemand,noselect:groupA|groupB|groupC
Put a mcs_label in job using salloc, sbatch or srun command
salloc、sbatch、またはsrunコマンドを使用してmcs_labelをジョブに配置します
srun -n10 -t 1000 --mcs-label=groupB ./job &
Put a mcs_label in job with exclusivity
mcs_labelを排他的にジョブに配置します
srun -n10 -t 1000 --mcs-label=groupB --exclusive=mcs ./job &
With mcs/account plugin : put a different account/mcs-label in job
mcs / accountプラグインの場合:別のaccount / mcs-labelをジョブに配置します
srun -n10 -t 1000 -A another_account_than_default ./job &
View MCS parameters in usage
The squeue command can also display the MCS with mcslabel
format option
squeueコマンドは、mcslabel形式オプションを使用してMCSを表示することもできます。
squeue -O jobid,username,mcslabel JOBID USER MCSLABEL 2 foo groupA 3 bar groupB
The scontrol command will now display the MCS_label
scontrolコマンドはMCS_labelを表示します
scontrol show nodes NodeName=node0001 Arch=x86_64 CoresPerSocket=4 CPUAlloc=0 CPUTot=8 CPULoad=0.01 Features=(null) Gres=(null) NodeAddr=noder0001 NodeHostName=node0001 Version=15.08 OS=Linux RealMemory=23780 AllocMem=0 Sockets=2 Boards=1 State=IDLE ThreadsPerCore=1 TmpDisk=0 Weight=40 Owner=N/A MCS_label=groupA BootTime=2015-08-05T10:14:41 SlurmdStartTime=2015-09-07T13:42:28 CapWatts=n/a CurrentWatts=0 LowestJoules=0 ConsumedJoules=0 ExtSensorsJoules=n/s ExtSensorsWatts=0 ExtSensorsTemp=n/s
MCS Plugin development
Please see the MCS Plugin Programmer Guide
for details on developing additional MCS plugins.
追加のMCSプラグインの開発の詳細については、MCSプラグインプログラマーガイドを参照してください。
Last modified 10 October 2019