

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

# 制限された環境のセキュリティグループの設定
<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 することで、 によって作成されたデフォルトのセキュリティグループの使用に戻すことができます。