

 **Ayude a mejorar esta página** 

Para contribuir a esta guía del usuario, elija el enlace **Edit this page on GitHub** que se encuentra en el panel derecho de cada página.

# Consideraciones de seguridad para Amazon Elastic Kubernetes Service
<a name="security-eks"></a>

A continuación, se presentan consideraciones de seguridad en la nube que impactan en Amazon EKS.

**Topics**
+ [Seguridad de la infraestructura de Amazon EKS](infrastructure-security.md)
+ [Comprensión de la resiliencia de los clústeres de Amazon EKS](disaster-recovery-resiliency.md)
+ [Prevención de suplentes confusos entre servicios en Amazon EKS](cross-service-confused-deputy-prevention.md)

# Seguridad de la infraestructura de Amazon EKS
<a name="infrastructure-security"></a>

Como servicio administrado, Amazon Elastic Kubernetes Service está protegido por la seguridad de la red global AWS. Para obtener información sobre los servicios de seguridad de AWS y sobre cómo AWS protege la infraestructura, consulte [Seguridad en la nube de AWS](https://aws.amazon.com/security/). Para diseñar su entorno de AWS siguiendo las prácticas recomendadas de seguridad de infraestructura, consulte [Protección de la infraestructura](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/infrastructure-protection.html) en *Portal de seguridad de AWS Well‐Architected Framework*.

Puede utilizar llamadas a la API publicadas en AWS para acceder a Amazon EKS a través de la red. Los clientes deben admitir lo siguiente:
+ Seguridad de la capa de transporte (TLS). Exigimos TLS 1.2 y recomendamos TLS 1.3.
+ Conjuntos de cifrado con confidencialidad directa total (PFS) como DHE (Ephemeral Diffie-Hellman) o ECDHE (Elliptic Curve Ephemeral Diffie-Hellman). La mayoría de los sistemas modernos como Java 7 y posteriores son compatibles con estos modos.

Además, las solicitudes deben estar firmadas mediante un ID de clave de acceso y una clave de acceso secreta que esté asociada a una entidad principal de IAM. También puede utilizar el [AWS Security Token Service](https://docs.aws.amazon.com/STS/latest/APIReference/welcome.html) (AWS STS) con el objeto de generar credenciales de seguridad temporales para firmar solicitudes.

Cuando se crea un clúster de Amazon EKS, se especifican las subredes de la VPC que utilizará el clúster. Amazon EKS requiere subredes en al menos dos zonas de disponibilidad. Recomendamos una VPC con subredes públicas y privadas para que Kubernetes pueda crear equilibradores de carga públicos en las subredes públicas que equilibren la carga de tráfico con los pods que se ejecutan en los nodos de las subredes privadas.

Para obtener información acerca de las consideraciones de VPC, consulte [Requisitos de red de Amazon EKS para VPC y subredes](network-reqs.md).

Si crea la VPC y los grupos de nodos con las plantillas de AWS CloudFormation incluidas en la explicación de [Introducción a Amazon EKS](getting-started.md), los grupos de seguridad del plano de control y de los nodos se ajustan con la configuración recomendada.

Para obtener más información acerca de las consideraciones del grupo de seguridad, consulte [Revisión de requisitos de grupos de seguridad de Amazon EKS para clústeres](sec-group-reqs.md).

Cuando se crea un clúster nuevo, Amazon EKS crea un punto de enlace para el servidor de la API de Kubernetes administrado que utiliza a fin de comunicarse con su clúster (mediante herramientas de administración de Kubernetes como, por ejemplo, `kubectl`). De forma predeterminada, este punto de conexión del servidor de API es público en Internet y el acceso al servidor de API está protegido mediante una combinación de AWS Identity and Access Management (IAM) y el [Control de acceso basado en rol](https://kubernetes.io/docs/reference/access-authn-authz/rbac/) (RBAC) nativo de Kubernetes.

Puede habilitar el acceso privado al servidor de la API de Kubernetes para que toda la comunicación entre los nodos y el servidor de la API permanezcan dentro de su VPC. Puede limitar las direcciones IP que pueden acceder a su servidor de API desde Internet o desactivar por completo el acceso a Internet al servidor de API.

Para obtener más información acerca de la modificación del acceso al punto de conexión del clúster, consulte [Modificar el acceso al punto de conexión del clúster](cluster-endpoint.md#modify-endpoint-access).

Puede implementar *políticas de red* de Kubernetes con la CNI de Amazon VPC o con herramientas de terceros, como [Project Calico](https://docs.tigera.io/calico/latest/about/). Para obtener más información sobre el CNI de Amazon VPC para las políticas de red, consulte [Limitación del tráfico de un pod con políticas de red de Kubernetes](cni-network-policy.md). Project Calico es un proyecto abierto de terceros. Para obtener más información, consulte la [documentación de Project Calico](https://docs.tigera.io/calico/latest/getting-started/kubernetes/managed-public-cloud/eks/).

# Acceso a Amazon EKS con AWS PrivateLink
<a name="vpc-interface-endpoints"></a>

Puede usar un AWS PrivateLink para crear una conexión privada entre la VPC y Amazon Elastic Kubernetes Service. Puede acceder a Amazon EKS como si estuviera en su VPC, sin el uso de una puerta de enlace de Internet, un dispositivo NAT, una conexión VPN o una conexión AWS Direct Connect. Las instancias de la VPC no necesitan direcciones IP públicas para acceder a Amazon EKS.

Esta conexión privada se establece mediante la creación de un punto de conexión de interfaz alimentado por AWS PrivateLink. Creamos una interfaz de red de punto de conexión en cada subred habilitada para el punto de conexión de interfaz. Se trata de interfaces de red administradas por el solicitante que sirven como punto de entrada para el tráfico destinado a Amazon EKS.

Para obtener más información, consulte [Access AWS services through AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/privatelink-access-aws-services.html) en la *Guía de AWS PrivateLink*.

## Antes de empezar
<a name="vpc-endpoint-prerequisites"></a>

Antes de comenzar, asegúrese de haber realizado las siguientes tareas:
+ Revise [Acceda a un servicio de AWS mediante un punto de conexión de VPC de interfaz](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#considerations-interface-endpoints) en la *Guía de AWS PrivateLink* 

## Consideraciones
<a name="vpc-endpoint-considerations"></a>
+  **Compatibilidad y limitaciones**: los puntos de conexión de la interfaz de Amazon EKS permiten el acceso seguro a todas las acciones de la API de Amazon EKS desde su VPC, pero tienen limitaciones específicas: no admiten el acceso a las API de Kubernetes, ya que estas tienen un punto de conexión privado independiente, no puede configurar Amazon EKS para que solo se pueda acceder a través del punto de conexión de la interfaz.
+  **Precios**: el uso de puntos de conexión de la interfaz para Amazon EKS conlleva cargos estándar de AWS PrivateLink: cargos por hora por cada punto de conexión aprovisionado en cada zona de disponibilidad, cargos por procesamiento de datos por el tráfico a través del punto de conexión. Para obtener más información, consulte [Precios de AWS PrivateLink](https://aws.amazon.com/privatelink/pricing/).
+  **Seguridad y control de acceso**: recomendamos mejorar la seguridad y controlar el acceso con estas configuraciones adicionales: utilice políticas de puntos de conexión de VPC para controlar el acceso a Amazon EKS a través del punto de conexión de la interfaz, asocie grupos de seguridad a las interfaces de red de los puntos de conexión para gestionar el tráfico, utilice registros de flujo de VPC para capturar y supervisar el tráfico IP hacia y desde los puntos de conexión de la interfaz, con registros que se puedan publicar en Amazon CloudWatch o Amazon S3. Para obtener más información, consulte [Uso de políticas de punto de conexión para controlar el acceso a puntos de conexión de VPC](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html) y [Registro del tráfico de IP con registros de flujo de la VPC](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html).
+  **Opciones de conectividad**: los puntos de conexión de la interfaz ofrecen opciones de conectividad flexibles mediante el **acceso local** (conecte el centro de datos en las instalaciones a una VPC con el punto de conexión de la interfaz mediante AWS Direct Connect o AWS Site-to-Site VPN) o mediante la **conectividad entre VPC** (utilice AWS Transit Gateway o el emparejamiento de VPC para conectar otras VPC a la VPC con el punto de conexión de la interfaz y mantener el tráfico dentro de la red de AWS).
+  **Compatibilidad con la versión IP**: los puntos de conexión creados antes de agosto de 2024 solo admiten IPv4 con eks.region.amazonaws.com. Los nuevos puntos de conexión creados después de agosto de 2024 admiten IPv4 e IPv6 de doble pila (por ejemplo, eks.region.amazonaws.com, eks.region.api.aws).
+  **Disponibilidad regional**: AWS PrivateLink para la API de EKS no está disponible en las regiones de Asia-Pacífico (Malasia) (ap-southeast-5), Asia-Pacífico (Tailandia) (ap-southeast-7), México (centro) (mx-central-1) y Asia-Pacífico (Taipéi) (ap-east-2). AWS La compatibilidad de PrivateLink con eks-auth (EKS Pod Identity) se encuentra disponible en la región de Asia-Pacífico (Malasia) (ap-southeast-5).

## Crear de un punto de conexión de interfaz para Amazon EKS
<a name="vpc-endpoint-create"></a>

Puede crear un punto de conexión de interfaz para Amazon EKS mediante la consola de Amazon VPC o la Interfaz de la línea de comandos de AWS (AWS CLI). Para obtener más información, consulte [Creación de un punto de conexión de VPC](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#create-interface-endpoint-aws) en la *Guía de AWS PrivateLink*.

Cree un punto de conexión de interfaz para Amazon EKS con los siguientes nombres de servicios:

### API de EKS
<a name="_eks_api"></a>
+ com.amazonaws.region-code.eks
+ com.amazonaws.region-code.eks-fips (para puntos de conexión compatibles con FIPS)

### API de autenticación de EKS (Pod Identity de EKS)
<a name="_eks_auth_api_eks_pod_identity"></a>
+ com.amazonaws.region-code.eks-auth

## Característica de DNS privado para los puntos de conexión de la interfaz de Amazon EKS
<a name="vpc-endpoint-private-dns"></a>

La característica de DNS privado, habilitada de forma predeterminada para los puntos de conexión de la interfaz de Amazon EKS y otros servicios de AWS, facilita las solicitudes de API seguras y privadas mediante nombres de DNS regionales predeterminados. Esta característica garantiza que las llamadas de API se enruten a través del punto de conexión de la interfaz a través de la red de AWS privada, lo que mejora la seguridad y el rendimiento.

La característica de DNS privado se activa automáticamente cuando crea un punto de conexión de la interfaz para Amazon EKS u otros servicios de AWS. Para habilitarla, debe configurar la VPC correctamente mediante el establecimiento de atributos específicos:
+  **enableDnsHostnames**: Permite que las instancias dentro de la VPC tengan nombres de host DNS.
+  **enableDnsSupport**: Habilita la resolución de DNS en toda la VPC.

Si desea obtener instrucciones paso a paso para comprobar o modificar estos ajustes, consulte [Ver y actualizar los atributos de DNS de su VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html#vpc-dns-updating).

### Nombres de DNS y tipos de direcciones IP
<a name="_dns_names_and_ip_address_types"></a>

Con la característica de DNS privado habilitada, puede usar nombres de DNS específicos para conectarse a Amazon EKS, y estas opciones evolucionan con el tiempo:
+  **eks.region.amazonaws.com**: El nombre de DNS tradicional, que solo se resuelve en direcciones IPv4 antes de agosto de 2024. Para los puntos de conexión existentes actualizados a doble pila, este nombre se resuelve en direcciones IPv4 e IPv6.
+  **eks.region.api.aws**: Disponible para los nuevos puntos de conexión creados después de agosto de 2024, este nombre de DNS de doble pila se resuelve en direcciones IPv4 e IPv6.

A partir de agosto de 2024, los nuevos puntos de conexión de la interfaz vienen con dos nombres de DNS y puede optar por el tipo de dirección IP de doble pila. Para los puntos de conexión existentes, la actualización a doble pila modifica **eks.region.amazonaws.com** para que sea compatible con IPv4 e IPv6.

### Uso de la característica de DNS privado
<a name="_using_the_private_dns_feature"></a>

Una vez configurada, la característica de DNS privado se puede integrar en sus flujos de trabajo y ofrece las siguientes capacidades:
+  **Solicitudes de API**: Utilice los nombres de DNS regionales predeterminados, ya sea `eks.region.amazonaws.com` o `eks.region.api.aws`, según la configuración de su punto de conexión, para realizar solicitudes de API a Amazon EKS.
+  **Compatibilidad con aplicaciones**: Las aplicaciones existentes que utilizan las API de EKS no requieren cambios para aprovechar esta característica.
+  ** AWS CLI con doble pila**: Para usar los puntos de conexión de doble pila con AWS CLI, consulte la [configuración de los puntos de conexión de doble pila y FIPS](https://docs.aws.amazon.com/sdkref/latest/guide/feature-endpoints.html) en la *Guía de referencia de SDK y herramientas de AWS*.
+  **Enrutamiento automático**: Cualquier llamada al punto de conexión del servicio predeterminado de Amazon EKS se enruta automáticamente a través del punto de conexión de interfaz, lo que garantiza una conectividad privada y segura.

# Comprensión de la resiliencia de los clústeres de Amazon EKS
<a name="disaster-recovery-resiliency"></a>

La infraestructura global de AWS se compone de regiones y zonas de disponibilidad de AWS. AWS Las regiones proporcionan varias zonas de disponibilidad físicamente independientes y aisladas que se encuentran conectadas mediante redes con un alto nivel de rendimiento y redundancia, además de baja latencia. Con las zonas de disponibilidad, puedes diseñar y utilizar aplicaciones y bases de datos que realizan una conmutación por error automática entre zonas de disponibilidad sin interrupciones. Las zonas de disponibilidad tienen una mayor disponibilidad, tolerancia a errores y escalabilidad que las infraestructuras tradicionales de centros de datos únicos o múltiples.

Amazon EKS ejecuta y escala el plano de control de Kubernetes en varias zonas de disponibilidad de AWS para garantizar una alta disponibilidad. Amazon EKS escala de forma automática las instancias del plano de control en función de la carga, detecta y reemplaza instancias del plano de control en mal estado y revisa el plano de control de forma automática. Después de iniciar una actualización de versión, Amazon EKS actualiza el plano de control en su nombre y mantiene una alta disponibilidad durante la actualización.

Este plano de control consta de al menos dos instancias de servidor de la API y tres instancias `etcd` que se ejecutan en tres zonas de disponibilidad de una región de AWS. Amazon EKS:
+ Monitorea de forma activa la carga en las instancias del plano de control y las escala de forma automática para garantizar un alto rendimiento.
+ Detecta y reemplaza de forma automática las instancias del plano de control en mal estado y las reinicia en las zonas de disponibilidad de la región de AWS, según sea necesario.
+ Aprovecha la arquitectura de las regiones de AWS con el fin de mantener una alta disponibilidad. Por este motivo, Amazon EKS puede ofrecer un [acuerdo de nivel de servicio (SLA) de disponibilidad del punto de enlace del servidor de la API](https://aws.amazon.com/eks/sla).

Para obtener más información sobre las zonas de disponibilidad y las regiones de AWS, consulte [Infraestructura global de AWS](https://aws.amazon.com/about-aws/global-infrastructure/).

# Prevención de suplentes confusos entre servicios en Amazon EKS
<a name="cross-service-confused-deputy-prevention"></a>

El problema del suplente confuso es un problema de seguridad en el que una entidad que no tiene permiso para realizar una acción puede obligar a una entidad con más privilegios a realizar la acción. En AWS, la suplantación entre servicios puede dar lugar al problema de la sustitución confusa. La suplantación entre servicios puede producirse cuando un servicio (el *servicio que lleva a cabo las llamadas*) llama a otro servicio (el *servicio al que se llama*). El servicio que lleva a cabo las llamadas se puede manipular para utilizar sus permisos a fin de actuar en función de los recursos de otro cliente de una manera en la que no debe tener permiso para acceder. Para evitarlo, AWS proporciona herramientas que le ayudan a proteger sus datos para todos los servicios con entidades principales de servicio a las que se les ha dado acceso a los recursos de su cuenta.

Se recomienda utilizar las claves de contexto de condición global [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) y [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) en las políticas de recursos para limitar los permisos que Amazon Elastic Kubernetes Service (Amazon EKS) concede a otro servicio para el recurso.

 `aws:SourceArn`   
Utilice `aws:SourceArn` para asociar solo un recurso al acceso entre servicios.

 `aws:SourceAccount`   
Utilice `aws:SourceAccount` para permitir que cualquier recurso de esa cuenta se asocie al uso entre servicios.

La forma más eficaz de protegerse contra el problema de la sustitución confusa es utilizar la clave de contexto de condición global de `aws:SourceArn` con el ARN completo del recurso. Si no conoce el ARN completo del recurso o si está especificando varios recursos, utilice la clave de condición de contexto global `aws:SourceArn` con caracteres comodín (\$1) para las partes desconocidas del ARN. Por ejemplo, ` arn:aws:<servicename>:*:<123456789012>:*`.

Si el valor de `aws:SourceArn` no contiene el ID de cuenta, como un ARN de bucket de Amazon S3, debe utilizar `aws:SourceAccount` y `aws:SourceArn` para limitar los permisos.

## Prevención de suplentes confusos entre servicios para el rol del clúster de Amazon EKS
<a name="cross-service-confused-deputy-cluster-role"></a>

Se requiere un rol de IAM de clúster de Amazon EKS para cada clúster. Los clústeres de Kubernetes administrados por Amazon EKS utilizan este rol para administrar los nodos, y el [proveedor de nube heredado](https://kubernetes-sigs.github.io/aws-load-balancer-controller/latest/guide/service/annotations/#legacy-cloud-provider) lo usa para crear equilibradores de carga con Elastic Load Balancing para los servicios. Estas acciones de clúster solo pueden afectar a la misma cuenta, por lo que recomendamos que limite cada rol del clúster a ese clúster y esa cuenta. Esta es una aplicación específica de la recomendación de AWS de seguir el *principio de privilegios mínimos* en su cuenta.

 **Formato del ARN de origen** 

El valor de `aws:SourceArn` debe ser el ARN de un clúster de EKS con el formato ` arn:aws:eks:region:account:cluster/cluster-name `. Por ejemplo, ., ` arn:aws:eks:us-west-2:123456789012:cluster/my-cluster` .

 **Formato de la política de confianza para roles de clúster de EKS** 

En el ejemplo siguiente se muestra cómo se pueden utilizar las claves de contexto de condición globales `aws:SourceArn` y `aws:SourceAccount` en Amazon EKS para evitar el problema de suplente confuso.

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "eks.amazonaws.com"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "ArnLike": {
          "aws:SourceArn": "arn:aws:eks:us-west-2:123456789012:cluster/my-cluster"
          },
        "StringEquals": {
            "aws:SourceAccount": "123456789012"
        }
      }
    }
  ]
}
```