Control del acceso de la red al punto de conexión del servidor API del clúster - Amazon EKS

Ayude a mejorar esta página

¿Quiere contribuir a esta guía del usuario? Desplácese hasta el final de esta página y seleccione Editar esta página en GitHub. Sus contribuciones ayudarán a que nuestra guía del usuario sea mejor para todos.

Control del acceso de la red al punto de conexión del servidor API del clúster

Esto lo ayudará a habilitar el acceso privado al punto de conexión del servidor de API de Kubernetes de su clúster de Amazon EKS y a limitar, o a desactivar por completo, el acceso público desde Internet.

Cuando se crea un clúster nuevo, Amazon EKS crea un punto de conexión 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 la API es público en Internet y el acceso al servidor de la API está protegido mediante una combinación de AWS Identity and Access Management (IAM) y el Control de acceso basado en rol (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.

nota

Dado que este punto de conexión es para el servidor de la API de Kubernetes y no un punto de conexión de AWS PrivateLink tradicional que sirve para comunicarse con una API de AWS, no aparece como un punto de conexión en la consola de Amazon VPC.

Al habilitar el acceso privado al punto de conexión para el clúster, Amazon EKS crea una zona alojada privada de Route 53 en su nombre y la asocia a la VPC de su clúster. Esta zona alojada privada se administra mediante Amazon EKS y no aparece en los recursos de Route 53 de su cuenta. Para que la zona privada alojada dirija el tráfico adecuadamente a su servidor de API, su VPC debe tener enableDnsHostnames y enableDnsSupport establecidos en true y las opciones de DHCP establecidas para su VPC deben incluir AmazonProvidedDNS en su lista de servidores de nombres de dominios. A fin de obtener más información, consulte Actualización de soporte de DNS para su VPC en la guía del usuario de Amazon VPC.

Puede definir los requisitos de acceso al punto de conexión del servidor de la API al crear un nuevo clúster; puede actualizar el acceso al punto de conexión del servidor de la API para un clúster en cualquier momento.

Modificar el acceso al punto de conexión del clúster

Utilice los procedimientos de esta sección para modificar el acceso al punto de conexión para un clúster existente. En la siguiente tabla se muestran las combinaciones de acceso al punto de conexión del servidor de la API y sus comportamientos asociados.

Opciones de acceso al punto de conexión del servidor de la API
Acceso público al punto de conexión Acceso privado al punto de conexión Comportamiento
Habilitado Deshabilitad
  • Este es el comportamiento predeterminado para los clústeres de Amazon EKS nuevos.

  • Las solicitudes de la API de Kubernetes que provienen de dentro de la VPC de su clúster (como comunicación desde el nodo al plano de control) dejan la VPC, pero no la red de Amazon.

  • Se puede acceder al servidor de la API del clúster desde Internet. De forma opcional, puede limitar los bloques de CIDR que pueden acceder al punto de conexión público. Si limita el acceso a bloques de CIDR específicos, se recomienda habilitar también el punto de conexión privado o asegurarse de que los bloques de CIDR que especifique incluyan las direcciones desde las que los nodos y los Pods de Fargate (si los utiliza) acceden al punto de conexión público.

Habilitado Habilitado
  • Las solicitudes de la API de Kubernetes de dentro de la VPC de su clúster (como comunicación desde el nodo al plano de control) utilizan el punto de conexión privado de VPC.

  • Se puede acceder al servidor de la API del clúster desde Internet. De forma opcional, puede limitar los bloques de CIDR que pueden acceder al punto de conexión público.

Deshabilitad Habilitado
  • Todo el tráfico al servidor de la API del clúster debe proceder de dentro de la VPC de su clúster o de una red conectada.

  • No hay acceso público al servidor de la API desde Internet. Cualquier comando kubectl debe provenir de dentro de la VPC o de una red conectada. Para ver las opciones de conectividad, consulte Acceso a un servidor de API solo privado.

  • Los servidores DNS públicos resuelven el punto de conexión del servidor de API del clúster en una dirección IP privada desde la VPC. En el pasado, el punto de conexión se podía resolver desde dentro de la VPC.

    Si el punto de conexión no se resuelve en una dirección IP privada dentro de la VPC para un clúster existente, puede:

    • Habilitar el acceso público y, a continuación, volver a deshabilitarlo. Solo tiene que hacerlo una vez para un clúster y el punto de conexión se resolverá en una dirección IP privada a partir de ese momento.

    • Actualice el clúster.

Puede modificar el acceso al punto de conexión del servidor de API del clúster mediante la AWS Management Console o la AWS CLI.

AWS Management Console
Para modificar el acceso al punto de conexión del servidor de la API del clúster mediante la AWS Management Console
  1. Abra la consola de Amazon EKS en https://console.aws.amazon.com/eks/home#/clusters.

  2. Elija el nombre del clúster para mostrar la información del clúster.

  3. En la pestaña Networking (Redes), elija Update (Actualizar).

  4. Para el acceso privado, decida si desea habilitar o deshabilitar el acceso privado al punto de conexión del servidor de API de Kubernetes del clúster. Si habilita el acceso privado, las solicitudes de la API de Kubernetes que provengan de dentro de la VPC del clúster utilizan el punto de conexión de VPC privada. Debe habilitar el acceso privado para deshabilitar el acceso público.

  5. Para el acceso público, decida si desea habilitar o deshabilitar el acceso público al punto de conexión del servidor de API de Kubernetes del clúster. Si deshabilita el acceso público, el servidor de la API de Kubernetes del clúster solo puede recibir solicitudes que provengan de dentro de la VPC del clúster.

  6. (Opcional) Si ha habilitado el acceso público, puede especificar qué direcciones de Internet pueden comunicarse con el punto de conexión público. Seleccione Advanced Settings (Configuración avanzada). Introduzca un bloque CIDR, como 203.0.113.5/32. El bloque no puede incluir direcciones reservadas. Puede introducir bloques adicionales seleccionando Add Source (Agregar origen). Hay un número máximo de bloques de CIDR que puede especificar. Para obtener más información, consulte Visualización y administración de Amazon EKS y las Service Quotas de Fargate. Si no especifica ningún bloque, el punto de conexión del servidor de API público recibe solicitudes de todas las direcciones IP (0.0.0.0/0). Si restringe el acceso a su punto de conexión público mediante bloques de CIDR, se recomienda habilitar también el acceso al punto de conexión privado para que los nodos y los Pods de Fargate (si los utiliza) puedan comunicarse con el clúster. Si el punto de conexión privado no está habilitado, los orígenes de CIDR del punto de conexión de acceso público deben incluir los orígenes de salida de la VPC. Por ejemplo, si tiene un nodo en una subred privada que se comunica con Internet a través de una puerta de enlace NAT, deberá agregar la dirección IP saliente de la puerta de enlace NAT como parte de un bloque de CIDR permitido en su punto de conexión público.

  7. Elija Update (Actualizar) para finalizar.

AWS CLI
Para modificar el acceso al punto de conexión del servidor de la API del clúster mediante la AWS CLI

Complete los siguientes pasos con la versión 1.27.160 o posterior de la AWS CLI. Puede comprobar su versión actual con aws --version. Para realizar la instalación o actualización de la AWS CLI, consulte Instalación de la AWS CLI.

  1. Actualice el acceso al punto de conexión del servidor de la API del clúster con el siguiente comando de la AWS CLI Sustituya el nombre de su clúster y los valores de acceso de punto de conexión deseados. Si configura el endpointPublicAccess=true, podrá introducir un solo bloque de CIDR o una lista separada por comas de bloques de CIDR para publicAccessCidrs. Los bloques no pueden incluir direcciones reservadas. Si especifica bloques de CIDR, el punto de conexión del servidor de API público solo recibirá solicitudes de los bloques enumerados. Hay un número máximo de bloques de CIDR que puede especificar. Para obtener más información, consulte Visualización y administración de Amazon EKS y las Service Quotas de Fargate. Si restringe el acceso a su punto de conexión público mediante bloques de CIDR, se recomienda habilitar también el acceso al punto de conexión privado para que los nodos y los Pods de Fargate (si los utiliza) puedan comunicarse con el clúster. Si el punto de conexión privado no está habilitado, los orígenes de CIDR del punto de conexión de acceso público deben incluir los orígenes de salida de la VPC. Por ejemplo, si tiene un nodo en una subred privada que se comunica con Internet a través de una puerta de enlace NAT, deberá agregar la dirección IP saliente de la puerta de enlace NAT como parte de un bloque de CIDR permitido en su punto de conexión público. Si no especifica ningún bloque de CIDR, el punto de conexión del servidor de API público recibe solicitudes de todas las direcciones IP (0.0.0.0/0).

    nota

    El siguiente comando habilita el acceso privado y público desde una única dirección IP al punto de conexión del servidor de API. Reemplace 203.0.113.5/32 por un único bloque de CIDR o una lista separada por comas de bloques de CIDR a los que desea restringir el acceso a la red.

    aws eks update-cluster-config \ --region region-code \ --name my-cluster \ --resources-vpc-config endpointPublicAccess=true,publicAccessCidrs="203.0.113.5/32",endpointPrivateAccess=true

    Un ejemplo de salida sería el siguiente.

    { "update": { "id": "e6f0905f-a5d4-4a2a-8c49-EXAMPLE00000", "status": "InProgress", "type": "EndpointAccessUpdate", "params": [ { "type": "EndpointPublicAccess", "value": "true" }, { "type": "EndpointPrivateAccess", "value": "true" }, { "type": "publicAccessCidrs", "value": "[\203.0.113.5/32\"]" } ], "createdAt": 1576874258.137, "errors": [] } }
  2. Monitoree el estado de la actualización del acceso al punto de conexión con el siguiente comando, utilizando el nombre del clúster y el ID de actualización devueltos por el comando anterior. Su actualización se habrá completado cuando el estado mostrado sea Successful.

    aws eks describe-update \ --region region-code \ --name my-cluster \ --update-id e6f0905f-a5d4-4a2a-8c49-EXAMPLE00000

    Un ejemplo de salida sería el siguiente.

    { "update": { "id": "e6f0905f-a5d4-4a2a-8c49-EXAMPLE00000", "status": "Successful", "type": "EndpointAccessUpdate", "params": [ { "type": "EndpointPublicAccess", "value": "true" }, { "type": "EndpointPrivateAccess", "value": "true" }, { "type": "publicAccessCidrs", "value": "[\203.0.113.5/32\"]" } ], "createdAt": 1576874258.137, "errors": [] } }

Acceso a un servidor de API solo privado

Si ha deshabilitado el acceso público al punto de conexión del servidor de la API de Kubernetes del clúster, solo puede obtener acceso al servidor de API desde dentro de la VPC o desde una red conectada. Hay varias formas de obtener acceso al punto de conexión del servidor de API de Kubernetes:

Red conectada

Conecte su red a la VPC con una puerta de enlace de tránsito de AWS u otra opción de conectividad y, a continuación, utilice un equipo en la red conectada. Debe asegurarse de que el grupo de seguridad del plano de control de Amazon EKS tiene reglas para permitir el tráfico de entrada en el puerto 443 desde la red conectada.

Host bastión de Amazon EC2

Puede lanzar una instancia de Amazon EC2 en una subred pública de la VPC del clúster y, a continuación, iniciar sesión mediante SSH en esa instancia para ejecutar comandos de kubectl. Para obtener más información, consulte hosts bastión de Linux en AWS. Debe asegurarse de que el grupo de seguridad del plano de control de Amazon EKS tiene reglas para permitir el tráfico de entrada en el puerto 443 desde su host bastión. Para obtener más información, consulte Requisitos y consideraciones sobre grupos de seguridad de Amazon EKS.

Cuando configure kubectl para el host bastión, asegúrese de utilizar las credenciales de AWS que ya están asignadas a su configuración de RBAC del clúster o agregue la entidad principal de IAM que utilizará el bastión a la configuración de RBAC antes de eliminar el acceso público al punto de conexión. Para obtener más información, consulte Concesión a los usuarios y roles de IAM de acceso a las APIs de Kubernetes y Acceso denegado o no autorizado (kubectl).

IDE AWS Cloud9

AWS Cloud9 es un entorno de desarrollo integrado (IDE) basado en la nube que permite escribir, ejecutar y depurar su código con solo un navegador. Puede crear un IDE de AWS Cloud9 en la VPC de su clúster y utilizar el IDE para comunicarse con el clúster. Para obtener más información, consulte Creación de un entorno en AWS Cloud9. Debe asegurarse de que el grupo de seguridad del plano de control de Amazon EKS tiene reglas para permitir el tráfico de entrada en el puerto 443 desde el grupo de seguridad de IDE. Para obtener más información, consulte Requisitos y consideraciones sobre grupos de seguridad de Amazon EKS.

Cuando configure kubectl para el IDE de AWS Cloud9, asegúrese de utilizar las credenciales de AWS que ya están asignadas a su configuración de RBAC del clúster o agregue la entidad principal de IAM que utilizará el IDE a la configuración de RBAC antes de eliminar el acceso público al punto de conexión. Para obtener más información, consulte Concesión a los usuarios y roles de IAM de acceso a las APIs de Kubernetes y Acceso denegado o no autorizado (kubectl).