En este artículo se comparan los modos de red de Azure Kubernetes Service (AKS) y Amazon Elastic Kubernetes Service (Amazon EKS). En el artículo se describe cómo mejorar la seguridad de conexión con el servidor de API administrado de un clúster de AKS y las distintas opciones para restringir el acceso a la red pública.
Nota:
Este artículo forma parte de una serie de artículos que ayudan a los profesionales que están familiarizados con Amazon EKS a comprender Azure Kubernetes Service (AKS).
Modos de red de Amazon EKS
Con Amazon Virtual Private Cloud (Amazon VPC) puede iniciar recursos de Amazon Web Services (AWS) en una red virtual compuesta de subredes públicas y privadas, o intervalos de direcciones IP en la VPC. Una subred pública hospeda recursos que deben estar conectados a Internet y una subred privada hospeda recursos que no están conectados a la red pública de Internet. Amazon EKS puede aprovisionar grupos de nodos administrados en subredes públicas y privadas.
El control de acceso de punto de conexión permite configurar si el punto de conexión del servidor de API es accesible desde la red pública de Internet o a través de VPC. EKS proporciona varias maneras de controlar el acceso al punto de conexión del clúster. Puede habilitar el punto de conexión público predeterminado, un punto de conexión privado o ambos puntos de conexión simultáneamente. Al habilitar el punto de conexión público, puede agregar restricciones de Enrutamiento de interdominios sin clases (CIDR) para limitar las direcciones IP de cliente que pueden conectarse al punto de conexión público.
La forma en que los nodos de Amazon EKS se conectan al plano de control de Kubernetes administrado está determinada por la configuración del punto de conexión definida para el clúster. Puede cambiar la configuración del punto de conexión en cualquier momento a través de la consola de Amazon EKS o la API. Para más información, consulte Control de acceso al punto de conexión del clúster de Amazon EKS.
Solo punto de conexión público
Exponer el plano de control a través de un punto de conexión público es el modo predeterminado para los nuevos clústeres de Amazon EKS. Cuando solo está habilitado el punto de conexión público para el clúster, las solicitudes de API de Kubernetes que se originan desde dentro de Amazon VPC, como el nodo de trabajo para controlar la comunicación del plano, salga de la VPC, pero no de la red de Amazon. Para que los nodos se conecten al plano de control, deben usar una dirección IP pública y una ruta a una puerta de enlace de Internet, o una ruta a una puerta de enlace de traducción de direcciones de red (NAT), donde pueden usar la dirección IP pública de la puerta de enlace NAT.
Puntos de conexión públicos y privados
Cuando se habilitan los puntos de conexión públicos y privados, las solicitudes de API de Kubernetes desde la VPC se comunican con el plano de control a través de las interfaces de red elástica (ENI) administradas por Amazon EKS en la VPC. El servidor de API de clúster es accesible desde Internet.
Solo punto de conexión privado
Cuando solo se habilita el punto de conexión privado, todo el tráfico al servidor de API del clúster, como los comandos kubectl
o helm
, debe proceder de la VPC del clúster o de una red conectada. El acceso público al servidor de API desde Internet está deshabilitado. Puede implementar este modo de acceso mediante AWS Virtual Private Network (AWS VPN) o AWS DirectConnect a la VPC. Para restringir el acceso al punto de conexión sin AWS VPN o DirectConnect, puede agregar restricciones CIDR al punto de conexión público para limitar las conexiones sin configurar más redes.
Para más información sobre las opciones de conectividad, consulte Acceso a un servidor de API solo privado.
Acceso de la red de AKS al servidor de API
Hay dos opciones para proteger el acceso de red a la API de Kubernetes en AKS, un clúster de AKS privado o intervalos IP autorizados.
Clúster privado de AKS
Un clúster privado de AKS garantiza que el tráfico de red entre el servidor de API y los grupos de nodos permanece dentro de la red virtual. En un clúster de AKS privado, el plano de control o el servidor de API tienen una dirección IP interna que solo es accesible a través de un punto de conexión privado de Azure ubicado en la misma red virtual. Cualquier máquina virtual (VM) de la misma red virtual puede comunicarse de forma privada con el plano de control a través del punto de conexión privado. El plano de control o el servidor de API se hospeda en la suscripción administrada por Azure, mientras que el clúster de AKS y sus grupos de nodos se encuentran en la suscripción del cliente.
En el diagrama siguiente se muestra una configuración de clúster privado.
Descargue un archivo Visio de esta arquitectura.
Para aprovisionar un clúster de AKS privado, el proveedor de recursos de AKS crea un nombre de dominio completo (FQDN) privado para el grupo de recursos del nodo en una zona DNS privada. Opcionalmente, AKS también puede crear un FQDN público con un registro de dirección (A
) correspondiente en la zona DNS pública de Azure. Los nodos del agente usan el registro A
en la zona DNS privada para resolver la dirección IP del punto de conexión privado para la comunicación con el servidor de la API.
El proveedor de recursos de AKS puede crear la zona DNS privada en el grupo de recursos del nodo, o bien usted puede crear la zona DNS privada y pasar su id. de recurso al sistema de aprovisionamiento. Puede crear un clúster privado cuando use Terraform con Azure, Bicep, plantillas de ARM, la CLI de Azure, el módulo de Azure PowerShell o API REST de Azure para crear el clúster.
Puede habilitar un FQDN público para el servidor de API durante el aprovisionamiento o mediante el comando az aks update con el parámetro --enable-public-fqdn
en clústeres existentes. Si habilita el FQDN público, cualquier VM que tenga acceso al servidor, como un agente autohospedado de Azure DevOps o un ejecutor autohospedado de Acciones de GitHub, debe estar en la misma red virtual que hospeda el clúster o en una red conectada a través del emparejamiento de red virtual o VPN de sitio a sitio.
En el caso de un clúster de AKS privado, deshabilite el FQDN público del servidor de API. Para comunicarse con el plano de control privado, una VM debe estar en la misma red virtual o en una red virtual emparejada con un vínculo de red virtual a la zona DNS privada. El registro A
de la zona DNS privada resuelve el FQDN del servidor de API en la dirección IP del punto de conexión privado que se comunica con el plano de control subyacente. Para obtener más información, consulte Creación de un clúster privado de Azure Kubernetes Service.
Opciones de implementación de clúster privado
El proveedor de recursos de AKS expone los parámetros siguientes para personalizar la implementación de clústeres de AKS privada:
authorizedIpRanges
(cadena) especifica los intervalos IP permitidos en formato CIDR.disableRunCommand
(Booleano) especifica si se va a deshabilitar o no el comandorun
para el clúster.enablePrivateCluster
(Booleano) especifica si se va a crear o no el clúster como privado.enablePrivateClusterPublicFQDN
(Booleano) especifica si se va a crear o no otro FQDN público para el clúster privado.privateDnsZone
(cadena) especifica una zona DNS privada en el grupo de recursos del nodo. Si no especifica un valor, el proveedor de recursos crea la zona. Puede especificar los siguientes valores:- El valor predeterminado es
System
. None
tiene como valor predeterminado el DNS público, por lo que AKS no crea una zona DNS privada.<Your own private DNS zone resource ID>
usa una zona DNS privada que se crea en el formatoprivatelink.<region>.azmk8s.io
o<subzone>.privatelink.<region>.azmk8s.io.
- El valor predeterminado es
En la tabla siguiente se muestran las opciones de configuración de DNS para implementar un clúster de AKS privado:
Opciones de zona DNS privada | enablePrivateClusterPublicFQDN: true |
enablePrivateClusterPublicFQDN: false |
---|---|---|
Sistema | Los nodos del agente y cualquier otra VM de la red virtual del clúster de AKS o cualquier red virtual conectada a la zona DNS privada, usan el registro A de zona DNS privada para resolver la dirección IP privada del punto de conexión privado.Cualquier otra VM usa el FQDN público del servidor de API. |
Los nodos del agente y cualquier otra VM de la red virtual del clúster de AKS o cualquier red virtual conectada a la zona DNS privada, usan el registro A de zona DNS privada para resolver la dirección IP privada del punto de conexión privado.No hay ningún FQDN de servidor de API público disponible. |
None | Todas las VM, incluidos los nodos del agente, usan el FQDN público del servidor de API disponible a través de un registro A en una zona DNS pública administrada por Azure. |
Configuración errónea. El clúster de AKS privado necesita al menos una zona DNS pública o privada para la resolución de nombres del servidor de API. |
Su propio id. de recurso de zona DNS privada | Los nodos del agente y cualquier otra VM de la red virtual del clúster de AKS o cualquier red virtual conectada a la zona DNS privada, usan el registro A de zona DNS privada para resolver la dirección IP privada del punto de conexión privado.Cualquier otra VM usa el FQDN público del servidor de API. |
Los nodos del agente y cualquier otra VM de la red virtual del clúster de AKS o cualquier red virtual conectada a la zona DNS privada, usan el registro A de zona DNS privada para resolver la dirección IP privada del punto de conexión privado.No hay ningún FQDN de servidor de API público disponible. |
Administración y conectividad de clústeres privados
Hay varias opciones para establecer la conectividad de red con el clúster privado.
Cree VM en la misma red virtual que el clúster de AKS.
Use VM en una red virtual independiente y configure el emparejamiento de redes virtuales con la red virtual del clúster de AKS.
Use una conexión de Azure ExpressRoute o VPN.
Use el comando de la CLI de Azure az aks command invoke para ejecutar los comandos
kubectl
yhelm
en el clúster privado sin conectarse directamente al clúster.Use una conexión de punto de conexión privado de Azure.
Puede administrar un clúster de AKS privado mediante la herramienta de línea de comandos kubectl desde una VM de administración de la misma red virtual o una red virtual emparejada.
Puede usar Azure Bastion en la misma red virtual o en una red virtual emparejada para conectarse a una VM de administración de jumpbox. Azure Bastion es una plataforma como servicio (PaaS) totalmente administrada que le permite conectarse a una VM mediante el explorador y Azure Portal. Azure Bastion proporciona conectividad de VM segura e ininterrumpida de Protocolo de escritorio remoto (RDP) o Secure Shell (SSH) a través de la Seguridad de la capa de transporte (TLS), directamente desde Azure Portal. Cuando las VM se conectan a través de Azure Bastion, no necesitan una dirección IP pública, un agente ni software cliente especial.
También puede usar az aks command invoke para ejecutar los comandos kubectl
o helm
en el clúster de AKS privado sin tener que conectarse a una VM de jumpbox.
Intervalos IP autorizados
La segunda opción para mejorar la seguridad del clúster y minimizar los ataques al servidor de API es usar intervalos IP autorizados. Las direcciones IP autorizadas restringen el acceso al plano de control de un clúster de AKS público a una lista conocida de direcciones IP y CIDR. Cuando se usa esta opción, el servidor de API todavía está expuesto públicamente, pero el acceso es limitado. Para más información, consulte Protección del acceso al servidor de la API con intervalos de direcciones IP autorizadas en Azure Kubernetes Service (AKS).
El siguiente comando de la CLI de Azure az aks update
autoriza los intervalos IP:
az aks update \
--resource-group myResourceGroup \
--name myAKSCluster \
--api-server-authorized-ip-ranges 73.140.245.0/24
Consideraciones sobre la conectividad de AKS
Un clúster privado de AKS proporciona mayor seguridad y aislamiento que las direcciones IP autorizadas. Sin embargo, no puede convertir un clúster de AKS público existente en un clúster privado. Puede habilitar direcciones IP autorizadas para cualquier clúster de AKS existente.
No se pueden aplicar intervalos IP autorizados a un punto de conexión de servidor de API privado. Las direcciones IP autorizadas solo se aplican al servidor de API público.
Los clústeres privados no admiten agentes hospedados en Azure DevOps. Considere la posibilidad de usar agentes autohospedados.
Para permitir que Azure Container Registry funcione con un clúster de AKS privado, configure un vínculo privado para el registro de contenedor en la red virtual del clúster. O bien, configure el emparejamiento entre la red virtual de Container Registry y la red virtual del clúster privado.
Las limitaciones del servicio Azure Private Link aplican a los clústeres privados.
Si elimina o modifica el punto de conexión privado en la subred del cliente de un clúster privado, el clúster dejará de funcionar.
Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes colaboradores.
Creadores de entidad de seguridad:
- Paolo Salvatori | Ingeniero de servicio principal
- Martin Gjoshevski | Ingeniero principal de servicio
- Laura Nicolas | Ingeniera de software sénior
Otros colaboradores:
- Chad Kittel | Ingeniero principal de software
- Ed Price | Responsable sénior de programas de contenido
- Theano Petersen | Escritor técnico
Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.
Pasos siguientes
- AKS para profesionales de Amazon EKS
- Administración de identidades y acceso de Kubernetes
- Supervisión y registro de Kubernetes
- Opciones de almacenamiento para un clúster de Kubernetes
- Administración de costos para Kubernetes
- Administración de nodos y grupos de nodos de Kubernetes
- Gobernanza de clústeres
Recursos relacionados
Las siguientes referencias proporcionan vínculos a ejemplos de documentación y automatización para implementar clústeres de AKS con una API protegida:
- Creación de un clúster de AKS privado con una zona DNS pública
- Creación de un clúster de Azure Kubernetes Service privado mediante Terraform y Azure DevOps
- Creación de un clúster de Azure Kubernetes Service público o privado con Azure NAT Gateway y Azure Application Gateway
- Uso de puntos de conexión privados con un clúster de AKS privado
- Introducción a Azure Private Link
- Introducción a la infraestructura de red segura con la seguridad de red de Azure