Configurer le renforcement du plan de données Kubernetes dans Defender for Cloud

Le renforcement du plan de données Kubernetes permet d’appliquer des configurations sécurisées pour les charges de travail exécutées dans votre cluster, telles que la restriction des conteneurs privilégiés, l’application des limites de ressources et la limitation de l’accès réseau.

Dans Microsoft Defender for Cloud, le renforcement du plan de données est implémenté à l’aide de Azure Policy pour que Kubernetes évalue et applique ces configurations. Azure Policy est déployé dans le cadre de Defender pour les conteneurs lorsque l’approvisionnement automatique est activé.

Si Azure Policy pour Kubernetes est désactivé dans les paramètres de plan Defender pour conteneurs, vous pouvez le déployer en corrigeant la recommandation appropriée. Vous pouvez également déployer Azure Policy manuellement à l’aide de Azure CLI ou Helm si vous avez désactivé l’approvisionnement automatique pendant l’activation ou exclu des clusters spécifiques de l’approvisionnement automatique.

Une fois Azure Policy pour Kubernetes déployée, Defender for Cloud génère des recommandations de renforcement du plan de données en fonction de la configuration de votre cluster. Cette page montre comment passer en revue ces recommandations, configurer des paramètres de stratégie et les appliquer à vos clusters.

Prérequis

Pour commencer, assurez-vous que :

Activer Azure Policy pour Kubernetes en corrigeant les recommandations

Si Azure Policy pour Kubernetes n'est pas déployé ou a été désactivé dans les paramètres du plan Defender pour conteneurs, vous pouvez l'installer en corrigeant la recommandation appropriée dans Defender for Cloud.

  1. Connectez-vous au portail Azure.

  2. Accédez à Microsoft Defender for Cloud>Recommendations.

  3. Recherchez la recommandation appropriée :

    • Azure : Azure Kubernetes Service clusters doivent avoir le module complémentaire Azure Policy pour Kubernetes installé
    • GCP : les clusters GKE doivent avoir installé l’extension Azure Policy
    • Azure Arc-enabled Kubernetes : Les clusters Kubernetes Azure Arc-enabled doivent avoir l’extension Azure Policy installée

    Capture d'écran affichant la recommandation des clusters du service Azure Kubernetes.

  4. Sélectionnez une recommandation.

  5. Dans l’onglet Effectuer une action , sélectionnez Corriger.

    Capture d’écran d’une recommandation avec le bouton Corriger mis en surbrillance.

  6. Sélectionnez Correctif pour corriger les ressources sélectionnées.

  7. Répétez chaque recommandation.

Recommandations de renforcement du plan de données

Après avoir déployé Azure Policy pour Kubernetes, Defender for Cloud évalue la configuration de votre cluster et génère des recommandations de renforcement du plan de données. Ce processus peut prendre jusqu’à 30 minutes.

Remarque

Les composants Microsoft, tels que le capteur Defender, sont déployés par défaut dans l'espace de noms kube-system et ne sont pas marqués comme non conformes. Les composants tiers installés dans d’autres espaces de noms peuvent être marqués d’un indicateur. Pour exclure des espaces de noms spécifiques, configurez les exclusions de stratégie Azure.

Le tableau suivant répertorie les recommandations courantes de renforcement du plan de données :

Nom de la recommandation Contrôle de sécurité Configuration requise
Les limites de mémoire et du processeur du conteneur doivent être appliquées Protéger les applications contre les attaques DDoS Oui
Les images de conteneur doivent être déployées à partir de registres approuvés uniquement. Corriger les vulnérabilités Oui
Les fonctionnalités Linux à privilèges minimum doivent être appliquées pour les conteneurs Gérer l’accès et les autorisations Oui
Les conteneurs doivent uniquement utiliser des profils AppArmor autorisés Corriger les configurations de sécurité Oui
Les services doivent écouter uniquement sur les ports autorisés Restreindre l’accès réseau non autorisé Oui
L’utilisation du réseau hôte et des ports doit être limitée Restreindre l’accès réseau non autorisé Oui
L’utilisation des montages de volume HostPath de pad doit être limitée à une liste connue Gérer l’accès et les autorisations Oui
Tout conteneur avec une élévation des privilèges doit être évité Gérer l’accès et les autorisations Non
Éviter les conteneurs partageant des espaces de noms d’hôte sensibles Gérer l’accès et les autorisations Non
Le système de fichiers racine immuable (en lecture seule) doit être appliqué pour les conteneurs Gérer l’accès et les autorisations Non
Les clusters Kubernetes doivent être accessibles uniquement par le biais de HTTPS Chiffrer les données en transit Non
Les clusters Kubernetes doivent désactiver le montage automatique des informations d’identification d’API Gérer l’accès et les autorisations Non
Les clusters Kubernetes ne doivent pas utiliser l’espace de noms par défaut Implémenter les bonnes pratiques de sécurité Non
Les clusters Kubernetes ne doivent pas accorder les capacités CAP_SYS_ADMIN Gérer l’accès et les autorisations Non
Les conteneurs privilégiés doivent être évités Gérer l’accès et les autorisations Non
L’exécution des conteneurs en tant qu’utilisateur racine doit être évitée Gérer l’accès et les autorisations Non

Afficher les recommandations d’un cluster

Pour afficher les recommandations de renforcement du plan de données pour un cluster spécifique :

  1. Connectez-vous au portail Azure.

  2. Accédez à Defender for Cloud>Inventory.

  3. Définissez le filtre de type de ressource sur Le service Kubernetes , puis sélectionnez Appliquer.

    Capture d’écran de l’utilisation du filtre de type de ressource pour sélectionner le service Kubernetes.

  4. Sélectionnez le cluster approprié.

  5. Passez en revue les recommandations disponibles. Les recommandations de renforcement du plan de données montrent le nombre de composants Kubernetes affectés.

  6. Sélectionnez une recommandation pour afficher les ressources affectées.

    Capture d’écran de la sélection d’une recommandation dans la page État de santé des ressources.

  7. Sélectionnez l’onglet Effectuer une action pour passer en revue les options de correction.

    Capture d’écran de l’onglet Effectuer une action, utilisée pour afficher les étapes de correction d’une recommandation.

Configurer les paramètres de stratégie

Certaines recommandations nécessitent que la configuration des paramètres soit efficace. Par exemple, la recommandation selon laquelle les images de conteneur doivent être déployées uniquement à partir de registres de confiance vous oblige à définir une liste de registres de confiance.

Si les paramètres requis ne sont pas configurés, les ressources sont affichées comme non saines.

Pour configurer les paramètres de stratégie :

  1. Connectez-vous au portail Azure.

  2. Accédez aux paramètres Microsoft Defender for Cloud>Environment.

  3. Sélectionnez l’abonnement approprié.

  4. Sélectionnez Stratégies de sécurité.

    Capture d’écran de la page Stratégies de sécurité.

  5. Sous l’onglet Normes , sélectionnez la norme de sécurité appropriée.

  6. Sélectionnez le menu 3 points de l’attribution de stratégie appropriée, puis sélectionnez Gérer l’effet et les paramètres.

    Capture d’écran de la sélection du menu à 3 points, puis de la sélection de l’effet et des paramètres Gérer.

  7. Mettez à jour les valeurs de paramètre requises.

    Capture d’écran du panneau paramètres.

  8. Sélectionnez Enregistrer.

Appliquer des stratégies de renforcement du data plane

Par défaut, les stratégies évaluent les ressources en mode audit. Pour appliquer une stratégie, définissez son effet sur Refuser.

Pour appliquer une recommandation :

  1. Connectez-vous au portail Azure.

  2. Accédez à Microsoft Defender for Cloud>Recommendations.

  3. Recherchez et sélectionnez la recommandation de renforcement du plan de données appropriée.

  4. Sous l’onglet Effectuer une action , sélectionnez Refuser.

    Screenshot affichant l’option Refuser pour Azure Policy parameter.

  5. Définissez l’étendue.

  6. Sélectionnez Modifier pour refuser.

Mise en œuvre de la stratégie de test

Vous pouvez valider les stratégies de renforcement du plan de données en déployant des charges de travail de test.

  • Déploiement conforme qui répond aux exigences de renforcement du plan de données
  • Déploiement non conforme qui enfreint plusieurs stratégies

Déployez les exemples de fichiers YAML suivants pour vérifier que les charges de travail conformes sont déployées avec succès et que les charges de travail non conformes sont marquées ou bloquées, en fonction des paramètres d’application de stratégie.

Exemple de déploiement conforme

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

Exemple de déploiement non conforme

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