El aislamiento de servicios se refiere a la separación de cargas de trabajo, usuarios y datos entre diferentes inquilinos dentro de una infraestructura de nube compartida. En un entorno multiarrendatario, varios clientes o equipos internos ejecutan cargas de trabajo en la misma plataforma subyacente. Sin un aislamiento adecuado, corren el riesgo de sufrir fugas de datos, violaciones de la seguridad, degradación del rendimiento e incumplimiento de la normativa.
El aislamiento eficaz de los servicios abarca varias capas. A nivel informático, los equipos suelen utilizar espacios de nombres Kubernetes, máquinas virtuales o grupos de nodos dedicados para garantizar que las cargas de trabajo no interfieran entre sí. El aislamiento de la red implica la imposición de límites de comunicación estrictos mediante tecnologías como nubes privadas virtuales, políticas de cortafuegos y mallas de servicios para impedir el tráfico no autorizado entre inquilinos. El aislamiento del almacenamiento garantiza que los datos de cada inquilino permanezcan inaccesibles para los demás, normalmente mediante cubos o volúmenes separados, fuertes controles de acceso y cifrado específico para cada inquilino. El aislamiento de la identidad también desempeña un papel crucial, ya que utiliza el control de acceso basado en funciones, proveedores de identidad federados y registros de auditoría de los inquilinos para aplicar los permisos adecuados.
Un ejemplo práctico de esto puede verse en Kubernetes. A cada inquilino se le asigna un espacio de nombres único, con cuotas de recursos y políticas de red claramente definidas. El acceso se restringe mediante RBAC en el espacio de nombres, mientras que los registros y las copias de seguridad se gestionan de forma independiente por inquilino. Este enfoque garantiza tanto la eficiencia operativa como la seguridad a escala.
apiVersion: v1
kind: Namespace
metadata:
name: tenant-alpha
labels:
tenant: alpha
---
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: deny-cross-tenant
namespace: tenant-alpha
spec:
podSelector: {}
policyTypes:
- Ingress
- Egress
ingress: []
egress: []