設定受限環境的安全群組 - AWS ParallelCluster

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

設定受限環境的安全群組

根據預設, 會 AWS ParallelCluster 建立和設定安全群組,以允許叢集節點之間的所有流量。在高度受限的環境中,您可能需要將網路存取限制為僅叢集操作所需的連接埠。本節說明如何為 AWS ParallelCluster 部署設定具有限制存取的自訂安全群組。

安全群組概觀

AWS ParallelCluster 使用安全群組來控制前端節點、運算節點和登入節點之間的網路流量 (如果已設定)。根據預設,當 AWS ParallelCluster 建立叢集時,它會建立安全群組,以允許叢集內節點之間的所有流量。在具有嚴格安全要求的環境中,您可以提供自訂安全群組,將流量限制為僅必要的連接埠。

您可以在叢集組態的下列區段中設定安全群組:

對於這些區段,您可以指定:

  • SecurityGroups - 取代 AWS ParallelCluster 將建立的預設安全群組

  • AdditionalSecurityGroups - 新增安全群組,以及 建立的預設安全群組 AWS ParallelCluster

叢集操作所需的連接埠

設定自訂安全群組時,您必須確保在適當的節點之間開啟下列連接埠:

前端節點所需的連接埠
連線埠 通訊協定 Direction 用途
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 傳出 HTTPS 存取 AWS 服務 (如果未使用 VPC 端點)
運算節點所需的連接埠
連線埠 通訊協定 Direction 用途
22 TCP 傳入 SSH 存取 (來自前端節點和登入節點)
6818 TCP 傳入 Slurm 協助程式連接埠 (來自前端節點)
6817-6819 TCP 傳出 Slurm 控制器連接埠 (前端節點)
2049 年 111 月 TCP/UDP 傳出 NFS (對於前端節點,如果使用 NFS 進行共用儲存)
443 TCP 傳出 HTTPS 存取 AWS 服務 (如果未使用 VPC 端點)

如果您使用的是 EFA (彈性布料轉接器),您還必須允許已啟用 EFA 的運算節點之間的所有流量:

  • 運算節點與 EFA 之間的所有 TCP 和 UDP 流量

  • 具有 EFA 的運算節點之間的 EFA 裝置上所有流量

注意

如果您使用的是 FSx for Lustre、Amazon EFS 或其他儲存解決方案等共用儲存系統,您也需要確保為這些服務開啟適當的連接埠。

建立自訂安全群組

若要為您的 AWS ParallelCluster 部署建立自訂安全群組,請遵循下列步驟:

  1. 使用 AWS 管理主控台、 AWS CLI 或 AWS CloudFormation 為前端節點、運算節點和登入節點 (如適用) 建立安全群組。

  2. 設定安全群組規則以僅允許必要的流量,如上一節所述。

  3. 參考叢集組態檔案中的這些安全群組。

以下是如何使用 CLI AWS 建立安全群組的範例:

# 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)

在叢集組態中設定安全群組

建立自訂安全群組之後,您可以在叢集組態檔案中參考這些群組:

# 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),請確定已啟用 EFA 的執行個體是允許所有傳入和傳出流量本身的安全群組成員。這是 EFA 正常運作的必要項目。

在受限環境中使用 VPC 端點

在高度受限的環境中,您可能想要在沒有網際網路存取的情況下部署在子網路 AWS ParallelCluster 中。在這種情況下,您需要設定 VPC 端點,以允許叢集與 AWS 服務通訊。如需詳細說明,請參閱 AWS ParallelCluster 在沒有網際網路存取的單一子網路中

使用 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

安全群組組態的最佳實務

在受限環境中設定 的安全群組 AWS ParallelCluster 時,請考慮下列最佳實務:

  • 最低權限原則:僅開啟叢集操作所需的連接埠。

  • 使用安全群組參考:盡可能使用安全群組參考 (允許來自另一個安全群組的流量),而不是 CIDR 區塊來限制叢集元件之間的流量。

  • 限制 SSH 存取:將前端節點的 SSH 存取限制為僅使用 HeadNode/ / 組態所需的 IP SshAllowedIps 範圍。

  • 限制 DCV 存取:如果使用 NICE DCV,請使用 HeadNode/ / 組態僅限制存取需要的 IP DcvAllowedIps 範圍。

  • 徹底測試:設定自訂安全群組之後,請徹底測試所有叢集功能,以確保所有必要的通訊路徑都能正常運作。

  • 記錄您的組態:維護安全群組組態的文件,包括開啟哪些連接埠,以及為什麼需要這些連接埠。

對安全群組問題進行故障診斷

如果您在設定自訂安全群組之後遇到問題,請考慮下列疑難排解步驟:

  • 檢查叢集日誌:檢閱 CloudWatch Logs 中的叢集日誌是否有任何連線錯誤。

  • 驗證安全群組規則:確保在適當的節點之間開啟所有必要的連接埠。

  • 測試連線能力:使用 telnet或 等工具nc來測試特定連接埠上節點之間的連線能力。

  • 暫時展開規則:如果您無法識別需要哪些連接埠,請暫時允許叢集節點之間的所有流量,然後在識別所需的連接埠時逐漸限制。

  • 檢查 VPC 端點組態:如果您使用的是 VPC 端點,請確保它們已正確設定,且安全群組允許進出流量。

如果持續遇到問題,您可以從叢集組態檔案移除SecurityGroups組態 AWS ParallelCluster ,以還原為使用 建立的預設安全群組。