2023 年 10 月 14 日に AWS ParallelCluster 3.7.2 がリリースされました。
今回のアップデートで機能追加はありません。ですが、CVE-2023-41914 の脆弱性に対応しています。
Upgrade Slurm to 23.02.6.
Release AWS ParallelCluster v3.7.2 · aws/aws-parallelcluster
2023 年 9 月 22 日に脆弱性対応で v3.7.1 がリリースされたのですが、また新たな脆弱性を抱え対応が必要になりました。
AWS ParallelCluster が抱えた脆弱性
ParallelCluster ご利用の対象者には 2023 年 10 月 16 日に AWS サポートから以下の件名でメール通知がありました。
Subject: [Action Required] Upgrade AWS ParallelCluster Slurm version [AWS Account: 123456789012]
内容を要約すると、重要度の高い脆弱性が公開され影響を受けるためアップデートを推奨するといったものです。
- Slurm の脆弱性が公開された(CVE-2023-41914)
- ParallelCluster 3. 代のすべてのバージョンで影響を受ける
- Slurm のバージョンを 23.02.6 か 22.05.10 へアップデートすることを推奨する
We are reaching out because you are using or have recently used AWS ParallelCluster, which is an open source tool to manage High Performance Computing (HPC) clusters on AWS.
Clusters deployed with AWS ParallelCluster use Slurm as a job scheduler. SchedMD, the maintainers of Slurm, have published a CVE-2023-41914 [1] which affects all versions of Slurm used by AWS ParallelCluster 3.x. The CVE highlights issues which can lead to a user taking ownership of an arbitrary file on the system and allowing users to delete all files and subdirectories of an arbitrary target directory on the compute nodes. We recommended you update Slurm to versions 23.02.6 or 22.05.10, depending on the major version of Slurm being used by your cluster [2]. To identify your cluster's Slurm version based on the ParallelCluster version, please refer to our documentation [3].
推奨されるアップデート方法
必要なアップデート手順は ParallelCluster の GitHub リポジトリで公開されています。2 種類の Slurm のバージョンのアップデート方法が紹介されています。
課題
コンピュートノードの Slurm のアップデート方法はカスタムブートストラップ処理による EC2 インスタンス起動後にコンパイルしてからインストールし直すことになります。コンピュートノードの起動から演算開始までの時間が数分単位で遅くなることを意味します。これはコンピュートノードの動作仕様の都合、毎回コンパイルからスタートするのは仕方がありません。
他の解決策としては Slurm をアップデート済みのカスタム AMI を作成する方法です。カスタム AMI で運用しているユーザーは良いですが、カスタムブートストラップの処理で初期セットアップを行っているユーザーには二の足を踏む内容です。
AWS ParallelCluster 3.7.2 Relesed
CVE-2023-41914の対策は Slurm のバージョンを 23.02.6 か 22.05.10 へアップデートすることでした。
2023 年 10 月 14 日にリリースされた AWS ParallelCluster 3.7.2 で、Slurm のバージョンがデフォルトで 23.02.6 となりました。つまり、ParallelCluster 3.代すべてのバージョンで抱えた脆弱性が解消されたバージョンとなります。
バージョンを確認してみる
ParallelCluster 3.7.2 のクラスターを作成し、バージョンを確認してみます。
v3.7.2 のクラスターは以下のコンフィグで構築しました。全文は長いため折りたたみしています。
- OS: Ubuntu 22.04
折りたたみ
Region: ap-northeast-1
Image:
Os: ubuntu2204
Tags:
- Key: Name
Value: v372-cluster
# ----------------------------------------------------------------
# Head Node Settings
# ----------------------------------------------------------------
HeadNode:
InstanceType: t3.micro
Networking:
ElasticIp: false
SubnetId: subnet-0cc9326cae7a514a3
Ssh:
KeyName: sandbox-keypair
LocalStorage:
RootVolume:
Size: 40
Encrypted: true
VolumeType: gp3
Iops: 3000
Throughput: 125
Iam:
AdditionalIamPolicies:
- Policy: arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore
S3Access:
- BucketName: hpc-dev-postinstall-files
EnableWriteAccess: false
# ----------------------------------------------------------------
# Compute Node Settings
# ----------------------------------------------------------------
Scheduling:
Scheduler: slurm
SlurmSettings:
ScaledownIdletime: 5
SlurmQueues:
# ------ Compute 1 ------
- Name: queue1
ComputeResources:
- Name: queue1
Instances:
- InstanceType: c6i.large
- InstanceType: m6i.large
MinCount: 0
MaxCount: 10
DisableSimultaneousMultithreading: true
ComputeSettings:
LocalStorage:
RootVolume:
Size: 40
Encrypted: true
VolumeType: gp3
Iops: 3000
Throughput: 125
CapacityType: SPOT
AllocationStrategy: lowest-price
Networking:
SubnetIds:
- subnet-0cc9326cae7a514a3
PlacementGroup:
Enabled: false
CustomActions:
OnNodeConfigured:
Script: s3://hpc-dev-postinstall-files/mount-moutpoint-for-s3/mount.sh
Iam:
AdditionalIamPolicies:
- Policy: arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore
S3Access:
- BucketName: hpc-dev-postinstall-files
EnableWriteAccess: false
# ----------------------------------------------------------------
# Shared Storage Settings
# ----------------------------------------------------------------
# SharedStorage:
# - MountDir: /mnt/efs-1zone
# Name: efs-1zone
# StorageType: Efs
# EfsSettings:
# FileSystemId: fs-0f1158ade79354809
# - MountDir: /mnt/efs-multiaz
# Name: efs-multiaz
# StorageType: Efs
# EfsSettings:
# FileSystemId: fs-0c1f163ca89a2b390
# ----------------------------------------------------------------
# Other Settings
# ----------------------------------------------------------------
Monitoring:
Logs:
CloudWatch:
Enabled: true
RetentionInDays: 180
DeletionPolicy: "Delete"
Dashboards:
CloudWatch:
Enabled: false
ヘッドノード
Slurm のバージョンを確認してみました。23.02.6
の表記を確認できました。脆弱性対応済みのバージョンまであがった Slurm がデフォルトでインストールされた状態となっています。
ubuntu@ip-10-1-0-233:/etc/parallelcluster$ grep "cfn_node_type" /etc/parallelcluster/cfnconfig
cfn_node_type=HeadNode
ubuntu@ip-10-1-0-233:/etc/parallelcluster$ sinfo -V
slurm 23.02.6
コンピュートノード
ヘッドノードから下記のジョブをサブミットして実行結果を確認します。
test.sh
/bin/bash
grep "cfn_node_type" /etc/parallelcluster/cfnconfig
sinfo -V
コンピュートノードも Slurm のバージョンは23.02.6
であることを確認できました。
slurm-1.out
cfn_node_type=ComputeFleet
slurm 23.02.6
おわりに
3 週間前の CVE-2023-41915 対応と何が違うのか、v3.7.2 リリース当初は情報が少なくわかりませんでした。AWS からの通知メールや、Slurm のユーザーグループの情報を確認してやっと意味がわかりました。本記事でどなたかの調べる手間が省けたら幸いです。