Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La protección del plano de datos de Kubernetes ayuda a aplicar configuraciones seguras para cargas de trabajo que se ejecutan en el clúster, como restringir contenedores con privilegios, aplicar límites de recursos y limitar el acceso a la red.
En Microsoft Defender para la nube, la protección del plano de datos se implementa mediante Azure Policy para que Kubernetes evalúe y aplique estas configuraciones. Azure Policy se implementa como parte de Defender para contenedores cuando se habilita el aprovisionamiento automático.
Si la Azure Policy para Kubernetes está desactivada en la configuración del plan Defender for Containers, puede desplegarlo corrigiendo la recomendación pertinente. También puede implementar Azure Policy manualmente mediante CLI de Azure o Helm si deshabilita el aprovisionamiento automático durante la habilitación o excluye clústeres específicos del aprovisionamiento automático.
Después de implementar Azure Policy para Kubernetes, Defender for Cloud genera recomendaciones de protección del plano de datos en función de la configuración del clúster. En esta página se muestra cómo revisar estas recomendaciones, configurar parámetros de directiva y aplicarlas en los clústeres.
Requisitos previos
Para empezar, asegúrese de que:
Ha agregado las reglas requeridas de FQDN/aplicación para la política de Azure.
(Para clústeres que no son de AKS) El clúster de Kubernetes está conectado a Azure Arc.
Habilitación de Azure Policy para Kubernetes mediante la corrección de recomendaciones
Si no se implementa Azure Policy para Kubernetes o se ha desactivado en la configuración del plan de Defender para contenedores, puede instalarlo mediante la corrección de la recomendación pertinente en Defender for Cloud.
Inicie sesión en el portal Azure.
Vaya a Microsoft Defender para la nube>Recommendations.
Busque la recomendación pertinente:
- Azure: Los clústeres del servicio de Kubernetes de Azure deben tener instalado el complemento de Azure Policy para Kubernetes
- GCP: los clústeres de GKE deben tener instalada la extensión Azure Policy
- AWS/Arc-enabled Kubernetes: Los clústeres de Kubernetes habilitados por Azure Arc deben tener instalada la extensión Azure Policy.
Seleccione una recomendación.
En la pestaña Realizar acción , seleccione Corregir.
Seleccione Corregir para corregir los recursos seleccionados.
Repita para cada recomendación.
Recomendaciones de reforzamiento del plano de datos
Después de implementar Azure Policy para Kubernetes, Defender for Cloud evalúa la configuración del clúster y genera recomendaciones de protección del plano de datos. Este proceso puede tardar hasta 30 minutos.
Nota:
Componentes de Microsoft, como el sensor de Defender, se implementan en el kube-system namespace de forma predeterminada y no están marcados como no cumplidores. Es posible que los componentes de terceros instalados en otros espacios de nombres puedan señalizarse. Para excluir espacios de nombres específicos, configure exclusiones de directivas de Azure.
En la tabla siguiente se enumeran las recomendaciones comunes de endurecimiento del plano de datos.
| Nombre de la recomendación | Control de seguridad | Configuración requerida |
|---|---|---|
| Debe aplicar los límites de CPU y memoria de los contenedores | Protección de aplicaciones contra ataques DDoS | Sí |
| Las imágenes de contenedor solo deben implementarse desde registros de confianza | Corrección de vulnerabilidades | Sí |
| Deben aplicarse funcionalidades de Linux con privilegios mínimos para los contenedores | Administración de acceso y permisos | Sí |
| Los contenedores solo deben usar perfiles de AppArmor permitidos | Corrección de configuraciones de seguridad | Sí |
| Los servicios solo deben escuchar en los puertos permitidos | Restricción de los accesos de red no autorizados | Sí |
| El uso de puertos y redes de hosts debe estar restringido | Restricción de los accesos de red no autorizados | Sí |
| El uso de montajes de volúmenes HostPath de pod debe estar restringido a una lista conocida | Administración de acceso y permisos | Sí |
| Debe evitar los contenedores con elevación de privilegios | Administración de acceso y permisos | No |
| Deben evitarse los contenedores que comparten espacios de nombres de host confidenciales. | Administración de acceso y permisos | No |
| El sistema de archivos raíz inmutable (de solo lectura) debe aplicarse para los contenedores | Administración de acceso y permisos | No |
| Los clústeres de Kubernetes solo deben ser accesibles mediante HTTPS | Cifrado de los datos en tránsito | No |
| Los clústeres de Kubernetes deben deshabilitar las credenciales de la API de montaje automático | Administración de acceso y permisos | No |
| Los clústeres de Kubernetes no deben usar el espacio de nombres predeterminado | Implementación de procedimientos recomendados de seguridad | No |
| Los clústeres de Kubernetes no deben conceder funcionalidades de CAP_SYS_ADMIN | Administración de acceso y permisos | No |
| Deben evitarse los contenedores con privilegios | Administración de acceso y permisos | No |
| Debe evitar la ejecución de contenedores como usuario raíz | Administración de acceso y permisos | No |
Visualización de recomendaciones para un clúster
Para ver las recomendaciones de endurecimiento del plano de datos para un clúster específico:
Inicie sesión en el portal Azure.
Vaya a Defender for Cloud>Inventory.
Establezca el filtro de tipo de recurso en El servicio Kubernetes y seleccione Aplicar.
Seleccione el clúster correspondiente.
Revise las recomendaciones disponibles. Las recomendaciones de fortalecimiento del plano de datos muestran el número de componentes de Kubernetes afectados.
Seleccione una recomendación para ver los recursos afectados.
Seleccione la pestaña Realizar acción para revisar las opciones de corrección.
Configuración de parámetros de directiva
Algunas recomendaciones requieren que la configuración de parámetros sea eficaz. Por ejemplo, la recomendación Las imágenes de contenedor deben ser implementadas solo desde registros de confianza requiere que defina una lista de registros de confianza.
Si los parámetros requeridos no están configurados, los recursos se muestran como no saludables.
Para configurar parámetros de directiva:
Inicie sesión en el portal Azure.
Vaya a Microsoft Defender para la nube>Configuración del entorno.
Seleccione la suscripción correspondiente.
Seleccione Directivas de seguridad.
En la pestaña Estándares , seleccione el estándar de seguridad correspondiente.
Seleccione el menú de 3 puntos de la asignación de directiva pertinente y seleccione Administrar efecto y parámetros.
Actualice los valores de parámetro necesarios.
Seleccione Guardar.
Aplicar políticas de endurecimiento del plano de datos
De forma predeterminada, las directivas evalúan los recursos en modo auditoría. Para aplicar una directiva, establezca su efecto en Denegar.
Para aplicar una recomendación:
Inicie sesión en el portal Azure.
Vaya a Microsoft Defender para la nube>Recommendations.
Busque y seleccione la recomendación de protección del plano de datos pertinente.
En la pestaña Realizar acción , seleccione Denegar.
Establezca el ámbito.
Seleccione Cambiar para denegar.
Aplicación de directivas de prueba
Puede validar las directivas de protección del plano de datos mediante la implementación de cargas de trabajo de prueba.
- Implementación compatible que cumple los requisitos de endurecimiento del plano de control de datos
- Una implementación no conforme que infringe varias directivas
Implemente los siguientes archivos YAML de ejemplo para comprobar que las cargas de trabajo compatibles se implementan correctamente y las cargas de trabajo no compatibles se marcan o bloquean, en función de la configuración de cumplimiento de directivas.
Ejemplo de implementación compatible
apiVersion: apps/v1
kind: Deployment
metadata:
name: redis-healthy-deployment
labels:
app: redis
spec:
replicas: 3
selector:
matchLabels:
app: redis
template:
metadata:
labels:
app: redis
annotations:
container.apparmor.security.beta.kubernetes.io/redis: runtime/default
spec:
containers:
- name: redis
image: <customer-registry>.azurecr.io/redis:latest
ports:
- containerPort: 80
resources:
limits:
cpu: 100m
memory: 250Mi
securityContext:
privileged: false
readOnlyRootFilesystem: true
allowPrivilegeEscalation: false
runAsNonRoot: true
runAsUser: 1000
---
apiVersion: v1
kind: Service
metadata:
name: redis-healthy-service
spec:
type: LoadBalancer
selector:
app: redis
ports:
- port: 80
targetPort: 80
Ejemplo de implementación no compatible
apiVersion: apps/v1
kind: Deployment
metadata:
name: redis-unhealthy-deployment
labels:
app: redis
spec:
replicas: 3
selector:
matchLabels:
app: redis
template:
metadata:
labels:
app: redis
spec:
hostNetwork: true
hostPID: true
hostIPC: true
containers:
- name: redis
image: redis:latest
ports:
- containerPort: 9001
hostPort: 9001
securityContext:
privileged: true
readOnlyRootFilesystem: false
allowPrivilegeEscalation: true
runAsUser: 0
capabilities:
add:
- NET_ADMIN
volumeMounts:
- mountPath: /test-pd
name: test-volume
readOnly: true
volumes:
- name: test-volume
hostPath:
# directory location on host
path: /tmp
---
apiVersion: v1
kind: Service
metadata:
name: redis-unhealthy-service
spec:
type: LoadBalancer
selector:
app: redis
ports:
- port: 6001
targetPort: 9001