

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# のセキュリティ AWS ParallelCluster
<a name="security"></a>

のクラウドセキュリティが最優先事項 AWS です。お客様は AWS 、最もセキュリティの影響を受けやすい組織の要件を満たすように構築されたデータセンターとネットワークアーキテクチャを活用できます。

セキュリティは、 AWS とお客様の間の責任共有です。[責任共有モデル](https://aws.amazon.com/compliance/shared-responsibility-model/)、、は、これをクラウドのセキュリティ、およびクラウド内のセキュリティとして説明しています。
+ **クラウドのセキュリティ** – AWS クラウドで AWS サービスを実行するインフラストラクチャを保護する AWS 責任があります。 AWS また、 では、安全に使用できるサービスも提供しています。サードパーティーの監査者は、[AWS コンプライアンスプログラム](https://aws.amazon.com/compliance/programs/)コンプライアンスプログラムの一環として、当社のセキュリティの有効性を定期的にテストおよび検証。が適用されるコンプライアンスプログラムの詳細については AWS ParallelCluster、「コンプライアンスプログラム[AWS による対象範囲内のサービスコンプライアンスプログラム](https://aws.amazon.com/compliance/services-in-scope/)」を参照してください。
+ **クラウド内のセキュリティ** – お客様の責任は、使用する特定の AWS サービスによって決まります。また、お客様は、データの機密性、企業の要件、および適用される法律や規制など、その他のいくつかの関連要素についても責任を負います。

このドキュメントでは、 を使用する際の責任共有モデルの適用方法について説明します AWS ParallelCluster。以下のトピックでは、セキュリティおよびコンプライアンスの目的を達成する AWS ParallelCluster ように を設定する方法について説明します。また、リソースのモニタリングと保護に役立つ AWS ParallelCluster 方法で を使用する方法についても説明します AWS 。

**Topics**
+ [が使用する サービスのセキュリティ情報 AWS ParallelCluster](#security-seealso)
+ [でのデータ保護 AWS ParallelCluster](data-protection.md)
+ [の Identity and Access Management AWS ParallelCluster](security-iam.md)
+ [のコンプライアンス検証 AWS ParallelCluster](security-compliance-validation.md)
+ [TLS の最小バージョン 1.2 の指定](security-enforcing-tls.md)
+ [制限された環境のセキュリティグループの設定](security-groups-configuration.md)

## が使用する サービスのセキュリティ情報 AWS ParallelCluster
<a name="security-seealso"></a>
+ [Amazon EC2 でのセキュリティ](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-security.html)
+ [Amazon API Gateway でのセキュリティ](https://docs.aws.amazon.com/apigateway/latest/developerguide/security.html)
+ [のセキュリティ AWS Batch](https://docs.aws.amazon.com/batch/latest/userguide/security.html)
+ [CloudFormationでのセキュリティ](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/security.html)
+ [Amazon CloudWatch でのセキュリティ](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/security.html)
+ [AWS CodeBuildでのセキュリティ](https://docs.aws.amazon.com/codebuild/latest/userguide/security.html)
+ [Amazon DynamoDB でのセキュリティ](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/security.html)
+ [Amazon ECR でのセキュリティ](https://docs.aws.amazon.com/AmazonECR/latest/userguide/security.html)
+ [Amazon ECS でのセキュリティ](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/security.html)
+ [Amazon EFS でのセキュリティ](https://docs.aws.amazon.com/efs/latest/ug/security-considerations.html)
+ [FSx for Lustre でのセキュリティー](https://docs.aws.amazon.com/fsx/latest/LustreGuide/security.html)
+ [AWS Identity and Access Management (IAM) のセキュリティ ](https://docs.aws.amazon.com/IAM/latest/UserGuide/security.html)
+ [EC2 Image Builder でのセキュリティ](https://docs.aws.amazon.com/imagebuilder/latest/userguide/image-builder-security.html)
+ [のセキュリティ AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-security.html)
+ [Amazon Route 53 でのセキュリティ](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/security.html)
+ [Amazon SNS でのセキュリティ](https://docs.aws.amazon.com/sns/latest/dg/sns-security.html)
+ [Amazon SQS のセキュリティ ( AWS ParallelCluster バージョン 2.x の場合)](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-security.html)
+ [Amazon S3 でのセキュリティ](https://docs.aws.amazon.com/AmazonS3/latest/dev/security.html)
+ [Amazon VPC でのセキュリティ](https://docs.aws.amazon.com/vpc/latest/userguide/security.html)

# でのデータ保護 AWS ParallelCluster
<a name="data-protection"></a>

責任 AWS [共有モデル](https://aws.amazon.com/compliance/shared-responsibility-model/)、 でのデータ保護に適用されます。このモデルで説明されているように、 AWS はすべての を実行するグローバルインフラストラクチャを保護する責任があります AWS クラウド。ユーザーは、このインフラストラクチャでホストされるコンテンツに対する管理を維持する責任があります。また、使用する「 AWS のサービス 」のセキュリティ設定と管理タスクもユーザーの責任となります。データプライバシーの詳細については、[データプライバシーに関するよくある質問](https://aws.amazon.com/compliance/data-privacy-faq/)を参照してください。欧州でのデータ保護の詳細については、*AWS セキュリティブログ*に投稿された「[AWS 責任共有モデルおよび GDPR](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-gdpr/)」のブログ記事を参照してください。

データ保護の目的で、認証情報を保護し AWS アカウント 、 AWS IAM アイデンティティセンター または AWS Identity and Access Management (IAM) を使用して個々のユーザーを設定することをお勧めします。この方法により、それぞれのジョブを遂行するために必要な権限のみが各ユーザーに付与されます。また、次の方法でデータを保護することもお勧めします:
+ 各アカウントで多要素認証 (MFA) を使用します。
+ SSL/TLS を使用して AWS リソースと通信します。TLS 1.2 は必須ですが、TLS 1.3 を推奨します。
+ で API とユーザーアクティビティのログ記録を設定します AWS CloudTrail。CloudTrail 証跡を使用して AWS アクティビティをキャプチャする方法については、「 *AWS CloudTrail ユーザーガイド*」の[CloudTrail 証跡の使用](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-trails.html)」を参照してください。
+  AWS 暗号化ソリューションと、 内のすべてのデフォルトのセキュリティコントロールを使用します AWS のサービス。
+ Amazon Macie などの高度な管理されたセキュリティサービスを使用します。これらは、Amazon S3 に保存されている機密データの検出と保護を支援します。
+ コマンドラインインターフェイスまたは API AWS を介して にアクセスするときに FIPS 140-3 検証済み暗号化モジュールが必要な場合は、FIPS エンドポイントを使用します。利用可能な FIPS エンドポイントの詳細については、「[連邦情報処理規格 (FIPS) 140-3](https://aws.amazon.com/compliance/fips/)」を参照してください。

お客様の E メールアドレスなどの極秘または機密情報を、タグ、または **[名前]** フィールドなどの自由形式のテキストフィールドに含めないことを強くお勧めします。これは、コンソール、API、または SDK を使用して AWS CLIまたは他の AWS のサービス を操作する場合も同様です。 AWS SDKs タグ、または名前に使用される自由記述のテキストフィールドに入力したデータは、請求または診断ログに使用される場合があります。外部サーバーに URL を提供する場合、そのサーバーへのリクエストを検証できるように、認証情報を URL に含めないことを強くお勧めします。

## データの暗号化
<a name="data-encryption"></a>

セキュリティで保護されたサービスの重要な特徴として、情報はアクティブに使用されていないときに暗号化されます。

### 保管中の暗号化
<a name="encryption-rest"></a>

AWS ParallelCluster 自体は、ユーザーに代わって AWS サービスとやり取りするために必要な認証情報以外の顧客データを保存しません。

クラスター内のノード上のデータについては、保管時に暗号化できます。

Amazon EBS ボリュームの場合、[`EbsSettings`](SharedStorage-v3.md#SharedStorage-v3-EbsSettings) セクションの [`EbsSettings`](SharedStorage-v3.md#SharedStorage-v3-EbsSettings)/`Encrypted` および [`EbsSettings`](SharedStorage-v3.md#SharedStorage-v3-EbsSettings)/`KmsKeyId` の設定を使用して暗号化を設定します。詳細については、「Amazon EC2 ユーザーガイド」の「[Amazon EBS の暗号化](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html)」を参照してください。

Amazon EFS ボリュームの場合、[`EfsSettings`](SharedStorage-v3.md#SharedStorage-v3-EfsSettings) セクションの [`EfsSettings`](SharedStorage-v3.md#SharedStorage-v3-EfsSettings)/`Encrypted` および [`EfsSettings`](SharedStorage-v3.md#SharedStorage-v3-EfsSettings)/`KmsKeyId` の設定を使用して暗号化を設定します。詳細については、「Amazon Elastic File System ユーザーガイド**」の「[How encryption at rest works](https://docs.aws.amazon.com/efs/latest/ug/encryption-at-rest.html#howencrypt)」を参照してください。

FSx for Lustre ファイルシステムでは、Amazon FSx ファイルシステムの作成時に、保管中のデータの暗号化が自動的に有効になります。詳細については、「FSx for Lustre ユーザーガイド**」の「[保管中のデータの暗号化](https://docs.aws.amazon.com/fsx/latest/LustreGuide/encryption-at-rest.html)」を参照してください。

NVMe ボリュームを持つインスタンスタイプでは、NVMe インスタンスストアボリューム内のデータは、インスタンスのハードウェアモジュールに実装されている XTS-AES-256 暗号を使用して暗号化されます。暗号化キーはハードウェアモジュールで作成され、NVMe インスタンスストレージデバイスごとに固有です。すべての暗号化キーはインスタンスが停止または終了して復元できないときに破棄されます。この暗号化を無効にしたり、独自の暗号キーを指定したりすることはできません。詳細については、「*Amazon EC2 ユーザーガイド*」の「[保管中の暗号化](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/data-protection.html#encryption-rest)」を参照してください。

 AWS ParallelCluster を使用して、カスタマーデータをローカルコンピュータに送信して保存する AWS サービスを呼び出す場合は、そのサービスのユーザーガイドの「セキュリティとコンプライアンス」の章を参照して、そのデータの保存、保護、暗号化の方法を確認してください。

### 転送中の暗号化
<a name="encryption-transit"></a>

デフォルトでは、 AWS ParallelCluster および AWS サービスエンドポイントを実行しているクライアントコンピュータから送信されるすべてのデータは、HTTPS/TLS 接続を介してすべてを送信することで暗号化されます。クラスター内のノード間のトラフィックは、選択したインスタンスタイプに応じて自動的に暗号化することができます。詳細については、「*Amazon EC2 ユーザーガイド*」の「[転送中の暗号化](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/data-protection.html#encryption-transit)」を参照してください。

## 関連情報
<a name="security-data-protection-seealso"></a>
+ [Amazon EC2 でのデータ保護](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/data-protection.html)
+ [EC2 Image Builder でのデータ保護](https://docs.aws.amazon.com/imagebuilder/latest/userguide/data-protection.html)
+ [でのデータ保護 CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/security-data-protection.html)
+ [Amazon EFS でのデータ保護](https://docs.aws.amazon.com/efs/latest/ug/efs-backup-solutions.html)
+ [Amazon S3 でのデータ保護](https://docs.aws.amazon.com/AmazonS3/latest/dev/DataDurability.html)
+ [Amazon FSx for Lustre のデータ保護](https://docs.aws.amazon.com/fsx/latest/LustreGuide/data-protection.html)

# の Identity and Access Management AWS ParallelCluster
<a name="security-iam"></a>

AWS ParallelCluster は、 ロールを使用して AWS リソースとそのサービスにアクセスします。 AWS ParallelCluster がアクセス許可を付与するために使用するインスタンスポリシーとユーザーポリシーについては、「」を参照してください[AWS Identity and Access Management での アクセス許可 AWS ParallelCluster](iam-roles-in-parallelcluster-v3.md)。

唯一の大きな違いは、標準の ユーザーと長期の認証情報を使用する場合の認証方法です。ユーザーは AWS サービスのコンソールにアクセスするためにパスワードが必要ですが、同じユーザーは を使用して同じオペレーションを実行するためにアクセスキーペアが必要です AWS ParallelCluster。他のすべての短期の認証情報については、使用方法がコンソールと同じです。

で使用される認証情報 AWS ParallelCluster はプレーンテキストファイルに保存され、暗号化***されません***。
+ `$HOME/.aws/credentials` ファイルは、 AWS リソースへのアクセスに必要な長期的な認証情報を保存します。これには、アクセスキー ID とシークレットアクセスキーが含まれます。
+ 引き受けるロールや AWS IAM アイデンティティセンター サービスで使用するような短期の認証情報は、それぞれ `$HOME/.aws/cli/cache` フォルダと `$HOME/.aws/sso/cache` フォルダに保存されます。

リスクの軽減
+ `$HOME/.aws` フォルダとその子フォルダおよびファイルに対して、許可されたユーザーにのみアクセスを制限するようにファイルシステムのアクセス許可を設定することを強くお勧めします。
+ 一時的な認証情報を持つロールをできるだけ使用し、認証情報が漏洩した場合の損害の可能性を減らします。長期の認証情報は、短期のロールの認証情報を要求および更新する場合にのみ使用します。

# のコンプライアンス検証 AWS ParallelCluster
<a name="security-compliance-validation"></a>

サードパーティーの監査者は、複数の コンプライアンスプログラムの一環として AWS サービスのセキュリティと AWS コンプライアンスを評価します。 AWS ParallelCluster を使用してサービスにアクセスしても、そのサービスのコンプライアンスは変更されません。

特定のコンプライアンスプログラムの対象となる AWS サービスのリストについては、「コンプライアンス[AWS プログラムの対象となるサービスコンプライアンス](https://aws.amazon.com/compliance/services-in-scope/)」を参照してください。一般的な情報については、[AWS 「コンプライアンスプログラム](https://aws.amazon.com/compliance/programs/)」を参照してください。

を使用して、サードパーティーの監査レポートをダウンロードできます AWS Artifact。詳細については、「[AWS Artifactでレポートをダウンロードする](https://docs.aws.amazon.com/artifact/latest/ug/downloading-documents.html)」を参照してください。

を使用する際のお客様のコンプライアンス責任 AWS ParallelCluster は、お客様のデータの機密性、貴社のコンプライアンス目的、適用される法律および規制によって決まります。 は、コンプライアンスに役立つ以下のリソース AWS を提供します。
+ [セキュリティとコンプライアンスのクイックスタートガイド](https://aws.amazon.com/quickstart/?awsf.quickstart-homepage-filter=categories%23security-identity-compliance) – これらのデプロイガイドでは、アーキテクチャ上の考慮事項について説明し、セキュリティとコンプライアンスに重点を置いたベースライン環境をデプロイする手順について説明します AWS。
+ [「Amazon Web Services での HIPAA セキュリティとコンプライアンスの設計 AWS 」ホワイトペーパー ](https://docs.aws.amazon.com/pdfs/whitepapers/latest/architecting-hipaa-security-and-compliance-on-aws/architecting-hipaa-security-and-compliance-on-aws.pdf) – このホワイトペーパーでは、企業が AWS を使用して HIPAA 準拠のアプリケーションを作成する方法について説明します。
+ [AWS コンプライアンスリソース](https://aws.amazon.com/compliance/resources/) – このワークブックとガイドのコレクションは、お客様の業界や地域に適用される場合があります。
+ *AWS Config デベロッパーガイド*の[ルールによるリソースの評価](https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config.html) – この AWS Config サービスは、リソース設定が内部プラクティス、業界ガイドライン、および規制にどの程度準拠しているかを評価します。
+ [AWS Security Hub CSPM](https://docs.aws.amazon.com/securityhub/latest/userguide/what-is-securityhub.html) – この AWS サービスは、 内のセキュリティ状態を包括的に把握 AWS し、セキュリティ業界標準とベストプラクティスへの準拠を確認するのに役立ちます。

# TLS の最小バージョン 1.2 の指定
<a name="security-enforcing-tls"></a>

 AWS サービスと通信する際のセキュリティを強化するには、TLS 1.2 以降を使用するように を設定 AWS ParallelCluster する必要があります。を使用すると AWS ParallelCluster、Python を使用して TLS バージョンを設定します。

が TLS 1.2 より前の TLS バージョン AWS ParallelCluster を使用しないようにするには、OpenSSL を再コンパイルしてこの最小値を適用し、新しく構築された OpenSSL を使用するように Python OpenSSL を再コンパイルする必要があります。

## 現在サポートされているプロトコルの確認
<a name="enforcing-tls-supported"></a>

まず、OpenSSL を使用して、テストサーバーと Python SDK に使用する自己署名証明書を作成します。

```
$ openssl req -subj '/CN=localhost' -x509 -newkey rsa:4096 -nodes -keyout key.pem -out cert.pem -days 365
```

次に、OpenSSL を使用してテストサーバーをスピンアップします。

```
$ openssl s_server -key key.pem -cert cert.pem -www
```

新しいターミナルウィンドウで仮想環境を作成し、Python SDK をインストールします。

```
$ python3 -m venv test-env
source test-env/bin/activate
pip install botocore
```

SDK の基になる HTTP ライブラリを使用する、`check.py` という名前の新しい Python スクリプトを作成します。

```
$ import urllib3
URL = 'https://localhost:4433/'

http = urllib3.PoolManager(
ca_certs='cert.pem',
cert_reqs='CERT_REQUIRED',
)
r = http.request('GET', URL)
print(r.data.decode('utf-8'))
```

新しいスクリプトを実行します。

```
$ python check.py
```

確立された接続に関する詳細が表示されます。出力で「Protocol:」を検索します。出力が「TLSv1.2」以降の場合、SDK のデフォルト設定は TLS v1.2 以降です。それ以前のバージョンの場合は、OpenSSL を再コンパイルして Python を再コンパイルする必要があります。

ただし、Python のインストールがデフォルトで TLS v1.2 以降に設定されている場合でも、サーバーが TLS v1.2 以降をサポートしていないと、Python は TLS v1.2 より前のバージョンに再ネゴシエートする可能性があります。Python が以前のバージョンに自動的に再ネゴシエートしないことを確認するには、次のようにしてテストサーバーを再起動します。

```
$ openssl s_server -key key.pem -cert cert.pem -no_tls1_3 -no_tls1_2 -www
```

以前のバージョンの OpenSSL を使用している場合は、`-no_tls_3` フラグが使用できない可能性があります。この場合は、使用している OpenSSL のバージョンが TLS v1.3 をサポートしていないため、フラグを削除します。次に、Python スクリプトを実行します。

```
$ python check.py
```

Python のインストールが TLS 1.2 より前のバージョンに対して正しく再ネゴシエートしない場合は、SSL エラーが表示されます。

```
$ urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='localhost', port=4433): Max retries exceeded with url: / (Caused by SSLError(SSLError(1, '[SSL: UNSUPPORTED_PROTOCOL] unsupported protocol (_ssl.c:1108)')))
```

接続を確立できる場合は、OpenSSL と Python を再コンパイルして、TLS v1.2 より前のプロトコルのネゴシエーションを無効にする必要があります。

## OpenSSL と Python のコンパイル
<a name="enforcing-tls-compile"></a>

 AWS ParallelCluster が TLS 1.2 より前のものに対してネゴシエートされないようにするには、OpenSSL と Python を再コンパイルする必要があります。これを行うには、次のコンテンツをコピーしてスクリプトを作成し、実行します。

```
#!/usr/bin/env bash
set -e

OPENSSL_VERSION="1.1.1d"
OPENSSL_PREFIX="/opt/openssl-with-min-tls1_2"
PYTHON_VERSION="3.8.1"
PYTHON_PREFIX="/opt/python-with-min-tls1_2"


curl -O "https://www.openssl.org/source/openssl-$OPENSSL_VERSION.tar.gz"
tar -xzf "openssl-$OPENSSL_VERSION.tar.gz"
cd openssl-$OPENSSL_VERSION
./config --prefix=$OPENSSL_PREFIX no-ssl3 no-tls1 no-tls1_1 no-shared
make > /dev/null
sudo make install_sw > /dev/null


cd /tmp
curl -O "https://www.python.org/ftp/python/$PYTHON_VERSION/Python-$PYTHON_VERSION.tgz"
tar -xzf "Python-$PYTHON_VERSION.tgz"
cd Python-$PYTHON_VERSION
./configure --prefix=$PYTHON_PREFIX --with-openssl=$OPENSSL_PREFIX --disable-shared > /dev/null
make > /dev/null
sudo make install > /dev/null
```

これにより、静的にリンクされた OpenSSL を持つ Python のバージョンがコンパイルされます。このバージョンは、TLS 1.2 より前のバージョンは自動的にネゴシエートしません。また、`/opt/openssl-with-min-tls1_2` ディレクトリに OpenSSL がインストールされ、`/opt/python-with-min-tls1_2` ディレクトリに Python がインストールされます。このスクリプトを実行した後、新しいバージョンの Python のインストールを確認します。

```
$ /opt/python-with-min-tls1_2/bin/python3 --version
```

これにより、以下が出力されます。

```
Python 3.8.1
```

この新しいバージョンの Python が TLS 1.2 より前のバージョンをネゴシエートしないことを確認するには、新しくインストールされた Python バージョン (つまり[現在サポートされているプロトコルの確認](#enforcing-tls-supported)) を使用する手順 `/opt/python-with-min-tls1_2/bin/python3` を再実行します。

# 制限された環境のセキュリティグループの設定
<a name="security-groups-configuration"></a>

デフォルトでは、 はクラスターノード間のすべてのトラフィックを許可するセキュリティグループ AWS ParallelCluster を作成および設定します。制限の厳しい環境では、クラスターオペレーションに必要なポートのみにネットワークアクセスを制限する必要がある場合があります。このセクションでは、 AWS ParallelCluster デプロイのアクセスが制限されたカスタムセキュリティグループを設定する方法について説明します。

## セキュリティグループの概要
<a name="security-groups-configuration-overview"></a>

AWS ParallelCluster はセキュリティグループを使用して、ヘッドノード、コンピューティングノード、ログインノード (設定されている場合) 間のネットワークトラフィックを制御します。デフォルトでは、 がクラスター AWS ParallelCluster を作成すると、クラスター内のノード間のすべてのトラフィックを許可するセキュリティグループが作成されます。セキュリティ要件が厳しい環境では、トラフィックを必要なポートのみに制限するカスタムセキュリティグループを提供できます。

セキュリティグループは、クラスター設定の以下のセクションで設定できます。
+ [`HeadNode` / `Networking`](HeadNode-v3.md#HeadNode-v3-Networking) - ヘッドノードへのアクセスとヘッドノードからのアクセスを制御します
+ [`Scheduling` / `SlurmQueues` / `Networking`](Scheduling-v3.md#Scheduling-v3-SlurmQueues-Networking) - コンピューティングノードとの間のアクセスを制御します
+ [`LoginNodes`](LoginNodes-v3.md) - ログインノードとの間のアクセスを制御します (設定されている場合）

これらのセクションごとに、以下を指定できます。
+ `SecurityGroups` - が作成するデフォルトのセキュリティグループを置き換え AWS ParallelCluster ます
+ `AdditionalSecurityGroups` - によって作成されたデフォルトのセキュリティグループに加えて、セキュリティグループを追加します。 AWS ParallelCluster

## クラスターオペレーションに必要なポート
<a name="security-groups-configuration-required-ports"></a>

カスタムセキュリティグループを設定するときは、適切なノード間で次のポートが開いていることを確認する必要があります。


**ヘッドノードに必要なポート**  

| ポート | プロトコル | 方向 | 目的 | 
| --- | --- | --- | --- | 
| 22 | TCP | インバウンド | ヘッドノードへの SSH アクセス (許可された IP 範囲から） | 
| 6817-6819 | TCP | インバウンド | Slurm コントローラーポート (コンピューティングノードとログインノードから） | 
| 6817-6819 | TCP | アウトバウンド | Slurm コントローラーポート (コンピューティングノードとログインノード用） | 
| 8443 | TCP | インバウンド | NICE DCV (有効な場合、許可された IP 範囲から） | 
| 2049 年 111 月 | TCP / UDP | インバウンド | NFS (共有ストレージに NFS を使用している場合は、コンピューティングノードとログインノードから） | 
| 443 | TCP | アウトバウンド |  AWS サービスへの HTTPS アクセス (VPC エンドポイントを使用しない場合） | 


**コンピューティングノードに必要なポート**  

| ポート | プロトコル | 方向 | 目的 | 
| --- | --- | --- | --- | 
| 22 | TCP | インバウンド | SSH アクセス (ヘッドノードとログインノードから） | 
| 6818 | TCP | インバウンド | Slurm デーモンポート (ヘッドノードから） | 
| 6817-6819 | TCP | アウトバウンド | Slurm コントローラーポート (ヘッドノードへ） | 
| 2049 年 111 月 | TCP / UDP | アウトバウンド | NFS (共有ストレージに NFS を使用している場合はヘッドノードへ） | 
| 443 | TCP | アウトバウンド |  AWS サービスへの HTTPS アクセス (VPC エンドポイントを使用しない場合） | 

EFA (Elastic Fabric Adapter) を使用している場合は、EFA が有効になっているコンピューティングノード間のすべてのトラフィックも許可する必要があります。
+ EFA を使用するコンピューティングノード間のすべての TCP および UDP トラフィック
+ EFA を使用するコンピューティングノード間の EFA デバイス上のすべてのトラフィック

**注記**  
FSx for Lustre、Amazon EFS、またはその他のストレージソリューションなどの共有ストレージシステムを使用している場合は、それらのサービスに適したポートも開いていることを確認する必要があります。

## カスタムセキュリティグループの作成
<a name="security-groups-configuration-custom"></a>

 AWS ParallelCluster デプロイ用のカスタムセキュリティグループを作成するには、次の手順に従います。

1.  AWS マネジメントコンソール、 AWS CLI、または AWS CloudFormation を使用して、ヘッドノード、コンピューティングノード、ログインノード (該当する場合) のセキュリティグループを作成します。

1. 前のセクションで説明したように、必要なトラフィックのみを許可するようにセキュリティグループルールを設定します。

1. クラスター設定ファイルでこれらのセキュリティグループを参照します。

 AWS CLI を使用してセキュリティグループを作成する方法の例を次に示します。

```
# Create security group for head node
aws ec2 create-security-group \
  --group-name pcluster-head-node-sg \
  --description "Security group for ParallelCluster head node" \
  --vpc-id vpc-12345678

# Create security group for compute nodes
aws ec2 create-security-group \
  --group-name pcluster-compute-node-sg \
  --description "Security group for ParallelCluster compute nodes" \
  --vpc-id vpc-12345678

# Add rules to allow necessary traffic between head and compute nodes
# (Add specific rules based on the required ports listed above)
```

## クラスター設定でセキュリティグループを設定する
<a name="security-groups-configuration-cluster-config"></a>

カスタムセキュリティグループを作成したら、クラスター設定ファイルでそれらを参照できます。

```
# Example cluster configuration with custom security groups
HeadNode:
  ...
  Networking:
    SubnetId: subnet-12345678
    SecurityGroups:
      - sg-headnode12345  # Custom security group for head node
    # Or use AdditionalSecurityGroups if you want to keep the default security groups
    # AdditionalSecurityGroups:
    #   - sg-additional12345
  ...

Scheduling:
  Scheduler: slurm
  SlurmQueues:
    - Name: queue1
      ...
      Networking:
        SubnetIds:
          - subnet-12345678
        SecurityGroups:
          - sg-computenode12345  # Custom security group for compute nodes
        # Or use AdditionalSecurityGroups if you want to keep the default security groups
        # AdditionalSecurityGroups:
        #   - sg-additional12345
      ...

# If using login nodes
LoginNodes:
  Pools:
    - Name: login-pool
      ...
      Networking:
        SubnetIds:
          - subnet-12345678
        SecurityGroups:
          - sg-loginnode12345  # Custom security group for login nodes
        # Or use AdditionalSecurityGroups if you want to keep the default security groups
        # AdditionalSecurityGroups:
        #   - sg-additional12345
      ...
```

を使用する場合`SecurityGroups`、 AWS ParallelCluster は指定したセキュリティグループのみを使用し、デフォルトのセキュリティグループを置き換えます。を使用する場合`AdditionalSecurityGroups`、 AWS ParallelCluster は作成するデフォルトのセキュリティグループと、指定した追加のセキュリティグループの両方を使用します。

**警告**  
コンピューティングインスタンスで [Elastic Fabric Adapter (EFA)](Scheduling-v3.md#yaml-Scheduling-SlurmQueues-ComputeResources-Efa) を有効にする場合は、EFA 対応インスタンスが、それ自体へのすべてのインバウンドトラフィックとアウトバウンドトラフィックを許可するセキュリティグループのメンバーであることを確認します。これは、EFA が正しく機能するために必要です。

## 制限された環境での VPC エンドポイントの使用
<a name="security-groups-configuration-vpc-endpoints"></a>

制限の厳しい環境では、インターネットアクセスのないサブネット AWS ParallelCluster にデプロイできます。この場合、クラスターが AWS サービスと通信できるように VPC エンドポイントを設定する必要があります。詳細な手順については、「[AWS ParallelCluster インターネットアクセスのない 1 つのサブネット内](aws-parallelcluster-in-a-single-public-subnet-no-internet-v3.md)」を参照してください。

VPC エンドポイントを使用する場合は、セキュリティグループが VPC エンドポイントとの間のトラフィックを許可していることを確認します。これを行うには、VPC エンドポイントに関連付けられたセキュリティグループをヘッドノードとコンピューティングノード`AdditionalSecurityGroups`の設定に追加します。

```
HeadNode:
  ...
  Networking:
    SubnetId: subnet-1234567890abcdef0
    AdditionalSecurityGroups:
      - sg-abcdef01234567890  # Security group that enables communication with VPC endpoints
  ...

Scheduling:
  Scheduler: slurm
  SlurmQueues:
    - ...
      Networking:
        SubnetIds:
          - subnet-1234567890abcdef0
        AdditionalSecurityGroups:
          - sg-1abcdef01234567890  # Security group that enables communication with VPC endpoints
```

## セキュリティグループ設定のベストプラクティス
<a name="security-groups-configuration-best-practices"></a>

制限 AWS ParallelCluster された環境で のセキュリティグループを設定するときは、次のベストプラクティスを考慮してください。
+ **最小特権の原則: **クラスターオペレーションに必要なポートのみを開きます。
+ **セキュリティグループ参照を使用する**: 可能な場合は、CIDR ブロックではなくセキュリティグループ参照 (別のセキュリティグループからのトラフィックを許可) を使用して、クラスターコンポーネント間のトラフィックを制限します。
+ **SSH アクセスの制限: **[`HeadNode`// 設定を使用して、ヘッドノードへの SSH アクセスを、それを必要とする IP `Ssh``AllowedIps`](HeadNode-v3.md#yaml-HeadNode-Ssh-AllowedIps) 範囲のみに制限します。
+ **DCV アクセスの制限**: NICE DCV を使用する場合は、/[`HeadNode`/ 設定を使用してアクセスを必要とする IP `Dcv``AllowedIps`](HeadNode-v3.md#yaml-HeadNode-Dcv-AllowedIps) 範囲のみに制限します。
+ **徹底的にテスト**する: カスタムセキュリティグループを設定したら、すべてのクラスター機能を徹底的にテストして、必要なすべての通信パスが機能していることを確認します。
+ **設定を文書化する**: 開いているポートや必要な理由など、セキュリティグループ設定のドキュメントを維持します。

## セキュリティグループの問題のトラブルシューティング
<a name="security-groups-configuration-troubleshooting"></a>

カスタムセキュリティグループの設定後に問題が発生した場合は、次のトラブルシューティング手順を検討してください。
+ **クラスターログを確認する**: 接続エラーがないか CloudWatch Logs のクラスターログを確認します。
+ **セキュリティグループルールを検証する**: 必要なすべてのポートが適切なノード間で開いていることを確認します。
+ **接続のテスト**: `telnet`や などのツールを使用して`nc`、特定のポートのノード間の接続をテストします。
+ **一時的にルールを拡張する**: 必要なポートを特定できない場合は、クラスターノード間のすべてのトラフィックを一時的に許可してから、必要なポートを特定するときに徐々に制限します。
+ **VPC エンドポイントの設定を確認する**: VPC エンドポイントを使用している場合は、それらが正しく設定されていること、およびセキュリティグループがそれらとの間のトラフィックを許可していることを確認します。

問題が解決しない場合は、クラスター`SecurityGroups`設定ファイルから設定を削除 AWS ParallelCluster することで、 によって作成されたデフォルトのセキュリティグループの使用に戻すことができます。