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.
En esta página se describe cómo usar el conjunto de recomendaciones de seguridad de Microsoft Defender for Cloud dedicadas a la protección del plano de datos de Kubernetes.
Sugerencia
Para obtener una lista de las recomendaciones de seguridad que pueden aparecer para los clústeres y nodos de Kubernetes, revise las recomendaciones de contenedor.
Configuración de la protección de cargas de trabajo
Microsoft Defender for Cloud incluye una agrupación de recomendaciones que están disponibles una vez que haya instalado el Azure Policy para Kubernetes.
Requisitos previos
- Agregue Reglas de aplicación o FQDN obligatorias para Azure Policy.
- (Para clústeres que no son de AKS) Conecte un clúster de Kubernetes existente para Azure Arc.
Habilitación del endurecimiento de planos de datos de Kubernetes
Puede habilitar el Azure Policy para Kubernetes de una de estas dos maneras:
- Habilite esto en todos los clústeres actuales y futuros mediante la configuración del plan o del conector:
- Implementar Azure Policy para Kubernetes en los clústeres existentes
Habilitación de Azure Policy para Kubernetes para todos los clústeres actuales y futuros mediante la configuración del plan o conector
Nota:
Al habilitar esta configuración, el Azure Policy para los pods de Kubernetes se instalan en el clúster. Al hacerlo, se asignará una pequeña cantidad de CPU y de memoria para uso de los pods. Esta asignación puede alcanzar la capacidad máxima, pero no afecta al resto de la CPU o a la memoria del recurso.
Nota:
No se admite la habilitación para AWS a través del conector debido a una limitación en EKS que requiere que el administrador del clúster agregue permisos para un nuevo rol de IAM en el propio clúster.
Habilitar para suscripciones de Azure o en las instalaciones.
Al habilitar Microsoft Defender para contenedores, la configuración "Azure Policy para Kubernetes" está habilitada de forma predeterminada para la Azure Kubernetes Service y para los clústeres de Kubernetes habilitados para Azure Arc en la suscripción correspondiente. Si deshabilita este ajuste en la configuración inicial, podrá habilitarlo después manualmente.
Si deshabilitó la configuración de "Azure Policy para Kubernetes" en el plan de contenedores, puede seguir los pasos que se indican a continuación para habilitarlo en todos los clústeres de la suscripción:
Inicie sesión en el portal Azure.
Vaya a Microsoft Defender for Cloud>Management>Configuración de entorno.
Seleccione la suscripción correspondiente.
En la página Planes de Defender, confirme que el parámetro Contenedores esté Activado.
Seleccione Configuración.
En la página Configuración y supervisión, en Azure Policy para Kubernetes elija la opción Activado.
Habilitar para proyectos de GCP
Al habilitar Microsoft Defender para contenedores en un conector GCP, la opción "Extensión Azure Policy para Azure Arc" se habilita de forma predeterminada para Google Kubernetes Engine en el proyecto pertinente. Si deshabilita este ajuste en la configuración inicial, podrá habilitarlo después manualmente.
Si deshabilitó la configuración de "extensión Azure Policy para Azure Arc" en el conector GCP, puede seguir los pasos siguientes para enablelo en el conector de GCP.
Implementación de Azure Policy para Kubernetes en clústeres existentes
Puede configurar manualmente el Azure Policy para Kubernetes en clústeres de Kubernetes existentes a través de la página Recomendaciones. Una vez habilitadas, las recomendaciones de protección estarán disponibles (algunas de las recomendaciones requieren otra configuración para funcionar).
Nota:
Para AWS, no se admite la incorporación a escala mediante el conector. Sin embargo, puede instalar Azure Policy para Kubernetes en todos los clústeres existentes o en clústeres específicos mediante la recomendación Azure Arc-enabled Kubernetes clusters should have the Azure policy extension for Kubernetes extension installed.
To implementar el Azure Policy para Kubernetes en clústeres especificados:
Inicie sesión en el portal Azure.
Vaya a Microsoft Defender for Cloud>General>Recommendations.
Busque la recomendación pertinente:
-
Azure -
"Azure Kubernetes Service clusters should have the Azure Policy add-on for Kubernetes installed" -
GCP -
"GKE clusters should have the Azure Policy extension". -
AWS y local -
"Azure Arc-enabled Kubernetes clusters should have the Azure policy extension for Kubernetes extension installed".
-
Azure -
Seleccione una recomendación encontrada.
Seleccione Corregir.
Repita para cada recomendación adicional.
Vista y configuración del conjunto de recomendaciones
Aproximadamente 30 minutos después de que se complete la Azure Policy para la instalación de Kubernetes, Defender for Cloud muestra el estado de mantenimiento de los clústeres para las siguientes recomendaciones, cada una de ellas en el control de seguridad pertinente, tal como se muestra:
Nota:
Si va a instalar el Azure Policy para Kubernetes por primera vez, estas recomendaciones aparecen como nuevas adiciones en la lista de recomendaciones.
Sugerencia
Algunas recomendaciones tienen parámetros que se deben personalizar a través de Azure Policy para usarlos de forma eficaz. Por ejemplo, para beneficiarse de la recomendación Las imágenes de contenedor deberán implementarse desde registros de confianza, tendrá que definir sus registros de confianza. Si no especifica los parámetros necesarios para las recomendaciones que requieren configuración, las cargas de trabajo aparecerán como incorrectas.
Nota:
Los componentes de Microsoft, como el sensor de Defender, se implementan en el espacio de nombres kube-system por defecto. Esta configuración garantiza que no están marcadas como no compatibles en las recomendaciones del plano de datos. Sin embargo, las herramientas de proveedor de terceros instaladas en un espacio de nombres diferente podrían marcarse como no compatibles. Para excluir proveedores de terceros de estas recomendaciones, puede agregar su espacio de nombres a la lista de exclusión.
| 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 seguridad CAPSYSADMIN | 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 |
Para las recomendaciones con parámetros que deben personalizarse, es necesario establecer los parámetros:
Para establecer los parámetros:
Inicie sesión en el portal Azure.
Vaya a Microsoft Defender for Cloud>Management>Configuración de entorno.
Seleccione la suscripción correspondiente.
En el menú de navegación, seleccione Directivas de seguridad.
En la pestaña Estándares , busque el estándar de seguridad adecuado.
Seleccione el menú de 3 puntos del estándar de seguridad y seleccione Administrar.
Seleccione el menú de 3 puntos de la asignación de directiva pertinente y seleccione Administrar efecto y parámetros.
Modifique los valores según sea necesario.
Seleccione Guardar.
Para aplicar cualquiera de las recomendaciones:
Abra la página de detalles de recomendaciones y haga clic en Denegar:
Se abre el panel para establecer el ámbito.
Establezca el ámbito y seleccione Cambiar a denegar.
Para ver qué recomendaciones se aplican a los clústeres:
Inicie sesión en el portal Azure.
Vaya a Defender for Cloud>Inventory.
Establezca el filtro de tipo de recurso en servicios de Kubernetes y seleccione Aplicar.
Seleccione un clúster para investigar.
Revise las recomendaciones disponibles para ella. Cuando vea una recomendación de la protección de cargas de trabajo establecida, se mostrará el número de pods afectados ("componentes de Kubernetes") mostrados junto con el clúster.
Opcional: para ver la lista de los pods específicos, seleccione la recomendación.
y, a continuación, seleccione Realizar acción.
Para probar la aplicación, use las dos implementaciones de Kubernetes siguientes:
Una es para una implementación correcta, compatible con el conjunto de recomendaciones de protección de cargas de trabajo.
La otra es para una implementación incorrecta, no compatible con cualquiera de las recomendaciones.
Implemente los archivos .yaml de ejemplo tal cual o úselos como referencia para corregir su propia carga de trabajo.
Archivo .yaml de ejemplo de implementación correcta
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
Archivo .yaml de ejemplo de implementación incorrecta
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
Pasos siguientes
En este artículo, ha aprendido a configurar el endurecimiento de planos de datos de Kubernetes.
Para obtener material relacionado, vea las páginas siguientes: