

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Seguridad en AWS ParallelCluster
<a name="security"></a>

La seguridad en la nube AWS es la máxima prioridad. Como AWS cliente, usted se beneficia de una arquitectura de centro de datos y red diseñada para cumplir con los requisitos de las organizaciones más sensibles a la seguridad.

La seguridad es una responsabilidad compartida entre usted AWS y usted. El [modelo de responsabilidad compartida](https://aws.amazon.com/compliance/shared-responsibility-model/) describe esto como seguridad *de* la nube y seguridad *en* la nube:
+ **Seguridad de la nube**: AWS es responsable de proteger la infraestructura que ejecuta AWS los servicios en la AWS nube. AWS también le proporciona servicios que puede utilizar de forma segura. Los auditores externos prueban y verifican periódicamente la eficacia de nuestra seguridad como parte de los [AWS programas](https://aws.amazon.com/compliance/programs/) de de . Para obtener más información sobre los programas de cumplimiento aplicables AWS ParallelCluster, consulte [AWS Servicios incluidos en el ámbito de aplicación por programa de conformidad y AWS servicios incluidos](https://aws.amazon.com/compliance/services-in-scope/) .
+ **Seguridad en la nube**: su responsabilidad viene determinada por el AWS servicio o los servicios específicos que utilice. También es responsable de otros factores varios, incluida la confidencialidad de los datos, los requisitos de la empresa y la legislación y los reglamentos aplicables. 

En esta documentación se describe cómo debe aplicar el modelo de responsabilidad compartida cuando lo utilice AWS ParallelCluster. En los temas siguientes se muestra cómo configurarlo AWS ParallelCluster para cumplir sus objetivos de seguridad y conformidad. También aprenderá a utilizarlos de una AWS ParallelCluster manera que le ayude a supervisar y proteger sus AWS recursos.

**Topics**
+ [Información de seguridad de los servicios utilizados por AWS ParallelCluster](#security-seealso)
+ [Protección de datos en AWS ParallelCluster](data-protection.md)
+ [Identity and Access Management para AWS ParallelCluster](security-iam.md)
+ [Validación de conformidad para AWS ParallelCluster](security-compliance-validation.md)
+ [Aplicación de una versión mínima de TLS 1.2](security-enforcing-tls.md)
+ [Configuración de grupos de seguridad para entornos restringidos](security-groups-configuration.md)

## Información de seguridad de los servicios utilizados por AWS ParallelCluster
<a name="security-seealso"></a>
+ [Seguridad en Amazon EC2 ](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-security.html)
+ [Seguridad en Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/security.html)
+ [Seguridad en AWS Batch](https://docs.aws.amazon.com/batch/latest/userguide/security.html)
+ [Seguridad en CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/security.html)
+ [Seguridad en Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/security.html)
+ [Seguridad en AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/security.html)
+ [Seguridad en Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/security.html)
+ [Seguridad en Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/security.html)
+ [Seguridad en Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/security.html)
+ [Seguridad en Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/security-considerations.html)
+ [La seguridad es FSx para Lustre](https://docs.aws.amazon.com/fsx/latest/LustreGuide/security.html)
+ [Seguridad en AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/security.html)
+ [Seguridad en Generador de imágenes de EC2](https://docs.aws.amazon.com/imagebuilder/latest/userguide/image-builder-security.html)
+ [Seguridad en AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-security.html)
+ [Seguridad en Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/security.html)
+ [Seguridad en Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-security.html)
+ [Seguridad en Amazon SQS (para la AWS ParallelCluster versión 2.x.)](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-security.html)
+ [Seguridad en Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/dev/security.html)
+ [Seguridad en Amazon VPC](https://docs.aws.amazon.com/vpc/latest/userguide/security.html)

# Protección de datos en AWS ParallelCluster
<a name="data-protection"></a>

El modelo de [responsabilidad AWS compartida modelo](https://aws.amazon.com/compliance/shared-responsibility-model/) se aplica a la protección de datos en. Como se describe en este modelo, AWS es responsable de proteger la infraestructura global que ejecuta todos los Nube de AWS. Eres responsable de mantener el control sobre el contenido alojado en esta infraestructura. También eres responsable de las tareas de administración y configuración de seguridad para los Servicios de AWS que utiliza. Para obtener más información sobre la privacidad de los datos, consulte las [Preguntas frecuentes sobre la privacidad de datos](https://aws.amazon.com/compliance/data-privacy-faq/). Para obtener información sobre la protección de datos en Europa, consulte la publicación de blog sobre el [Modelo de responsabilidad compartida de AWS y GDPR](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-gdpr/) en el * Blog de seguridad de AWS *.

Con fines de protección de datos, le recomendamos que proteja Cuenta de AWS las credenciales y configure los usuarios individuales con AWS IAM Identity Center o AWS Identity and Access Management (IAM). De esta manera, solo se otorgan a cada usuario los permisos necesarios para cumplir sus obligaciones laborales. También recomendamos proteger sus datos de la siguiente manera:
+ Utiliza la autenticación multifactor (MFA) en cada cuenta.
+ Se utiliza SSL/TLS para comunicarse con AWS los recursos. Exigimos TLS 1.2 y recomendamos TLS 1.3.
+ Configure la API y el registro de actividad de los usuarios con AWS CloudTrail. Para obtener información sobre el uso de CloudTrail senderos para capturar AWS actividades, consulte [Cómo trabajar con CloudTrail senderos](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-trails.html) en la *Guía del AWS CloudTrail usuario*.
+ Utilice soluciones de AWS cifrado, junto con todos los controles de seguridad predeterminados que contienen Servicios de AWS.
+ Utiliza servicios de seguridad administrados avanzados, como Amazon Macie, que lo ayuden a detectar y proteger la información confidencial almacenada en Amazon S3.
+ Si necesita módulos criptográficos validados por FIPS 140-3 para acceder a AWS través de una interfaz de línea de comandos o una API, utilice un punto final FIPS. Para obtener más información sobre los puntos de conexión de FIPS disponibles, consulte [Estándar de procesamiento de la información federal (FIPS) 140-3](https://aws.amazon.com/compliance/fips/).

Se recomienda encarecidamente no introducir nunca información confidencial o sensible, como por ejemplo, direcciones de correo electrónico de clientes, en etiquetas o campos de formato libre, tales como el campo **Nombre**. Esto incluye cuando trabaja con o Servicios de AWS utiliza la consola, la API o AWS CLI AWS SDKs Cualquier dato que introduzca en etiquetas o campos de formato libre utilizados para los nombres se pueden emplear para los registros de facturación o diagnóstico. Si proporciona una URL a un servidor externo, recomendamos encarecidamente que no incluya información de credenciales en la URL a fin de validar la solicitud para ese servidor.

## Cifrado de datos
<a name="data-encryption"></a>

Una característica clave de cualquier servicio seguro es que la información se cifre cuando no se está utilizando activamente.

### Cifrado en reposo
<a name="encryption-rest"></a>

AWS ParallelCluster no almacena en sí mismo ningún dato del cliente aparte de las credenciales que necesita para interactuar con los AWS servicios en nombre del usuario.

En el caso de los datos de los nodos del clúster, los datos se pueden cifrar en reposo.

Para los volúmenes de Amazon EBS, el cifrado se configura mediante los ajustes [`EbsSettings`](SharedStorage-v3.md#SharedStorage-v3-EbsSettings)/`Encrypted` y [`EbsSettings`](SharedStorage-v3.md#SharedStorage-v3-EbsSettings)/`KmsKeyId` de la sección [`EbsSettings`](SharedStorage-v3.md#SharedStorage-v3-EbsSettings). Para más información, consulte [Cifrado de Amazon EBS](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html) en la Guía del usuario de Amazon EC2.

Para los volúmenes de Amazon EFS, el cifrado se configura mediante los ajustes [`EfsSettings`](SharedStorage-v3.md#SharedStorage-v3-EfsSettings)/`Encrypted` y [`EfsSettings`](SharedStorage-v3.md#SharedStorage-v3-EfsSettings)/`KmsKeyId` de la sección de [`EfsSettings`](SharedStorage-v3.md#SharedStorage-v3-EfsSettings). Para obtener más información, consulte [Cómo funciona el cifrado en reposo](https://docs.aws.amazon.com/efs/latest/ug/encryption-at-rest.html#howencrypt) en la *Guía del usuario de Amazon Elastic File System*.

En el FSx caso de los sistemas de archivos Lustre, el cifrado de los datos en reposo se habilita automáticamente al crear un sistema de FSx archivos de Amazon. Para obtener más información, consulta Cómo [cifrar datos en reposo en](https://docs.aws.amazon.com/fsx/latest/LustreGuide/encryption-at-rest.html) la Guía del *usuario de Amazon FSx for Lustre*.

En el caso de los tipos con NVMe volúmenes, los datos de los volúmenes del almacén de NVMe instancias se cifran mediante un sistema de cifrado XTS-AES-256 implementado en un módulo de hardware de la instancia. Las claves de cifrado se generan mediante el módulo de hardware y son únicas para cada dispositivo de almacenamiento de la instancia. NVMe Todas las claves de cifrado se destruyen cuando se detiene o termina la instancia y no se pueden recuperar. No puede deshabilitar este cifrado ni tampoco proporcionar su propia clave de cifrado. Para obtener más información, consulte [Cifrado en reposo](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/data-protection.html#encryption-rest) en la *Guía del usuario de Amazon EC2*.

Si utiliza AWS ParallelCluster un AWS servicio que transmite los datos de los clientes a su ordenador local para su almacenamiento, consulte el capítulo sobre seguridad y conformidad de la Guía del usuario de ese servicio para obtener información sobre cómo se almacenan, protegen y cifran esos datos.

### Cifrado en tránsito
<a name="encryption-transit"></a>

De forma predeterminada, todos los datos que se transmiten desde el ordenador cliente en ejecución AWS ParallelCluster y desde los puntos de conexión del AWS servicio se cifran enviándolos a través de una HTTPS/TLS conexión. El tráfico entre los nodos del clúster se puede cifrar automáticamente, según los tipos de instancias seleccionados. Para obtener más información, consulte [Cifrado en tránsito](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/data-protection.html#encryption-transit) en la *Guía del usuario de Amazon EC2*.

## Véase también
<a name="security-data-protection-seealso"></a>
+ [Protección de los datos en Amazon EC2 ](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/data-protection.html)
+ [Protección de datos en Generador de imágenes de EC2](https://docs.aws.amazon.com/imagebuilder/latest/userguide/data-protection.html)
+ [Protección de datos en CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/security-data-protection.html)
+ [Protección de datos en Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/efs-backup-solutions.html)
+ [Protección de los datos en Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/dev/DataDurability.html)
+ [La protección de datos es FSx para Lustre](https://docs.aws.amazon.com/fsx/latest/LustreGuide/data-protection.html)

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

AWS ParallelCluster utiliza roles para acceder a sus AWS recursos y sus servicios. Las políticas de instancia y usuario que se AWS ParallelCluster utilizan para conceder permisos están documentadas en[AWS Identity and Access Management permisos en AWS ParallelCluster](iam-roles-in-parallelcluster-v3.md).

La única diferencia importante es cómo se realiza la autenticación cuando se utiliza un usuario de estándar y credenciales a largo plazo. Si bien un usuario necesita una contraseña para acceder a la consola de un AWS servicio, ese mismo usuario necesita un par de claves de acceso para realizar las mismas operaciones mediante AWS ParallelCluster. Todas las demás credenciales a corto plazo se utilizan de la misma manera que con la consola.

Las credenciales utilizadas por se AWS ParallelCluster almacenan en archivos de texto sin formato y ***no*** están cifradas.
+ El `$HOME/.aws/credentials` archivo almacena las credenciales de larga duración necesarias para acceder a sus AWS recursos. Cómo recuperar el ID de clave de acceso y la clave de acceso secreta
+ Las credenciales a corto plazo, como las de los roles que se adoptan o que se utilizan para servicios de AWS IAM Identity Center , también se almacenan en las carpetas `$HOME/.aws/cli/cache` y `$HOME/.aws/sso/cache`, respectivamente.

**Mitigación de riesgos**
+ Le recomendamos encarecidamente que configure los permisos del sistema de archivos en la carpeta `$HOME/.aws`, sus subcarpetas y archivos para restringir el acceso exclusivamente a los usuarios autorizados.
+ Utilice roles con credenciales temporales siempre que sea posible para reducir la posibilidad de que se produzcan daños si las credenciales se ven comprometidas. Utilice credenciales a largo plazo solo para solicitar y actualizar las credenciales a corto plazo de los roles.

# Validación de conformidad para AWS ParallelCluster
<a name="security-compliance-validation"></a>

Los auditores externos evalúan la seguridad y el cumplimiento de AWS los servicios como parte de varios programas de AWS cumplimiento. Su uso AWS ParallelCluster para acceder a un servicio no altera el cumplimiento de ese servicio. 

Para obtener una lista de AWS los servicios incluidos en el ámbito de los programas de conformidad específicos, consulte los [AWS servicios incluidos en el ámbito de aplicación por programa de conformidad](https://aws.amazon.com/compliance/services-in-scope/) y . Para obtener información general, consulte los programas de [AWS cumplimiento, los programas AWS](https://aws.amazon.com/compliance/programs/) .

Puede descargar informes de auditoría de terceros utilizando el AWS Artifact. Para obtener más información, consulte [Descarga de informes en AWS Artifact](https://docs.aws.amazon.com/artifact/latest/ug/downloading-documents.html).

Su responsabilidad de cumplimiento al AWS ParallelCluster utilizarlos viene determinada por la confidencialidad de sus datos, los objetivos de cumplimiento de su empresa y las leyes y reglamentos aplicables. AWS proporciona los siguientes recursos para ayudar con el cumplimiento:
+ [Guías de inicio rápido](https://aws.amazon.com/quickstart/?awsf.quickstart-homepage-filter=categories%23security-identity-compliance) sobre sobre seguridad y cumplimiento: estas guías de implementación analizan las consideraciones arquitectónicas y proporcionan los pasos para implementar entornos básicos centrados en la seguridad y el cumplimiento. AWS
+ Documento técnico [sobre cómo diseñar la arquitectura para la seguridad y el cumplimiento de la HIPAA en Amazon Web Services: este AWS documento técnico](https://docs.aws.amazon.com/pdfs/whitepapers/latest/architecting-hipaa-security-and-compliance-on-aws/architecting-hipaa-security-and-compliance-on-aws.pdf) describe cómo pueden utilizar las empresas para crear aplicaciones compatibles con la HIPAA. AWS 
+ [AWS recursos de cumplimiento](https://aws.amazon.com/compliance/resources/): esta colección de trabajo y guías puede aplicarse a su sector y ubicación.
+ [Evaluación de los recursos con las reglas](https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config.html) de la *Guía para AWS Config desarrolladores*: el AWS Config servicio evalúa en qué medida las configuraciones de los recursos cumplen con las prácticas internas, las directrices del sector y las normas.
+ [AWS Security Hub CSPM](https://docs.aws.amazon.com/securityhub/latest/userguide/what-is-securityhub.html)— Este AWS servicio proporciona una visión integral del estado de su seguridad AWS que le ayuda a comprobar su conformidad con los estándares y las mejores prácticas del sector de la seguridad.

# Aplicación de una versión mínima de TLS 1.2
<a name="security-enforcing-tls"></a>

Para aumentar la seguridad a la hora de comunicarse con AWS los servicios, debe configurarlos AWS ParallelCluster para usar TLS 1.2 o una versión posterior. Cuando se usa AWS ParallelCluster, se usa Python para configurar la versión de TLS.

Para garantizar que no AWS ParallelCluster utilice ninguna versión de TLS anterior a la 1.2, es posible que tenga que volver a compilar OpenSSL para aplicar este mínimo y, a continuación, volver a compilar Python para usar el OpenSSL recién creado. 

## Determinar los protocolos admitidos actualmente
<a name="enforcing-tls-supported"></a>

Primero, cree un certificado autofirmado con el fin de usarlo para el servidor de prueba y Python SDK mediante OpenSSL.

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

A continuación, cree un servidor de prueba mediante OpenSSL.

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

En una nueva ventana de terminal, cree un entorno virtual e instale Python SDK.

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

Cree un script de Python denominado `check.py` que use la biblioteca HTTP subyacente del 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'))
```

Ejecute el nuevo script.

```
$ python check.py
```

Muestra detalles sobre la conexión realizada. Busque «Protocol:» en la salida. Si el resultado es "TLSv1.2" o posterior, el SDK usa TLS 1.2 o posterior de forma predeterminada. Si se trata de una versión anterior, debe volver a compilar OpenSSL y Python.

Sin embargo, aunque la instalación de Python se establezca de forma predeterminada en TLS v1.2 o posterior, es posible que Python renegocie a una versión anterior a TLS v1.2 si el servidor no admite TLS v1.2 o posterior. Para comprobar que Python no renegocia automáticamente a versiones anteriores, reinicie el servidor de prueba con lo siguiente.

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

Si está utilizando una versión anterior de OpenSSL, es posible que la opción `-no_tls_3` no esté disponible. Si este es el caso, elimine la opción, porque la versión de OpenSSL que está utilizando no admite TLS v1.3. A continuación, vuelva a ejecutar el script de Python.

```
$ python check.py
```

Si su instalación de Python no renegocia correctamente las versiones anteriores a TLS 1.2, debería recibir un error de 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)')))
```

Si puede establecer una conexión, debe volver a compilar OpenSSL y Python para deshabilitar la negociación de protocolos anteriores a TLS v1.2.

## Compilar OpenSSL y Python
<a name="enforcing-tls-compile"></a>

Para asegurarte de que AWS ParallelCluster no se negocia nada anterior a TLS 1.2, debes volver a compilar OpenSSL y Python. Para ello, copie el siguiente contenido con el fin de crear un script y ejecútelo.

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

Se compila una versión de Python que tiene un OpenSSL enlazado estáticamente que no negocia automáticamente a nada anterior a TLS 1.2. Esto también instala OpenSSL en el directorio `/opt/openssl-with-min-tls1_2` directorio e instala Python en el directorio `/opt/python-with-min-tls1_2`. Después de ejecutar este script, confirme la instalación de la nueva versión de Python.

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

Se debería imprimir lo siguiente.

```
Python 3.8.1
```

Para confirmar que esta nueva versión de Python no negocia a una versión anterior de TLS 1.2, vuelva a ejecutar los pasos de [Determinar los protocolos admitidos actualmente](#enforcing-tls-supported) usando la versión de Python recién instalada (es decir, `/opt/python-with-min-tls1_2/bin/python3`).

# Configuración de grupos de seguridad para entornos restringidos
<a name="security-groups-configuration"></a>

De forma predeterminada, AWS ParallelCluster crea y configura grupos de seguridad que permiten todo el tráfico entre los nodos del clúster. En entornos muy restringidos, es posible que deba limitar el acceso a la red únicamente a los puertos necesarios para el funcionamiento del clúster. En esta sección se describe cómo configurar grupos de seguridad personalizados con acceso restringido para su AWS ParallelCluster implementación.

## Descripción general de los grupos de seguridad
<a name="security-groups-configuration-overview"></a>

AWS ParallelCluster usa grupos de seguridad para controlar el tráfico de red entre el nodo principal, los nodos de cómputo y los nodos de inicio de sesión (si están configurados). De forma predeterminada, cuando AWS ParallelCluster crea un clúster, crea grupos de seguridad que permiten todo el tráfico entre los nodos del clúster. En entornos con requisitos de seguridad estrictos, puede proporcionar grupos de seguridad personalizados que limiten el tráfico únicamente a los puertos necesarios.

Los grupos de seguridad se pueden configurar en las siguientes secciones de la configuración del clúster:
+ [`HeadNode`/`Networking`](HeadNode-v3.md#HeadNode-v3-Networking)- Controla el acceso hacia y desde el nodo principal
+ [`Scheduling`/`SlurmQueues`/`Networking`](Scheduling-v3.md#Scheduling-v3-SlurmQueues-Networking)- Controla el acceso hacia y desde los nodos de cómputo
+ [`LoginNodes`](LoginNodes-v3.md)- Controla el acceso desde y hacia los nodos de inicio de sesión (si están configurados)

Para cada una de estas secciones, puede especificar:
+ `SecurityGroups`- Sustituye los grupos de seguridad predeterminados que se AWS ParallelCluster crearían
+ `AdditionalSecurityGroups`- Añade grupos de seguridad además de los predeterminados creados por AWS ParallelCluster

## Puertos necesarios para el funcionamiento del clúster
<a name="security-groups-configuration-required-ports"></a>

Al configurar grupos de seguridad personalizados, debe asegurarse de que los siguientes puertos estén abiertos entre los nodos correspondientes:


**Puertos necesarios para el nodo principal**  

| Puerto | Protocolo | Dirección | Finalidad | 
| --- | --- | --- | --- | 
| 22 | TCP | Entrada | Acceso SSH al nodo principal (desde los rangos de IP permitidos) | 
| 6817-6819 | TCP | Entrada | Puertos del controlador Slurm (desde los nodos de procesamiento e inicio de sesión) | 
| 6817-6819 | TCP | Salida | Puertos de controlador Slurm (para calcular e iniciar sesión en los nodos) | 
| 8443 | TCP | Entrada | NICE DCV (si está activado, desde los rangos de IP permitidos) | 
| 111, 2049 | TCP/UDP | Entrada | NFS (desde los nodos de procesamiento e inicio de sesión, si se utiliza NFS para el almacenamiento compartido) | 
| 443 | TCP | Salida | Acceso HTTPS a los AWS servicios (si no se utilizan puntos de enlace de VPC) | 


**Puertos necesarios para los nodos de cómputo**  

| Puerto | Protocolo | Dirección | Finalidad | 
| --- | --- | --- | --- | 
| 22 | TCP | Entrada | Acceso SSH (desde el nodo principal y los nodos de inicio de sesión) | 
| 6818 | TCP | Entrada | Puerto Slurm daemon (desde el nodo principal) | 
| 6817-6819 | TCP | Salida | Puertos del controlador Slurm (al nodo principal) | 
| 111, 2049 | TCP/UDP | Salida | NFS (al nodo principal, si se utiliza NFS para almacenamiento compartido) | 
| 443 | TCP | Salida | Acceso HTTPS a los AWS servicios (si no se utilizan puntos de enlace de VPC) | 

Si utilizas EFA (Elastic Fabric Adapter), también debes permitir todo el tráfico entre los nodos de cómputo que tengan habilitada la EFA:
+ Todo el tráfico TCP y UDP entre los nodos de cómputo con EFA
+ Todo el tráfico del dispositivo EFA entre los nodos de cómputo con EFA

**nota**  
Si utiliza sistemas de almacenamiento compartido, como FSx Lustre, Amazon EFS u otras soluciones de almacenamiento, tendrá que asegurarse de que los puertos adecuados también estén abiertos para esos servicios.

## Crear grupos de seguridad personalizados
<a name="security-groups-configuration-custom"></a>

Para crear grupos de seguridad personalizados para su AWS ParallelCluster implementación, siga estos pasos:

1. Cree grupos de seguridad para el nodo principal, los nodos de procesamiento y los nodos de inicio de sesión (si corresponde) mediante la consola AWS de administración, la AWS CLI o AWS CloudFormation.

1. Configure las reglas del grupo de seguridad para permitir solo el tráfico necesario, tal como se describe en la sección anterior.

1. Haga referencia a estos grupos de seguridad en el archivo de configuración del clúster.

A continuación, se muestra un ejemplo de cómo crear grupos de seguridad mediante 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)
```

## Configuración de grupos de seguridad en la configuración del clúster
<a name="security-groups-configuration-cluster-config"></a>

Una vez que haya creado los grupos de seguridad personalizados, puede hacer referencia a ellos en el archivo de configuración del clúster:

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

Cuando los utilice`SecurityGroups`, AWS ParallelCluster utilizará solo los grupos de seguridad que especifique y sustituirá a los predeterminados. Cuando lo utilice`AdditionalSecurityGroups`, AWS ParallelCluster utilizará tanto los grupos de seguridad predeterminados que cree como los adicionales que especifique.

**aviso**  
Si habilita [Elastic Fabric Adapter (EFA)](Scheduling-v3.md#yaml-Scheduling-SlurmQueues-ComputeResources-Efa) para sus instancias informáticas, asegúrese de que las instancias habilitadas para EFA sean miembros de un grupo de seguridad que permita que todo el tráfico entrante y saliente entre sí. Esto es necesario para que la EFA funcione correctamente.

## Uso de puntos finales de VPC en entornos restringidos
<a name="security-groups-configuration-vpc-endpoints"></a>

En entornos muy restringidos, es posible que desee realizar la implementación AWS ParallelCluster en una subred sin acceso a Internet. En este caso, tendrás que configurar los puntos de conexión de la VPC para permitir que el clúster se comunique con los servicios. AWS Para obtener instrucciones detalladas, consulta [AWS ParallelCluster en una sola subred sin acceso a Internet](aws-parallelcluster-in-a-single-public-subnet-no-internet-v3.md).

Cuando utilice puntos de enlace de VPC, asegúrese de que sus grupos de seguridad permitan el tráfico hacia y desde los puntos de enlace de VPC. Para ello, agregue los grupos de seguridad asociados a los puntos finales de la VPC a la `AdditionalSecurityGroups` configuración del nodo principal y de los nodos de procesamiento.

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

## Prácticas recomendadas para la configuración de grupos de seguridad
<a name="security-groups-configuration-best-practices"></a>

Al configurar grupos de seguridad para entornos restringidos, tenga AWS ParallelCluster en cuenta las siguientes prácticas recomendadas:
+ **Principio de privilegios mínimos**: abra únicamente los puertos que sean necesarios para el funcionamiento del clúster.
+ **Utilice referencias a grupos de seguridad**: siempre que sea posible, utilice referencias a grupos de seguridad (lo que permite el tráfico desde otro grupo de seguridad) en lugar de bloques CIDR para limitar el tráfico entre los componentes del clúster.
+ **Restrinja el acceso SSH**: limite el acceso SSH al nodo principal solo a los rangos de IP que lo necesiten mediante la configuración [`HeadNode`//`Ssh`](HeadNode-v3.md#yaml-HeadNode-Ssh-AllowedIps). `AllowedIps`
+ **Restrinja el acceso al DCV**: si utiliza NICE DCV, limite el acceso solo a los rangos de IP que lo necesiten mediante [`HeadNode`la configuración`Dcv`//`AllowedIps`](HeadNode-v3.md#yaml-HeadNode-Dcv-AllowedIps).
+ **Realice pruebas exhaustivas**: después de configurar los grupos de seguridad personalizados, pruebe minuciosamente todas las funciones del clúster para asegurarse de que todas las rutas de comunicación necesarias funcionan.
+ **Documente la configuración**: guarde la documentación de la configuración del grupo de seguridad, incluidos los puertos que están abiertos y por qué son necesarios.

## Solución de problemas con los grupos de seguridad
<a name="security-groups-configuration-troubleshooting"></a>

Si tiene problemas después de configurar los grupos de seguridad personalizados, tenga en cuenta los siguientes pasos de solución de problemas:
+ **Compruebe los registros del clúster**: revise los registros del clúster en los CloudWatch registros para ver si hay errores de conexión.
+ **Compruebe las reglas del grupo de seguridad**: asegúrese de que todos los puertos necesarios estén abiertos entre los nodos correspondientes.
+ **Pruebe la conectividad**: utilice herramientas como `telnet` o `nc` para probar la conectividad entre los nodos de puertos específicos.
+ **Amplíe temporalmente las reglas**: si tiene problemas para identificar qué puertos son necesarios, permita temporalmente todo el tráfico entre los nodos del clúster y, después, restríngalo gradualmente a medida que identifique los puertos necesarios.
+ **Compruebe la configuración de los puntos de enlace de la VPC**: si utiliza puntos de enlace de la VPC, asegúrese de que estén configurados correctamente y de que los grupos de seguridad permitan el tráfico hacia y desde ellos.

Si sigue teniendo problemas, puede volver a utilizar los grupos de seguridad predeterminados creados AWS ParallelCluster eliminando la configuración del archivo de `SecurityGroups` configuración del clúster.