Partager via


Protéger la sécurisation renforcée de vos plans de données Kubernetes

Cette page explique comment utiliser l’ensemble de recommandations de sécurité de Microsoft Defender pour le cloud dédiées à la sécurisation renforcée des plans de données Kubernetes.

Conseil

Pour obtenir la liste des recommandations de sécurité qui peuvent apparaître pour les clusters et les nœuds Kubernetes, passez en revue les recommandations relatives aux conteneurs.

Configurer la protection de votre charge de travail

Microsoft Defender pour le cloud comprend un ensemble de recommandations qui sont disponibles lorsque vous installez Azure Policy pour Kubernetes.

Prérequis

Activer la sécurisation renforcée des plans de données Kubernetes

Vous pouvez activer Azure Policy pour Kubernetes de deux façons :

Activer Azure Policy for Kubernetes pour tous les clusters actuels et futurs à l’aide des paramètres de plan/connecteur

Remarque

Lorsque vous activez ce paramètre, les pods Azure Policy pour Kubernetes sont installés sur le cluster. Cette opération alloue un petit volume du processeur et de la mémoire pour les pods à utiliser. Il est possible que cette allocation puisse atteindre la capacité maximale, mais elle n’affecte pas le reste du processeur et de la mémoire sur la ressource.

Notes

L’activation pour AWS via le connecteur n’est pas prise en charge en raison d’une limitation dans EKS qui oblige l’administrateur de cluster à ajouter des autorisations pour un nouveau rôle IAM sur le cluster lui-même.

Activation pour les abonnements Azure ou localement

Lorsque vous activez Microsoft Defender pour les conteneurs, le paramètre « Azure Policy pour Kubernetes » est activé par défaut pour Azure Kubernetes Service et pour les clusters Kubernetes avec Azure Arc dans l’abonnement approprié. Si vous désactivez le paramètre lors de la configuration initiale, vous pouvez l’activer manuellement par la suite.

Si vous avez désactivé les paramètres « Azure Policy pour Kubernetes » sous le plan de conteneurs, vous pouvez suivre les étapes ci-dessous pour l’activer sur tous les clusters de votre abonnement :

  1. Connectez-vous au portail Azure.

  2. Accédez à Microsoft Defender pour le cloud>Paramètres d’environnement.

  3. Sélectionnez l’abonnement approprié.

  4. Sur la page des plans Defender, vérifiez que l’option Conteneurs est activée.

  5. Sélectionnez Paramètres.

    Capture d’écran du bouton Paramètres dans le plan Defender.

  6. Dans la page Surveillance et Paramètres, sélectionnez « Azure Policy pour Kubernetes » sur Activé.

    Capture d’écran montrant les boutons à bascule utilisés pour activer ou désactiver les extensions.

Activation pour les projets GCP

Lorsque vous activez Microsoft Defender pour les conteneurs sur un connecteur GCP, le paramètre « extension Azure Policy pour Azure Arc » est activé par défaut pour Google Kubernetes Engine dans le projet approprié. Si vous désactivez le paramètre lors de la configuration initiale, vous pouvez l’activer manuellement par la suite.

Si vous avez désactivé les paramètres « extension Azure Policy pour Azure Arc » sous le connecteur GCP, vous pouvez suivre les étapes ci-dessous pour l’activer sur votre connecteur GCP.

Déployer Azure Policy pour Kubernetes sur des clusters existants

Vous pouvez configurer manuellement Azure Policy pour Kubernetes sur des clusters Kubernetes existants via la page Recommandations. Une fois activée, les recommandations de renforcement deviennent disponibles (certaines recommandations nécessitent une autre configuration pour fonctionner).

Remarque

Pour AWS, il n’est pas possible d’effectuer l’intégration à grande échelle à l’aide du connecteur, mais son installation est possible sur tous les clusters ou sur des clusters spécifiques à l’aide de la recommandation Les clusters Kubernetes avec Azure Arc doivent avoir l’extension de stratégie Azure pour Kubernetes installée.

Pour déployer Azure Policy pour Kubernetes sur des clusters spécifiés :

  1. Sur la page des recommandations, recherchez la recommandation appropriée :

    • 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 et localement - "Azure Arc-enabled Kubernetes clusters should have the Azure policy extension for Kubernetes extension installed". Capture d’écran de la recommandation de clusters du service Azure Kubernetes.

      Conseil

      La recommandation est incluse dans des contrôles de sécurité différents, et celui que vous sélectionnez à l’étape suivante est sans importance.

  2. À partir de l’un des contrôles de sécurité, sélectionnez la recommandation pour afficher les ressources sur lesquelles vous pouvez installer le module complémentaire.

  3. Sélectionnez le cluster approprié, puis Corriger.

    Capture d’écran qui montre comment sélectionner le cluster à corriger.

Afficher et configurer le bundle de recommandations

Environ 30 minutes après l’installation d’Azure Policy pour Kubernetes, Defender pour le cloud affiche l’état d’intégrité des clusters pour les recommandations suivantes, chacune dans le contrôle de sécurité approprié, comme illustré :

Remarque

Si vous installez Azure Policy pour Kubernetes pour la première fois, ces recommandations s’affichent sous la forme de nouveaux ajouts dans la liste des recommandations.

Conseil

Certaines recommandations ont des paramètres qui doivent être personnalisés via Azure Policy pour les utiliser efficacement. Par exemple, pour tirer parti de la recommandation Les images conteneur doivent être déployées à partir de registres approuvés uniquement, vous devez définir vos registres de confiance. Si vous n’entrez pas les paramètres nécessaires pour les recommandations qui requièrent une configuration, vos charges de travail seront affichées comme défectueuses.

Remarque

Les composants Microsoft tels que le capteur Defender et l’agent Azure Monitor (AMA) sont déployés dans l’espace de noms du système kube par défaut. Cette configuration veille à ce qu’ils ne soient pas marqués comme non conformes dans les suggestions de plan de données. Toutefois, les outils de fournisseurs tiers installés dans un autre espace de noms peuvent être marqués d’un indicateur non conforme. Pour exclure les fournisseurs tiers de ces suggestions, vous pouvez ajouter leur espace de noms à la liste d’exclusions.

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 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 octroyer de fonctionnalités de sécurité CAPSYSADMIN 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

Pour les recommandations avec des paramètres à personnaliser, vous devrez définir les paramètres :

Pour définir les paramètres :

  1. Connectez-vous au portail Azure.

  2. Accédez à Microsoft Defender pour le cloud>Paramètres d’environnement.

  3. Sélectionnez l’abonnement approprié.

  4. Dans le menu de Defender pour le cloud, sélectionnez Stratégie de sécurité.

  5. Sélectionnez l’assignation correspondante. L'assignation par défaut est ASC default.

  6. Ouvrez l’onglet Paramètres et modifiez les valeurs selon vos besoins.

    Capture d’écran montrant où modifier les paramètres de l’une des recommandations du pack de protection et de renforcement du plan de données Kubernetes.

  7. Sélectionnez Vérifier + enregistrer.

  8. Sélectionnez Enregistrer.

Pour appliquer les recommandations :

  1. Ouvrez la page Détails de la recommandation et sélectionnez Refuser :

    Capture d’écran de l’Option « Refuser » pour le paramètre Azure Policy.

    Le volet permettant de définir l’étendue s’ouvre.

  2. Définissez l’étendue et sélectionnez Modifier pour refuser.

Pour voir quelles recommandations s’appliquent à vos clusters :

  1. Ouvrez la page d’inventaire des ressources Defender pour le cloud et utilisez le filtre de type de ressource sur Services Kubernetes.

  2. Sélectionnez un cluster à examiner et passez en revue les recommandations disponibles pour celui-ci.

Lorsque vous affichez une recommandation de l’ensemble de protection de la charge de travail, vous voyez le nombre de pods affectés (« composants Kubernetes ») avec le cluster. Pour obtenir la liste des pods spécifiques, sélectionnez le cluster, puis Effectuer une action.

Capture d’écran montrant où seront affichés les pods affectés pour une recommandation Kubernetes.

Pour tester l’application, utilisez les deux déploiements Kubernetes ci-dessous :

  • L’une est pour un déploiement sain, conforme au lot de recommandations de protection de la charge de travail.

  • L’autre est pour un déploiement défectueux, non conforme avec n’importe laquelle des recommandations.

Déployez les fichiers d’exemple .yaml tels quels ou utilisez-les comme référence pour corriger votre propre charge de travail.

Exemple de fichier .yaml de déploiement sain

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 fichier .yaml de déploiement défectueux

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

Étapes suivantes

Dans cet article, vous avez découvert comment configurer la sécurisation renforcée des plans de données Kubernetes.

Pour obtenir des informations connexes, consultez les pages suivantes :