View a markdown version of this page

Multi-tenancy para entornos de Beanstalk Cluster - AWS Elastic Beanstalk

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.

Multi-tenancy para entornos de Beanstalk Cluster

Los entornos de Beanstalk Cluster que utilizan las mismas subredes se ejecutan en el mismo clúster de Amazon EKS, por lo que comparten la infraestructura informática. Elastic Beanstalk los separa en ese clúster compartido: la aplicación de cada entorno se ejecuta en su propia partición del clúster y Elastic Beanstalk bloquea el tráfico de red entre los entornos de forma predeterminada. En este tema se describe la separación que se obtiene, cómo ampliarla o reforzarla y qué requisitos no puede cumplir un clúster compartido.

El aislamiento entre los entornos de Beanstalk Cluster tiene dos dimensiones independientes. El aislamiento de la red controla qué entornos pueden enviar tráfico a la aplicación de un entorno. El aislamiento informático controla si las réplicas de aplicaciones de un entorno comparten nodos con otros entornos. Puede configurar cualquiera de los dos sin el otro.

Elegir un límite de aislamiento

Decida qué tan fuerte debe ser el límite que necesita un entorno antes de crearlo, ya que la elección se hace a través de las subredes que usted asigna y no puede cambiar las subredes de un entorno existente. Hay dos límites disponibles que corresponden a los dos modelos de tenencia múltiple que documenta Amazon EKS.

Límite ¿Cómo lo consigues ¿Qué separa
Clúster compartido (tenencia múltiple flexible) Cree los entornos con el mismo conjunto de subredes. Este es el valor predeterminado cuando los entornos comparten una configuración de VPC. La aplicación de cada entorno se ejecuta en su propia partición del clúster y el tráfico de red entre los entornos está bloqueado de forma predeterminada. Los entornos comparten el propio clúster y comparten nodos, a menos que configure nodos dedicados.
Clústeres separados (tenencia múltiple estricta) Cree los entornos con diferentes conjuntos de subredes. A continuación, Elastic Beanstalk crea un clúster independiente para cada conjunto. No se comparte nada. Los clústeres independientes tienen planos de control y nodos independientes y no hay ninguna ruta de red entre las aplicaciones que se ejecutan en ellos.

Un clúster compartido proporciona una separación lógica entre los entornos, que se impone mediante la configuración que Elastic Beanstalk aplica al clúster. Un clúster independiente proporciona la separación de la infraestructura. Amazon EKS considera que el clúster es la estructura que proporciona un límite de seguridad sólido, ya que una carga de trabajo que obtenga acceso a un nodo podría alcanzar las credenciales y los datos de cualquier otra cosa que se ejecute en ese nodo. La separación lógica dentro de un clúster es un clúster flexible con varios inquilinos; un clúster para cada inquilino es un clúster con varios inquilinos en condiciones duras. Para obtener la orientación general que esto refleja, consulte el aislamiento de inquilinos en la Guía de mejores prácticas de Amazon EKS.

importante

Utilice conjuntos de subredes independientes y, por lo tanto, clústeres independientes cuando los entornos ejecuten cargas de trabajo que no deben compartir la infraestructura. Algunos ejemplos son los entornos que pertenecen a diferentes clientes finales de la empresa, los entornos que ejecutan código que usted no controla y los entornos que se encuentran dentro del ámbito de un régimen de cumplimiento que exige la separación de la infraestructura. Los controles que se describen en el resto de este tema separan los entornos de un clúster compartido, pero no hacen que un clúster compartido sea equivalente a clústeres independientes.

Los clústeres independientes cuestan más y utilizan la capacidad de forma menos eficiente, porque cada clúster se factura por separado y los nodos no se pueden compartir entre clústeres. Un clúster compartido es la elección correcta para los entornos que un equipo posee y opera en conjunto, como los servicios que forman una sola aplicación. Separar la producción del desarrollo es un motivo habitual para usar diferentes conjuntos de subredes, incluso cuando nada lo requiere. Para saber cómo Elastic Beanstalk agrupa los entornos en clústeres, consulte. Agrupación de entornos Para ver la configuración de subred en sí, consulte. Configuración de redes para entornos de Beanstalk Cluster

Aislamiento de red en un clúster compartido

De forma predeterminada, Elastic Beanstalk bloquea el tráfico de red entre los entornos de Beanstalk Cluster en un clúster compartido. No se requiere ninguna configuración para obtenerlo y no hay ninguna opción que lo desactive. Las réplicas de aplicaciones de un entorno no pueden recibir tráfico de las copias de aplicaciones de otro entorno en ningún puerto, a menos que usted lo autorice con una de las opciones de esta sección.

Elastic Beanstalk permite que sus propios componentes operativos lleguen a su aplicación, de modo que los informes de estado, la recopilación de registros y el escalado basado en métricas sigan funcionando.

El tráfico que llega a un entorno a través de su balanceador de cargas no se ve afectado. El bloqueo se aplica al tráfico que se envía desde las réplicas de aplicaciones de un entorno directamente a las de otro, no al tráfico que llega desde fuera del clúster. Las solicitudes que llegan a su aplicación a través del balanceador de carga de aplicaciones se entregan con normalidad, incluidas las solicitudes que otro entorno envía al punto final público de ese balanceador de carga.

Permitir que los entornos se comuniquen

Hay tres opciones en el espacio de aws:elasticbeanstalk:eks:environment nombres que permiten el tráfico entre los entornos de un clúster compartido. Cada una de ellas incluye una lista separada por comas. Los nombres se limitan a los caracteres a-zA-Z,0-9, y-; deben empezar por una letra y tener entre 4 y 40 caracteres. Cambiar alguno de ellos no interrumpe el entorno.

Opción Efecto Úselo cuando
ingress-groups Une el entorno a uno o más grupos con nombre. Todos los entornos de un grupo pueden enviar tráfico a todos los demás entornos de ese grupo, en ambas direcciones. Un entorno puede pertenecer a más de un grupo. Es necesario que todos los entornos se llamen entre sí, como los servicios de una aplicación.
ingress-allowlist-environments Permite que los entornos nombrados envíen tráfico a este entorno. El permiso es unidireccional: asignar aquí un nombre a un entorno no permite que este entorno lo llame. Un entorno funciona como una API interna a la que llaman otros entornos específicos.
ingress-allowlist-groups Permite que todos los entornos de los grupos mencionados envíen tráfico a este entorno, de una manera, sin unirse a esos grupos. Un entorno sirve a un conjunto de personas que llaman y que ya comparten un grupo y no deben obtener acceso a ellos a cambio.

Se establece ingress-groups en cada entorno que se une al grupo; la pertenencia a un grupo no se configura desde un solo lugar. Un entorno abandona un grupo cuando se elimina el grupo de su ingress-groups valor o se termina el entorno. Configure las opciones de la lista de llamadas permitidas en el entorno que recibe el tráfico y asigne un nombre a las personas que llama a las que desea permitir el acceso.

Los dos mecanismos se combinan. Un entorno puede unirse a un grupo para los servicios con los que trabaja en calidad de igual a igual y permitir por separado a la persona que llama para que se comunique con él de alguna manera. Para saber cómo configurar las opciones de configuración en un entorno, consulte. Opciones de configuración

Permitir el tráfico no configura la detección. La aplicación sigue necesitando saber a qué dirección llamar, la cual se proporciona del mismo modo que se proporciona cualquier otra configuración, mediante una propiedad del entorno. Elastic Beanstalk no inyecta las direcciones de los entornos permitidos.

Nodos dedicados para un entorno

De forma predeterminada, Elastic Beanstalk programa las réplicas de aplicaciones de cualquier entorno en la capacidad de nodos compartidos del clúster, de modo que las copias de diferentes entornos puedan ejecutarse en el mismo nodo. Para mantener las réplicas de las aplicaciones de un entorno en nodos que no utilice ningún otro entorno, defina la node-pool opción del espacio de aws:elasticbeanstalk:eks:environment nombres con el nombre que prefiera.

A continuación, Elastic Beanstalk reserva un conjunto de nodos para ese nombre y programa solo las réplicas de aplicaciones de entornos con el mismo valor. node-pool Los entornos que no establecen ningún valor, o que tienen un valor diferente, no se pueden colocar en esos nodos.

importante

Los entornos que comparten un node-pool valor comparten nodos entre sí. Para asignar a un único entorno nodos que no utilice ningún otro entorno, asígnele un valor que no utilice ningún otro entorno.

Los cambios node-pool reinician las réplicas de las aplicaciones del entorno para que Elastic Beanstalk pueda reprogramarlas en los nodos correctos. Los nodos dedicados también reducen el efecto que el uso de recursos de un entorno tiene en otro, ya que los entornos ya no compiten por la CPU y la memoria del mismo nodo. Los nodos dedicados son independientes del aislamiento de la red: los entornos pueden ejecutarse en nodos independientes y aun así se les permite comunicarse, o compartir nodos y no poder comunicarse.

node-poolResérvese para un requisito que se refiera específicamente a la capacidad de los nodos. Si su objetivo es separar los entornos entre sí, es más sencillo asignarles diferentes subredes y separa el clúster de los nodos.

Lo que un clúster compartido no separa

Comprenda estos límites antes de colocar entornos con diferentes requisitos de seguridad o cumplimiento en el mismo clúster. Cada uno de ellos es consecuencia de que los entornos comparten un clúster, y cada uno de ellos se elimina asignando a los entornos diferentes subredes para que Elastic Beanstalk cree clústeres independientes.

  • El tráfico saliente no está restringido. La separación predeterminada bloquea el tráfico que llega a un entorno. No restringe los lugares a los que la aplicación de un entorno puede enviar tráfico. Una aplicación puede llegar a cualquier destino que su configuración de red y sus permisos de IAM permitan, incluidos Internet y otros AWS servicios. No hay ninguna opción que restrinja el tráfico saliente desde un entorno de Beanstalk Cluster.

  • El plano de control del clúster es compartido. Todos los entornos del clúster cuentan con un plano de control de Amazon EKS y su versión de Kubernetes es fija durante toda la vida útil del clúster. Elastic Beanstalk opera el plano de control y usted no lo configura, pero no se duplica por entorno.

  • Los nodos se comparten a menos que configure nodos dedicados. Sin node-pool ellas, las réplicas de aplicaciones de diferentes entornos se ejecutan en los mismos nodos y utilizan la misma CPU y memoria. Elastic Beanstalk no reserva capacidad de nodos por entorno.

  • Cluster-wide las fallas afectan a todos los entornos del clúster. Si Elastic Beanstalk deja de administrar un clúster porque su infraestructura ya no coincide con la configuración esperada, las actualizaciones fallan en todos los entornos de ese clúster hasta que se resuelva el problema. La recuperación se realiza por clúster y no por entorno: si se revierte el cambio que la provocó, Elastic Beanstalk reanudará la administración del clúster y de todos sus entornos. Consulte Deriva de configuración del clúster.

Application-level las protecciones son su responsabilidad en cualquiera de los dos límites. La separación de redes entre entornos no autentica a las personas que llaman, no cifra el tráfico entre entornos ni restringe lo que hace una aplicación con las credenciales que contiene. Asigne a cada entorno su propia función de aplicación para que sus AWS permisos se limiten a él y trate el tráfico permitido entre entornos como el tráfico que su aplicación aún debe autorizar. Consulte Permisos de aplicación.

Hacer coincidir un requisito con un control

Requisito Controlar
Los entornos no deben compartir la infraestructura Créelos con diferentes conjuntos de subredes, de modo que Elastic Beanstalk cree un clúster independiente para cada una. Decida esto antes de crear los entornos; no podrá cambiar las subredes después.
Los entornos no deben comunicarse entre sí a través de la red Sin configuración. Es el valor predeterminado en un clúster compartido.
Un conjunto de entornos debe llamarse entre sí ingress-groupsEstablezca el mismo nombre de grupo en cada uno de ellos.
Un entorno debe aceptar llamadas de otros entornos específicos, pero no al revés Configureingress-allowlist-environments, oingress-allowlist-groups, en el entorno que recibe el tráfico.
Las réplicas de aplicaciones de un entorno no deben compartir nodos con otros entornos node-poolEstablézcalo en un valor que no utilice ningún otro entorno.
El tráfico saliente de un entorno debe estar restringido No está disponible mediante una opción de configuración. Restrínjalo en la aplicación o mediante la configuración de red de las subredes que asigne al entorno.