

# Políticas de seguridad de las API de REST en API Gateway
<a name="apigateway-security-policies"></a>

Una *política de seguridad* es una combinación predefinida de versión mínima de TLS y conjuntos de cifrado que ofrece API Gateway. Cuando los clientes realizan un establecimiento de comunicación de TLS en la API o el nombre de dominio personalizado, la política de seguridad aplica la versión de TLS y el conjunto de cifrado aceptado por API Gateway. Las políticas de seguridad protegen las API y los nombres de dominio personalizados de los problemas de seguridad de red como, por ejemplo, la manipulación y el espionaje entre un cliente y el servidor.

API Gateway admite políticas de seguridad heredadas y políticas de seguridad mejoradas. `TLS_1_0` y `TLS_1_2` son políticas de seguridad heredadas. Utilice estas políticas de seguridad para compatibilidad con versiones anteriores. Cualquier política que comience con `SecurityPolicy_` es una política de seguridad mejorada. Utilice estas políticas para cargas de trabajo reguladas, una gobernanza avanzada o para utilizar la criptografía poscuántica. Al utilizar una política de seguridad mejorada, también debe configurar el modo de acceso de punto de conexión para una mayor gobernanza. Para obtener más información, consulte [Modo de acceso de punto de conexión](#apigateway-security-policies-endpoint-access-mode).

## Cómo aplica API Gateway las políticas de seguridad
<a name="apigateway-security-policies-understanding"></a>

El siguiente ejemplo muestra cómo API Gateway aplica las políticas de seguridad mediante la política de seguridad `SecurityPolicy_TLS13_1_3_2025_09` como ejemplo.

La política de seguridad `SecurityPolicy_TLS13_1_3_2025_09` acepta el tráfico de TLS 1.3 y rechaza el tráfico de TLS 1.2 y TLS 1.0. Para el tráfico de TLS 1.3, la política de seguridad acepta los siguientes conjuntos de cifrado:
+ `TLS_AES_128_GCM_SHA256`
+ `TLS_AES_256_GCM_SHA384`
+ `TLS_CHACHA20_POLY1305_SHA256`

API Gateway no acepta ningún otro conjunto de sistemas de cifrado. Por ejemplo, la política de seguridad rechazaría cualquier tráfico de TLS 1.3 que utilice el conjunto de cifrado de `AES128-SHA`. Para obtener más información acerca de los cifrados y versiones de TLS, consulte [Políticas de seguridad admitidas](apigateway-security-policies-list.md).

Para supervisar qué protocolo TLS y qué cifrado utilizan los clientes para acceder a la API Gateway, puede utilizar las variables de contexto `$context.tlsVersion` y `$context.cipherSuite` en los registros de acceso. Para obtener más información, consulte [Supervisión de las API de REST en API Gateway](rest-api-monitor.md).

## Modo de acceso de punto de conexión
<a name="apigateway-security-policies-endpoint-access-mode"></a>

El modo de acceso de punto de conexión es un parámetro adicional que debe especificar para cualquier API de REST o nombre de dominio personalizado que utilice una política de seguridad mejorada que comience por `SecurityPolicy_`. Esto se hace al crear el recurso o al cambiar la política de seguridad de una política heredada a una política mejorada.

Cuando el modo de acceso de punto de conexión está configurado como `STRICT`, cualquier solicitud a la API de REST o al nombre de dominio personalizado debe superar las siguientes comprobaciones:
+ La solicitud debe provenir del mismo tipo de punto de conexión de API Gateway que el recurso. Puede provenir de un punto de conexión regional, optimizado para bordes o privado.
+ Si utiliza un punto de conexión regional o privado, API Gateway usa la coincidencia de host de SNI. Si utiliza un punto de conexión optimizado para bordes, API Gateway cumple con la protección de domain fronting de CloudFront. Para obtener más información, consulte [Domain fronting](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/CNAMEs.html#alternate-domain-names-restrictions).

Si no se cumple alguna de estas condiciones, API Gateway rechaza la solicitud. Le recomendamos que utilice el modo de acceso de punto de conexión `STRICT` siempre que sea posible.

Para migrar una API o un nombre de dominio existentes para utilizar un modo de acceso estricto de punto de conexión, primero actualice la política de seguridad a una política de seguridad mejorada y mantenga el modo de acceso de punto de conexión configurado en `BASIC`. Tras validar los registros de tráfico y acceso, configure el modo de acceso de punto de conexión en `STRICT`. Al migrar el modo de acceso de punto de conexión de `STRICT` a `BASIC`, el punto de conexión no estará disponible durante unos 15 minutos a medida que se propaguen los cambios.

No debe configurar el modo de acceso de punto de conexión como `STRICT` para determinadas arquitecturas de aplicaciones, sino configurar el modo de acceso de punto de conexión como `BASIC`. En la siguiente tabla se muestran algunas arquitecturas de aplicaciones y una recomendación para que la API de REST o el nombre de dominio personalizado puedan utilizar el modo de acceso de punto de conexión `STRICT`.


| Arquitectura | Migración sugerida | 
| --- | --- | 
| Uso de un punto de conexión de VPC para acceder a un nombre de dominio personalizado público. | Esta arquitectura utiliza tráfico de tipo cruzado entre puntos de conexión. Se recomienda que migre a [Nombres de dominio personalizados para API privadas en API Gateway](apigateway-private-custom-domains.md). | 
|  Uso de cualquier método para invocar una API privada que no utilice un nombre de dominio personalizado o nombres de DNS privados. | Esta arquitectura crea una discordancia entre el encabezado del host y el SNI utilizado en el establecimiento de comunicación de TLS y no supera las restricciones de domain fronting de CloudFront. Le recomendamos que migre la VPC para usar un DNS privado. | 
| Uso de la partición de dominios para distribuir contenido en varios dominios o subdominios. | Esta arquitectura crea una discordancia entre el encabezado del host y el SNI utilizado en el establecimiento de comunicación de TLS y no supera las restricciones de domain fronting de CloudFront. Le recomendamos utilizar `HTTP/2` y dejar de utilizar este antipatrón. | 

A continuación, se incluyen consideraciones que se deben tener a la hora de utilizar el modo de acceso de punto de conexión:
+ Si el modo de acceso de punto de conexión de una API o un nombre de dominio es `STRICT`, no puede cambiar el tipo de punto de conexión. Para cambiar el tipo de punto de conexión, primero cambie el modo de acceso del punto de conexión a `BASIC`.
+ Tras cambiar el modo de acceso del punto de conexión de `BASIC` a `STRICT`, API Gateway tarda 15 minutos en aplicar el modo de acceso estricto del punto de conexión.
+ Al cambiar una política de seguridad de una política que comienza con `SecurityPolicy_` a una política heredada, debe desactivar el modo de acceso del punto de conexión a `""`.

## Consideraciones
<a name="apigateway-security-policies-considerations"></a>

A continuación, se muestran consideraciones sobre las políticas de seguridad para las API de REST en API Gateway:
+ Puede importar la política de seguridad en un archivo de definición de OpenAPI. Para obtener más información, consulte [x-amazon-apigateway-endpoint-access-modex-amazon-apigateway-security-policy](openapi-extensions-security-policy.md).
+ La API se puede asignar a un nombre de dominio personalizado con una política de seguridad diferente a la de la API. Al invocar ese nombre de dominio personalizado, API Gateway utiliza la política de seguridad de la API para negociar el establecimiento de comunicación TLS. Si desactiva el punto de conexión de la API predeterminado, esto podría afectar a la forma en que los intermediarios pueden invocar a la API.
+ Si cambia la política de seguridad, esta tardará unos 15 minutos en completarse. Puede supervisar el `apiStatus` de la API. A medida que la API se actualice, el `apiStatus` será `UPDATING` y cuando se complete será `AVAILABLE`. Si el estado de la API es `UPDATING`, puede seguir invocándola.
+ API Gateway admite políticas de seguridad en todas las API. Sin embargo, solo puede elegir una política de seguridad para las API de REST. API Gateway solo admite la política de seguridad `TLS_1_2` para las API HTTP o de WebSocket.
+ No puede actualizar la política de seguridad de una API de `TLS_1_0` a `TLS_1_2`.
+ Algunas políticas de seguridad admiten los conjuntos de cifrado ECDSA y RSA. Si utiliza este tipo de política con un nombre de dominio personalizado, los conjuntos de cifrado coinciden con el tipo de clave de certificado proporcionada por el cliente, ya sea RSA o ECDSA. Si utiliza este tipo de política con una API de REST, los conjuntos de cifrado coinciden con los conjuntos de cifrado compatibles con los tipos de certificados RSA.

# Políticas de seguridad admitidas
<a name="apigateway-security-policies-list"></a>

En las siguientes tablas se describen las [políticas de seguridad](apigateway-security-policies.md) que se pueden especificar para cada tipo de punto de conexión de API de REST y tipo de nombre de dominio personalizado. Estas políticas le permiten controlar las conexiones entrantes. API Gateway solo admite TLS 1.2 en salida. Puede actualizar la política de seguridad de la API o nombre de dominio personalizado en cualquier momento.

Las políticas que contienen `FIPS` en el título son compatibles con el Estándar de procesamiento de la información federal (FIPS), que es un estándar de los gobiernos de EE. UU. y Canadá que especifica los requisitos de seguridad de los módulos criptográficos que protegen información confidencial. Para obtener más información, consulte [Estándar de procesamiento de la información federal (FIPS) 140-3](https://aws.amazon.com/compliance/fips/) en la página Conformidad de *Seguridad en la nube de AWS*.

Todas las políticas FIPS utilizan el módulo criptográfico AWS-LC validado para FIPS. Para obtener más información, consulte la página del [módulo criptográfico AWS-LC](https://csrc.nist.gov/projects/cryptographic-module-validation-program/certificate/4631) en el sitio *NIST Cryptographic Module Validation Program*.

Las políticas que contienen `PQ` en el título utilizan la [criptografía poscuántica (PQC)](https://aws.amazon.com/security/post-quantum-cryptography/) para implementar algoritmos híbridos de intercambio de claves para TLS a fin de garantizar la confidencialidad del tráfico contra las futuras amenazas de la computación cuántica.

Las políticas que contienen `PFS` en el título utilizan [Perfect Forward Secrecy (PFS)](https://en.wikipedia.org/wiki/Forward_secrecy) para garantizar que las claves de sesión no se vean comprometidas.

Las políticas que contienen `FIPS` y `PQ` en su título admiten estas características.

## Políticas de seguridad predeterminadas
<a name="apigateway-security-policies-default"></a>

Al crear una nueva API de REST o un dominio personalizado, se asigna al recurso una política de seguridad predeterminada. En la tabla siguiente se muestra la política de seguridad predeterminada para estos recursos.


| **Recurso** | **Nombre de la política de seguridad predeterminada** | 
| --- | --- | 
| API regionales | TLS\$11\$10 | 
| API optimizadas para límites | TLS\$11\$10 | 
| API privadas | TLS\$11\$12 | 
| Dominio regional | TLS\$11\$12 | 
| Dominio optimizado para bordes | TLS\$11\$12 | 
| Dominio privado | TLS\$11\$12 | 

## Políticas de seguridad compatibles para las API regionales y privadas y los nombres de dominio personalizados
<a name="apigateway-security-policies-non-edge"></a>

En la siguiente tabla se describen las políticas de seguridad que se pueden especificar para API regionales y privadas y nombres de dominio personalizados:


| **Política de seguridad** | **Versiones compatibles de TLS** | **Cifrados compatibles** | 
| --- | --- | --- | 
| SecurityPolicy\$1TLS13\$11\$13\$12025\$109 | TLS1.3 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/apigateway/latest/developerguide/apigateway-security-policies-list.html)  | 
| SecurityPolicy\$1TLS13\$11\$13\$1FIPS\$12025\$109 | TLS1.3 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/apigateway/latest/developerguide/apigateway-security-policies-list.html)  | 
| SecurityPolicy\$1TLS13\$11\$12\$1PFS\$1PQ\$12025\$109 | TLS1.3 TLS1.2 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/apigateway/latest/developerguide/apigateway-security-policies-list.html) [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/apigateway/latest/developerguide/apigateway-security-policies-list.html)  | 
| SecurityPolicy\$1TLS13\$11\$12\$1PQ\$12025\$109 | TLS1.3 TLS1.2 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/apigateway/latest/developerguide/apigateway-security-policies-list.html) [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/apigateway/latest/developerguide/apigateway-security-policies-list.html)  | 
| TLS\$11\$12 | TLS1.3 TLS1.2 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/apigateway/latest/developerguide/apigateway-security-policies-list.html) [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/apigateway/latest/developerguide/apigateway-security-policies-list.html)  | 
| TLS\$11\$10 |  TLS1.3 TLS1.2 TLS1.1 TLS1.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/apigateway/latest/developerguide/apigateway-security-policies-list.html) [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/apigateway/latest/developerguide/apigateway-security-policies-list.html)  | 

## Políticas de seguridad compatibles para las API optimizadas para bordes y los nombres de dominio personalizados
<a name="apigateway-security-policies-edge-optimized"></a>

En la siguiente tabla se describen las políticas de seguridad que se pueden especificar para API optimizadas para bordes y nombres de dominio personalizados optimizados para bordes:


| **Nombre de política de seguridad** | **Versiones compatibles de TLS** | **Cifrados compatibles** | 
| --- | --- | --- | 
| SecurityPolicy\$1TLS13\$12025\$1EDGE | TLS1.3 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/apigateway/latest/developerguide/apigateway-security-policies-list.html)  | 
| SecurityPolicy\$1TLS12\$1PFS\$12025\$1EDGE |  TLS1.3 TLS1.2  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/apigateway/latest/developerguide/apigateway-security-policies-list.html) [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/apigateway/latest/developerguide/apigateway-security-policies-list.html)  | 
| SecurityPolicy\$1TLS12\$12018\$1EDGE |  TLS1.3 TLS1.2  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/apigateway/latest/developerguide/apigateway-security-policies-list.html) [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/apigateway/latest/developerguide/apigateway-security-policies-list.html)  | 
| TLS\$11\$10 |  TLS1.3 TLS1.2 TLS1.1 TLS1.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/apigateway/latest/developerguide/apigateway-security-policies-list.html) [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/apigateway/latest/developerguide/apigateway-security-policies-list.html)  | 

## Nombre del cifrado OpenSSL y RFC
<a name="apigateway-secure-connections-openssl-rfc-cipher-names"></a>

OpenSSL e IETF RFC 5246 utilizan nombres distintos para los mismos cifrados. En la siguiente tabla se asigna el nombre de OpenSSL al nombre de RFC para cada uno de los cifrados. Para obtener más información, consulte [cifrados](https://docs.openssl.org/1.1.1/man1/ciphers/) en la documentación de OpenSSL.


| **Nombre del cifrado de OpenSSL** | **Nombre del cifrado de RFC** | 
| --- | --- | 
| TLS\$1AES\$1128\$1GCM\$1SHA256 | TLS\$1AES\$1128\$1GCM\$1SHA256 | 
| TLS\$1AES\$1256\$1GCM\$1SHA384 | TLS\$1AES\$1256\$1GCM\$1SHA384 | 
| TLS\$1CHACHA20\$1POLY1305\$1SHA256 | TLS\$1CHACHA20\$1POLY1305\$1SHA256 | 
| ECDHE-RSA-AES128-GCM-SHA256 | TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1GCM\$1SHA256 | 
| ECDHE-RSA-AES128-SHA256 | TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA256  | 
| ECDHE-RSA-AES128-SHA | TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA | 
| ECDHE-RSA-AES256-GCM-SHA384 | TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1GCM\$1SHA384  | 
| ECDHE-RSA-AES256-SHA384 | TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA384  | 
| ECDHE-RSA-AES256-SHA | TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA | 
| AES128-GCM-SHA256 | TLS\$1RSA\$1WITH\$1AES\$1128\$1GCM\$1SHA256 | 
| AES256-GCM-SHA384 | TLS\$1RSA\$1WITH\$1AES\$1256\$1GCM\$1SHA384 | 
| AES128-SHA256 | TLS\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA256 | 
| AES256-SHA | TLS\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA | 
| AES128-SHA | TLS\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA | 
| DES-CBC3-SHA | TLS\$1RSA\$1WITH\$13DES\$1EDE\$1CBC\$1SHA | 

# Cómo cambiar una política de seguridad
<a name="apigateway-security-policies-update"></a>

Puede cambiar la política de seguridad para la API. Si envía tráfico a las API a través del nombre de dominio personalizado, no es necesario que la API y el nombre de dominio personalizado tengan la misma política de seguridad. Al invocar ese nombre de dominio personalizado, API Gateway utiliza la política de seguridad de la API para negociar el establecimiento de comunicación TLS. Sin embargo, para mantener la coherencia, le recomendamos que utilice la misma política de seguridad para el nombre de dominio y la API personalizados.

Si cambia la política de seguridad, esta tardará unos 15 minutos en completarse. Puede supervisar el `apiStatus` de la API. A medida que la API se actualice, el `apiStatus` será `UPDATING` y cuando se complete será `AVAILABLE`. Cuando se actualice la API, puede seguir invocándola.

------
#### [ Consola de administración de AWS ]

**Cambio de la política de seguridad de una API**

1. Inicie sesión en la consola de API Gateway en [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway).

1. Elija una API de REST.

1. Elija **Configuración de la API** y, a continuación, elija **Editar**.

1. Para **Política de seguridad**, seleccione una nueva política que comience con `SecurityPolicy_`.

1. Para **Modo de acceso de punto de conexión**, elija **Estricto**.

1. Seleccione **Save changes (Guardar cambios)**.

   Vuelva a implementar la API para que los cambios se apliquen. Como ha cambiado el modo de acceso del punto de conexión a estricto, los cambios tardarán unos 15 minutos en propagarse por completo.

------
#### [ AWS CLI ]

El comando [update-rest-api](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-rest-api.html) siguiente permite actualizar una API para utilizar la política de seguridad `SecurityPolicy_TLS13_1_3_2025_09`:

```
aws apigateway update-rest-api \
    --rest-api-id abcd1234 \
    --patch-operations '[
        {
            "op": "replace",
            "path": "/securityPolicy",
            "value": "SecurityPolicy_TLS13_1_3_2025_09"
        }, 
        {
            "op": "replace",
            "path": "/endpointAccessMode",
            "value": "STRICT"
        }
    ]'
```

El resultado será similar al siguiente:

```
{
    "id": "abcd1234",
    "name": "MyAPI",
    "description": "My API with a new security policy",
    "createdDate": "2025-02-04T11:47:06-08:00",
    "apiKeySource": "HEADER",
    "endpointConfiguration": {
        "types": [
            "REGIONAL"
        ],
        "ipAddressType": "dualstack"
    },
    "tags": {},
    "disableExecuteApiEndpoint": false,
    "securityPolicy": "SecurityPolicy_TLS13_1_3_2025_09",
    "endpointAccessMode": "STRICT"
    "rootResourceId": "efg456"
}
```

El comando [update-rest-api](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-rest-api.html) siguiente actualiza una API que usaba una política de seguridad mejorada para utilizar la política de seguridad de `TLS_1_0`.

```
aws apigateway update-rest-api \
    --rest-api-id abcd1234 \
    --patch-operations '[
        {
            "op": "replace",
            "path": "/securityPolicy",
            "value": "TLS_1_0"
        }, 
        {
            "op": "replace",
            "path": "/endpointAccessMode",
            "value": ""
        }
    ]'
```

El resultado será similar al siguiente:

```
{
    "id": "abcd1234",
    "name": "MyAPI",
    "description": "My API with a new security policy",
    "createdDate": "2025-02-04T11:47:06-08:00",
    "apiKeySource": "HEADER",
    "endpointConfiguration": {
        "types": [
            "REGIONAL"
        ],
        "ipAddressType": "dualstack"
    },
    "tags": {},
    "disableExecuteApiEndpoint": false,
    "securityPolicy": "TLS_1_0",
    "rootResourceId": "efg456"
}
```

------