

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Sicurezza in AWS ParallelCluster
<a name="security"></a>

La sicurezza del cloud AWS è la massima priorità. In qualità di AWS cliente, puoi beneficiare di un data center e di un'architettura di rete progettati per soddisfare i requisiti delle organizzazioni più sensibili alla sicurezza.

La sicurezza è una responsabilità condivisa tra te AWS e te. Il [modello di responsabilità condivisa](https://aws.amazon.com/compliance/shared-responsibility-model/) descrive questo approccio come sicurezza *del* cloud e sicurezza *nel* cloud:
+ **Sicurezza del cloud**: AWS è responsabile della protezione dell'infrastruttura che gestisce AWS i servizi nel AWS cloud. AWS ti fornisce anche servizi che puoi utilizzare in modo sicuro. I revisori esterni testano e verificano regolarmente l'efficacia della nostra sicurezza nell'ambito dei [AWS Programmi di AWS conformità dei Programmi di conformità](https://aws.amazon.com/compliance/programs/) dei di . Per ulteriori informazioni sui programmi di conformità applicabili AWS ParallelCluster, consulta [AWS Servizi nell'ambito del programma di conformitàAWS](https://aws.amazon.com/compliance/services-in-scope/) .
+ **Sicurezza nel cloud**: la tua responsabilità è determinata dal AWS servizio o dai servizi specifici che utilizzi. Sei inoltre responsabile di diversi altri fattori correlati, tra cui la sensibilità dei tuoi dati, i requisiti aziendali e le leggi e i regolamenti applicabili. 

Questa documentazione descrive come applicare il modello di responsabilità condivisa durante l'utilizzo AWS ParallelCluster. I seguenti argomenti mostrano come configurare per AWS ParallelCluster soddisfare gli obiettivi di sicurezza e conformità. Imparerai anche a utilizzare AWS ParallelCluster in modo da monitorare e proteggere AWS le tue risorse.

**Topics**
+ [Informazioni di sicurezza per i servizi utilizzati da AWS ParallelCluster](#security-seealso)
+ [Protezione dei dati in AWS ParallelCluster](data-protection.md)
+ [Identity and Access Management per AWS ParallelCluster](security-iam.md)
+ [Convalida della conformità per AWS ParallelCluster](security-compliance-validation.md)
+ [Applicazione di una versione minima di TLS 1.2](security-enforcing-tls.md)
+ [Configurazione di gruppi di sicurezza per ambienti con restrizioni](security-groups-configuration.md)

## Informazioni di sicurezza per i servizi utilizzati da AWS ParallelCluster
<a name="security-seealso"></a>
+ [Sicurezza in Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-security.html)
+ [Sicurezza in Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/security.html)
+ [Sicurezza in AWS Batch](https://docs.aws.amazon.com/batch/latest/userguide/security.html)
+ [Sicurezza in CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/security.html)
+ [Sicurezza in Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/security.html)
+ [Sicurezza in AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/security.html)
+ [Sicurezza in Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/security.html)
+ [Sicurezza in Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/security.html)
+ [Sicurezza in Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/security.html)
+ [Sicurezza in Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/security-considerations.html)
+ [Sicurezza in FSx for Lustre](https://docs.aws.amazon.com/fsx/latest/LustreGuide/security.html)
+ [Sicurezza in AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/security.html)
+ [Sicurezza in EC2 Image Builder](https://docs.aws.amazon.com/imagebuilder/latest/userguide/image-builder-security.html)
+ [Sicurezza in AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-security.html)
+ [Sicurezza in Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/security.html)
+ [Sicurezza in Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-security.html)
+ [Sicurezza in Amazon SQS (per la AWS ParallelCluster versione 2.x.)](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-security.html)
+ [Sicurezza in Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/dev/security.html)
+ [Sicurezza in Amazon VPC](https://docs.aws.amazon.com/vpc/latest/userguide/security.html)

# Protezione dei dati in AWS ParallelCluster
<a name="data-protection"></a>

Il modello di [responsabilità AWS](https://aws.amazon.com/compliance/shared-responsibility-model/) di si applica alla protezione dei dati in. Come descritto in questo modello, AWS è responsabile della protezione dell'infrastruttura globale che gestisce tutti i Cloud AWS. L’utente è responsabile del controllo dei contenuti ospitati su questa infrastruttura. L’utente è inoltre responsabile della configurazione della protezione e delle attività di gestione per i Servizi AWS utilizzati. Per maggiori informazioni sulla privacy dei dati, consulta le [Domande frequenti sulla privacy dei dati](https://aws.amazon.com/compliance/data-privacy-faq/). Per informazioni sulla protezione dei dati in Europa, consulta il post del blog relativo al [AWS Modello di responsabilità condivisa e GDPR](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-gdpr/) nel *AWS Blog sulla sicurezza*.

Ai fini della protezione dei dati, consigliamo di proteggere Account AWS le credenziali e configurare i singoli utenti con AWS IAM Identity Center or AWS Identity and Access Management (IAM). In tal modo, a ogni utente verranno assegnate solo le autorizzazioni necessarie per svolgere i suoi compiti. Suggeriamo, inoltre, di proteggere i dati nei seguenti modi:
+ Utilizza l’autenticazione a più fattori (MFA) con ogni account.
+  SSL/TLS Da utilizzare per comunicare con AWS le risorse. È richiesto TLS 1.2 ed è consigliato TLS 1.3.
+ Configura l'API e la registrazione delle attività degli utenti con AWS CloudTrail. Per informazioni sull'utilizzo dei CloudTrail percorsi per acquisire AWS le attività, consulta [Lavorare con i CloudTrail percorsi](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-trails.html) nella *Guida per l'AWS CloudTrail utente*.
+ Utilizza soluzioni di AWS crittografia, insieme a tutti i controlli di sicurezza predefiniti all'interno Servizi AWS.
+ Utilizza i servizi di sicurezza gestiti avanzati, come Amazon Macie, che aiutano a individuare e proteggere i dati sensibili archiviati in Amazon S3.
+ Se hai bisogno di moduli crittografici convalidati FIPS 140-3 per accedere AWS tramite un'interfaccia a riga di comando o un'API, usa un endpoint FIPS. Per ulteriori informazioni sugli endpoint FIPS disponibili, consulta il [Federal Information Processing Standard (FIPS) 140-3](https://aws.amazon.com/compliance/fips/).

Ti consigliamo di non inserire mai informazioni riservate o sensibili, ad esempio gli indirizzi e-mail dei clienti, nei tag o nei campi di testo in formato libero, ad esempio nel campo **Nome**. Ciò include quando lavori o Servizi AWS utilizzi la console, l'API o. AWS CLI AWS SDKs I dati inseriti nei tag o nei campi di testo in formato libero utilizzati per i nomi possono essere utilizzati per i la fatturazione o i log di diagnostica. Quando si fornisce un URL a un server esterno, suggeriamo vivamente di non includere informazioni sulle credenziali nell’URL per convalidare la richiesta al server.

## Crittografia dei dati
<a name="data-encryption"></a>

Una caratteristica fondamentale di qualsiasi servizio sicuro è che le informazioni vengano crittografate quando non sono utilizzate attivamente.

### Crittografia dei dati a riposo
<a name="encryption-rest"></a>

AWS ParallelCluster di per sé non memorizza dati del cliente diversi dalle credenziali necessarie per interagire con i AWS servizi per conto dell'utente.

Per i dati sui nodi del cluster, i dati possono essere crittografati quando sono inattivi.

Per i volumi Amazon EBS, la crittografia viene configurata utilizzando le `KmsKeyId` impostazioni [`EbsSettings`](SharedStorage-v3.md#SharedStorage-v3-EbsSettings)[`EbsSettings`](SharedStorage-v3.md#SharedStorage-v3-EbsSettings)/`Encrypted`e/nella [`EbsSettings`](SharedStorage-v3.md#SharedStorage-v3-EbsSettings) sezione. Per ulteriori informazioni, consulta la [crittografia di Amazon EBS](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html) nella Guida per l'utente di Amazon EC2.

Per i volumi Amazon EFS, la crittografia viene configurata utilizzando le `KmsKeyId` impostazioni [`EfsSettings`](SharedStorage-v3.md#SharedStorage-v3-EfsSettings)[`EfsSettings`](SharedStorage-v3.md#SharedStorage-v3-EfsSettings)/`Encrypted`e/nella [`EfsSettings`](SharedStorage-v3.md#SharedStorage-v3-EfsSettings) sezione. Per ulteriori informazioni, consulta [How encryption at rest nella](https://docs.aws.amazon.com/efs/latest/ug/encryption-at-rest.html#howencrypt) *Amazon Elastic File System User Guide.*

Per FSx i file system for Lustre, la crittografia dei dati inattivi viene abilitata automaticamente durante la creazione di un FSx file system Amazon. Per ulteriori informazioni, [consulta Encrypting data at rest](https://docs.aws.amazon.com/fsx/latest/LustreGuide/encryption-at-rest.html) nella *Amazon FSx for Lustre User* Guide.

Ad esempio, i tipi con NVMe volumi, i dati sui volumi dell' NVMe Instance Store vengono crittografati utilizzando un codice XTS-AES-256 implementato su un modulo hardware sull'istanza. Le chiavi di crittografia vengono generate utilizzando il modulo hardware e sono uniche per ogni dispositivo di storage dell'istanza. NVMe Quando l'istanza viene arrestata o terminata, tutte le chiavi crittografiche vengono distrutte e non possono essere ripristinate. Non è possibile disattivare questa cifratura e non è possibile fornire una propria chiave crittografica. Per ulteriori informazioni, consulta [Encryption at rest](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/data-protection.html#encryption-rest) nella *Amazon EC2 User* Guide.

Se utilizzi AWS ParallelCluster un AWS servizio che trasmette i dati dei clienti al computer locale per l'archiviazione, consulta il capitolo Sicurezza e conformità della Guida per l'utente del servizio per informazioni su come tali dati vengono archiviati, protetti e crittografati.

### Crittografia dei dati in transito
<a name="encryption-transit"></a>

Per impostazione predefinita, tutti i dati trasmessi dal computer client in esecuzione AWS ParallelCluster e dagli endpoint AWS del servizio vengono crittografati inviando tutto tramite una connessione. HTTPS/TLS Il traffico tra i nodi del cluster può essere crittografato automaticamente, a seconda dei tipi di istanza selezionati. Per ulteriori informazioni, consulta [Encryption in transit](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/data-protection.html#encryption-transit) nella *Amazon EC2 User* Guide.

## Consulta anche
<a name="security-data-protection-seealso"></a>
+ [Protezione dei dati in Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/data-protection.html)
+ [Protezione dei dati in EC2 Image Builder](https://docs.aws.amazon.com/imagebuilder/latest/userguide/data-protection.html)
+ [Protezione dei dati in CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/security-data-protection.html)
+ [Protezione dei dati in Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/efs-backup-solutions.html)
+ [Protezione dei dati in Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/dev/DataDurability.html)
+ [Protezione dei dati in FSx for Lustre](https://docs.aws.amazon.com/fsx/latest/LustreGuide/data-protection.html)

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

AWS ParallelCluster utilizza i ruoli per accedere alle AWS risorse e ai relativi servizi. Le politiche relative alle istanze e agli utenti AWS ParallelCluster utilizzate per concedere le autorizzazioni sono documentate in. [AWS Identity and Access Management autorizzazioni in AWS ParallelCluster](iam-roles-in-parallelcluster-v3.md)

L'unica differenza principale è il modo in cui si esegue l'autenticazione quando si utilizza un utente standard e credenziali a lungo termine. Sebbene un utente richieda una password per accedere alla console di un AWS servizio, lo stesso utente richiede una coppia di key di accesso per eseguire le stesse operazioni utilizzando AWS ParallelCluster. Tutte le altre credenziali a breve termine vengono utilizzate nello stesso modo in cui vengono utilizzate con la console.

***Le credenziali utilizzate da AWS ParallelCluster sono archiviate in file di testo semplice e non sono crittografate.***
+ Il `$HOME/.aws/credentials` file memorizza le credenziali a lungo termine necessarie per accedere alle risorse. AWS Per recuperare l'ID chiave di accesso e la chiave di accesso segreta
+ Le credenziali a breve termine, ad esempio quelle per i ruoli assunti dall'utente o quelle relative AWS IAM Identity Center ai servizi, vengono inoltre archiviate rispettivamente nelle `$HOME/.aws/sso/cache` cartelle `$HOME/.aws/cli/cache` e.

**Mitigazione del rischio**
+ Si consiglia vivamente di configurare le autorizzazioni del file system per la cartella `$HOME/.aws` e per le relative cartelle e file figlio per limitare l'accesso solo agli utenti autorizzati.
+ Utilizzare i ruoli con credenziali temporanee laddove possibile per ridurre l'opportunità di danni in caso di compromissione delle credenziali. Utilizzare le credenziali a lungo termine solo per richiedere e aggiornare le credenziali del ruolo a breve termine.

# Convalida della conformità per AWS ParallelCluster
<a name="security-compliance-validation"></a>

I revisori esterni valutano la sicurezza e la conformità dei AWS servizi nell'ambito di più programmi di AWS conformità. L'utilizzo AWS ParallelCluster per accedere a un servizio non altera la conformità di tale servizio. 

Per un elenco dei AWS servizi che rientrano nell'ambito di specifici programmi di conformità, consulta la sezione [AWS Servizi rientranti nell'ambito dei programmi di conformità](https://aws.amazon.com/compliance/services-in-scope/) (). Per informazioni generali, vedere programmi di [AWS conformità, programmi](https://aws.amazon.com/compliance/programs/) di di .

È possibile scaricare report di audit di terze parti utilizzando. AWS Artifact Per ulteriori informazioni, consulta [Download di report in AWS Artifact](https://docs.aws.amazon.com/artifact/latest/ug/downloading-documents.html).

La vostra responsabilità di conformità durante l'utilizzo AWS ParallelCluster è determinata dalla sensibilità dei dati, dagli obiettivi di conformità dell'azienda e dalle leggi e dai regolamenti applicabili. AWS fornisce le seguenti risorse per contribuire alla conformità:
+ [Guide introduttive](https://aws.amazon.com/quickstart/?awsf.quickstart-homepage-filter=categories%23security-identity-compliance) su su sicurezza e conformità: queste guide all'implementazione illustrano considerazioni sull'architettura e forniscono passaggi per implementare ambienti di base incentrati sulla sicurezza e la conformità. AWS
+ [Whitepaper sull'architettura per la sicurezza e la conformità HIPAA su Amazon Web Services: questo AWS white paper](https://docs.aws.amazon.com/pdfs/whitepapers/latest/architecting-hipaa-security-and-compliance-on-aws/architecting-hipaa-security-and-compliance-on-aws.pdf) descrive come le aziende possono utilizzare per creare applicazioni conformi allo standard HIPAA. AWS 
+ AWS risorse per [la conformità e risorse per la conformità](https://aws.amazon.com/compliance/resources/): questa raccolta di potrebbe riguardare il tuo settore e la tua area geografica.
+ [Valutazione delle risorse in base alle regole contenute](https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config.html) nella *Guida per gli AWS Config sviluppatori*: il AWS Config servizio valuta la conformità delle configurazioni delle risorse alle pratiche interne, alle linee guida del settore e alle normative.
+ [AWS Security Hub CSPM](https://docs.aws.amazon.com/securityhub/latest/userguide/what-is-securityhub.html)— Questo AWS servizio offre una visione completa dello stato di sicurezza dell'utente e consente di verificare la conformità agli standard e alle best practice del settore della sicurezza. AWS 

# Applicazione di una versione minima di TLS 1.2
<a name="security-enforcing-tls"></a>

Per aumentare la sicurezza durante la comunicazione con AWS i servizi, è necessario configurare l'utilizzo di TLS AWS ParallelCluster 1.2 o versione successiva. Quando si utilizza AWS ParallelCluster, Python viene utilizzato per impostare la versione TLS.

Per garantire che non AWS ParallelCluster utilizzi una versione TLS precedente a TLS 1.2, potrebbe essere necessario ricompilare OpenSSL per applicare questo valore minimo e quindi ricompilare Python per utilizzare OpenSSL di nuova generazione. 

## Determinare i protocolli attualmente supportati
<a name="enforcing-tls-supported"></a>

Innanzitutto, creare un certificato autofirmato da utilizzare per il server di test e per l'SDK Python che utilizza OpenSSL.

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

Quindi avviare un server di test usando OpenSSL.

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

In una nuova finestra del terminale, creare un ambiente virtuale e installare Python SDK.

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

Creare un nuovo script Python denominato `check.py` che utilizza la libreria HTTP sottostante dell'SDK.

```
$ 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'))
```

Eseguire il nuovo script.

```
$ python check.py
```

In questo modo vengono visualizzati i dettagli sulla connessione effettuata. Ricercare "Protocol : " nell'output. Se l'output è "TLSv1.2" o successivo, l'SDK utilizza per impostazione predefinita TLS v1.2 o versione successiva. Se si tratta di una versione precedente, è necessario ricompilare OpenSSL e ricompilare Python.

Tuttavia, anche se l'installazione di Python è impostata su TLS v1.2 o versioni successive, è comunque possibile per Python rinegoziare una versione precedente a TLS v1.2 se il server non supporta TLS v1.2 o versioni successive. Per verificare che Python non rinegozi automaticamente su versioni precedenti, riavviare il server di test con quanto segue.

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

Se si sta utilizzando una versione precedente di OpenSSL, il flag `-no_tls_3` potrebbe non essere disponibile. In questo caso, rimuovere il flag perché la versione di OpenSSL che si sta utilizzando non supporta TLS v1.3. Eseguire lo script Python.

```
$ python check.py
```

Se l'installazione di Python non rinegozia correttamente per le versioni precedenti a TLS 1.2, si dovrebbe ricevere un errore 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)')))
```

Se si è in grado di stabilire una connessione, ricompilare OpenSSL e Python per disabilitare la negoziazione dei protocolli precedenti a TLS v1.2.

## Compilare OpenSSL e Python
<a name="enforcing-tls-compile"></a>

Per assicurarti che AWS ParallelCluster ciò non valga per nulla precedente a TLS 1.2, devi ricompilare OpenSSL e Python. A tale scopo, copiare il contenuto seguente per creare uno script ed eseguirlo.

```
#!/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
```

Questa operazione esegue la compilazione di una versione di Python che ha un OpenSSL collegato staticamente che non negozia automaticamente versioni precedenti a TLS 1.2. Questa operazione installa anche OpenSSL nella directory `/opt/openssl-with-min-tls1_2` e installa Python nella directory `/opt/python-with-min-tls1_2`. Dopo aver eseguito questo script, confermare l'installazione della nuova versione di Python.

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

Questa operazione dovrebbe stampare quanto segue.

```
Python 3.8.1
```

Per confermare che questa nuova versione di Python non negozi una versione precedente a TLS 1.2, eseguire nuovamente le fasi a partire da [Determinare i protocolli attualmente supportati](#enforcing-tls-supported) utilizzando la versione di Python appena installata (ovvero `/opt/python-with-min-tls1_2/bin/python3`).

# Configurazione di gruppi di sicurezza per ambienti con restrizioni
<a name="security-groups-configuration"></a>

Per impostazione predefinita, AWS ParallelCluster crea e configura gruppi di sicurezza che consentono tutto il traffico tra i nodi del cluster. In ambienti altamente limitati, potrebbe essere necessario limitare l'accesso alla rete solo alle porte necessarie per il funzionamento del cluster. Questa sezione descrive come configurare gruppi di sicurezza personalizzati con accesso limitato per la AWS ParallelCluster distribuzione.

## Panoramica dei gruppi di sicurezza
<a name="security-groups-configuration-overview"></a>

AWS ParallelCluster utilizza i gruppi di sicurezza per controllare il traffico di rete tra il nodo principale, i nodi di elaborazione e i nodi di accesso (se configurati). Per impostazione predefinita, quando AWS ParallelCluster crea un cluster, crea gruppi di sicurezza che consentono tutto il traffico tra i nodi all'interno del cluster. In ambienti con requisiti di sicurezza rigorosi, è possibile fornire gruppi di sicurezza personalizzati che limitano il traffico solo alle porte necessarie.

I gruppi di sicurezza possono essere configurati nelle seguenti sezioni della configurazione del cluster:
+ [`HeadNode`/`Networking`](HeadNode-v3.md#HeadNode-v3-Networking)- Controlla l'accesso da e verso il nodo principale
+ [`Scheduling`/`SlurmQueues`/`Networking`](Scheduling-v3.md#Scheduling-v3-SlurmQueues-Networking)- Controlla l'accesso da e verso i nodi di calcolo
+ [`LoginNodes`](LoginNodes-v3.md)- Controlla l'accesso da e verso i nodi di accesso (se configurato)

Per ognuna di queste sezioni, puoi specificare:
+ `SecurityGroups`- Sostituisce i gruppi di sicurezza predefiniti che AWS ParallelCluster verrebbero creati
+ `AdditionalSecurityGroups`- Aggiunge gruppi di sicurezza oltre a quelli predefiniti creati da AWS ParallelCluster

## Porte necessarie per il funzionamento del cluster
<a name="security-groups-configuration-required-ports"></a>

Quando si configurano gruppi di sicurezza personalizzati, è necessario assicurarsi che le seguenti porte siano aperte tra i nodi appropriati:


**Porte richieste per il nodo principale**  

| Porta | Protocollo | Direzione | Scopo | 
| --- | --- | --- | --- | 
| 22 | TCP | In entrata | Accesso SSH al nodo principale (dagli intervalli IP consentiti) | 
| 6817-6819 | TCP | In entrata | Porte del controller Slurm (dai nodi di calcolo e di accesso) | 
| 6817-6819 | TCP | In uscita | Porte del controller Slurm (per calcolare e accedere ai nodi) | 
| 8443 | TCP | In entrata | NICE DCV (se abilitato, dagli intervalli IP consentiti) | 
| 11, 2049 | TCP/UDP | In entrata | NFS (dai nodi di calcolo e di accesso, se si utilizza NFS per lo storage condiviso) | 
| 443 | TCP | In uscita | Accesso HTTPS ai AWS servizi (se non si utilizzano endpoint VPC) | 


**Porte richieste per i nodi di calcolo**  

| Porta | Protocollo | Direzione | Scopo | 
| --- | --- | --- | --- | 
| 22 | TCP | In entrata | Accesso SSH (dal nodo principale e dai nodi di accesso) | 
| 6818 | TCP | In entrata | porta daemon Slurm (dal nodo principale) | 
| 6817-6819 | TCP | In uscita | Porte del controller Slurm (verso il nodo principale) | 
| 111, 2049 | TCP/UDP | In uscita | NFS (al nodo principale, se si utilizza NFS per lo storage condiviso) | 
| 443 | TCP | In uscita | Accesso HTTPS ai AWS servizi (se non si utilizzano endpoint VPC) | 

Se utilizzi EFA (Elastic Fabric Adapter), devi inoltre consentire tutto il traffico tra i nodi di elaborazione che hanno EFA abilitato:
+ Tutto il traffico TCP e UDP tra i nodi di elaborazione con EFA
+ Tutto il traffico sul dispositivo EFA tra i nodi di elaborazione con EFA

**Nota**  
Se utilizzi sistemi di storage condivisi come FSx Lustre, Amazon EFS o altre soluzioni di storage, dovrai assicurarti che le porte appropriate siano aperte anche per questi servizi.

## Creazione di gruppi di sicurezza personalizzati
<a name="security-groups-configuration-custom"></a>

Per creare gruppi di sicurezza personalizzati per la tua AWS ParallelCluster distribuzione, segui questi passaggi:

1. Crea gruppi di sicurezza per il nodo principale, i nodi di calcolo e i nodi di accesso (se applicabile) utilizzando la console di AWS gestione, la AWS CLI o. AWS CloudFormation

1. Configura le regole del gruppo di sicurezza per consentire solo il traffico necessario, come indicato nella sezione precedente.

1. Fai riferimento a questi gruppi di sicurezza nel file di configurazione del cluster.

Ecco un esempio di come creare gruppi di sicurezza utilizzando la 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)
```

## Configurazione dei gruppi di sicurezza nella configurazione del cluster
<a name="security-groups-configuration-cluster-config"></a>

Dopo aver creato i gruppi di sicurezza personalizzati, puoi farvi riferimento nel file di configurazione del cluster:

```
# 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
      ...
```

Durante l'utilizzo`SecurityGroups`, AWS ParallelCluster utilizzerà solo i gruppi di sicurezza specificati, sostituendo quelli predefiniti. Durante l'utilizzo`AdditionalSecurityGroups`, AWS ParallelCluster utilizzerà sia i gruppi di sicurezza predefiniti che crea sia quelli aggiuntivi specificati dall'utente.

**avvertimento**  
Se abiliti [Elastic Fabric Adapter (EFA)](Scheduling-v3.md#yaml-Scheduling-SlurmQueues-ComputeResources-Efa) per le tue istanze di calcolo, assicurati che le istanze abilitate per EFA siano membri di un gruppo di sicurezza che consente tutto il traffico in entrata e in uscita verso se stesso. Ciò è necessario per il corretto funzionamento di EFA.

## Utilizzo degli endpoint VPC in ambienti con restrizioni
<a name="security-groups-configuration-vpc-endpoints"></a>

In ambienti altamente limitati, potresti voler eseguire l'implementazione AWS ParallelCluster in una sottorete senza accesso a Internet. In questo caso, dovrai configurare gli endpoint VPC per consentire al cluster di comunicare con i servizi. AWS Per istruzioni dettagliate, vedi [AWS ParallelCluster in un'unica sottorete senza accesso a Internet](aws-parallelcluster-in-a-single-public-subnet-no-internet-v3.md).

Quando utilizzi gli endpoint VPC, assicurati che i tuoi gruppi di sicurezza consentano il traffico da e verso gli endpoint VPC. Puoi farlo aggiungendo i gruppi di sicurezza associati agli endpoint VPC alla `AdditionalSecurityGroups` configurazione del nodo principale e dei nodi di calcolo.

```
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
```

## Le migliori pratiche per la configurazione dei gruppi di sicurezza
<a name="security-groups-configuration-best-practices"></a>

Quando configuri i gruppi di sicurezza per ambienti con restrizioni, prendi AWS ParallelCluster in considerazione le seguenti best practice:
+ **Principio del privilegio minimo**: aprire solo le porte necessarie per il funzionamento del cluster.
+ **Utilizza i riferimenti ai gruppi di sicurezza**: quando possibile, utilizza i riferimenti ai gruppi di sicurezza (che consentono il traffico proveniente da un altro gruppo di sicurezza) anziché i blocchi CIDR per limitare il traffico tra i componenti del cluster.
+ **Limita l'accesso SSH**: limita l'accesso SSH al nodo principale solo agli intervalli IP che lo richiedono utilizzando la configurazione [`HeadNode`//`Ssh`](HeadNode-v3.md#yaml-HeadNode-Ssh-AllowedIps). `AllowedIps`
+ **Limita l'accesso a DCV**: se usi NICE DCV, limita l'accesso solo agli intervalli IP che lo richiedono utilizzando [`HeadNode`la configurazione`Dcv`//`AllowedIps`](HeadNode-v3.md#yaml-HeadNode-Dcv-AllowedIps).
+ **Esegui test approfonditi**: dopo aver configurato i gruppi di sicurezza personalizzati, verifica accuratamente tutte le funzionalità del cluster per assicurarti che tutti i percorsi di comunicazione richiesti funzionino.
+ **Documenta la tua configurazione**: conserva la documentazione della configurazione del tuo gruppo di sicurezza, comprese le porte aperte e il motivo per cui sono necessarie.

## Risoluzione dei problemi relativi ai gruppi di sicurezza
<a name="security-groups-configuration-troubleshooting"></a>

Se riscontri problemi dopo la configurazione dei gruppi di sicurezza personalizzati, considera i seguenti passaggi per la risoluzione dei problemi:
+ **Controlla i log del cluster**: esamina i log del cluster in CloudWatch Logs per eventuali errori di connessione.
+ **Verifica le regole del gruppo di sicurezza**: assicurati che tutte le porte richieste siano aperte tra i nodi appropriati.
+ **Verifica la connettività**: utilizza strumenti come `telnet` o `nc` per testare la connettività tra nodi su porte specifiche.
+ **Espandi temporaneamente le regole**: se hai problemi a identificare le porte necessarie, consenti temporaneamente tutto il traffico tra i nodi del cluster e poi limitalo gradualmente man mano che identifichi le porte richieste.
+ **Verifica la configurazione degli endpoint VPC**: se utilizzi gli endpoint VPC, assicurati che siano configurati correttamente e che i gruppi di sicurezza consentano il traffico da e verso di essi.

Se continui a riscontrare problemi, puoi tornare a utilizzare i gruppi di sicurezza predefiniti creati rimuovendo la configurazione AWS ParallelCluster dal file di `SecurityGroups` configurazione del cluster.