Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cette page explique comment utiliser l'ensemble de recommandations de sécurité de Microsoft Defender for Cloud dédiées au renforcement du plan de données Kubernetes.
Conseil
Pour obtenir la liste des recommandations de sécurité susceptibles d’apparaître pour les clusters et nœuds Kubernetes, passez en revue les recommandations de conteneur.
Configurer la protection de votre charge de travail
Microsoft Defender for Cloud inclut un ensemble de recommandations disponibles une fois que vous avez installé le Azure Policy pour Kubernetes.
Prérequis
- Ajoutez les règles de nom de domaine complet requises et les règles d'application pour la politique Azure.
- (Pour les clusters non AKS) Connecter un cluster Kubernetes existant à Azure Arc.
Activer la sécurisation renforcée des plans de données Kubernetes
Vous pouvez activer le Azure Policy pour Kubernetes de deux façons :
- Activez pour tous les clusters actuels et futurs à l’aide des paramètres de plan/connecteur :
- Deploy Azure Policy for Kubernetes sur des clusters existants
Activer Azure Policy pour Kubernetes pour tous les clusters actuels et futurs à l’aide des paramètres de plan/connecteur
Remarque
Lorsque vous activez ce paramètre, les Azure Policy pour les pods 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.
Remarque
L’activation pour AWS via le connecteur n’est pas prise en charge en raison d’une limitation dans EKS qui nécessite que l’administrateur du cluster ajoute des autorisations pour un nouveau rôle IAM sur le cluster lui-même.
Activer pour les abonnements Azure ou en local
Lorsque vous activez Microsoft Defender pour les conteneurs, le paramètre « Azure Policy pour Kubernetes » est activé par défaut pour le Azure Kubernetes Service et pour les clusters Kubernetes compatibles 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 » dans le plan de conteneurs, vous pouvez suivre les étapes à suivre pour l’activer sur tous les clusters de votre abonnement :
Connectez-vous au portail Azure.
Accédez à Microsoft Defender for Cloud>Management>Environment settings.
Sélectionnez l’abonnement approprié.
Sur la page des plans Defender, vérifiez que l’option Conteneurs est sur On.
Sélectionnez Paramètres.
Dans la page Paramètres et Surveillance, basculez la Azure Policy pour Kubernetes sur Activé.
Activer pour les projets GCP
Lorsque vous activez Microsoft Defender pour conteneurs sur un connecteur GCP, le paramètre « extension Azure Policy pour Azure Arc » est activé par défaut pour le moteur Google Kubernetes 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 « Azure Policy Extension 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 les 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, l’intégration à grande échelle à l’aide du connecteur n’est pas prise en charge. Toutefois, vous pouvez installer Azure Policy pour Kubernetes sur tous les clusters existants ou sur des clusters spécifiques à l’aide de la recommandation Azure Arc-enabled Kubernetes clusters should have the Azure policy extension for Kubernetes extension installed.
Pour déployer la Azure Policy pour Kubernetes sur des clusters spécifiés :
Connectez-vous au portail Azure.
Accédez à Microsoft Defender for Cloud>General>Recommendations.
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 local -
"Azure Arc-enabled Kubernetes clusters should have the Azure policy extension for Kubernetes extension installed".
-
Azure -
Sélectionnez une recommandation trouvée.
Sélectionnez Corriger.
Répétez chaque recommandation supplémentaire.
Afficher et configurer le bundle de recommandations
Environ 30 minutes après la fin de l’installation de Kubernetes Azure Policy, Defender for Cloud affiche l’état d’intégrité des clusters pour les recommandations suivantes, chacun dans le contrôle de sécurité approprié, comme indiqué :
Remarque
Si vous installez le Azure Policy pour Kubernetes pour la première fois, ces recommandations apparaissent comme 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 bénéficier de la recommandation Seules les images de conteneur provenant de registres approuvés doivent être déployées, vous devez définir vos registres approuvés. 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 sont déployés par défaut dans l’espace de noms kube-system. Cette configuration garantit qu’elles ne sont pas marquées comme non conformes dans les recommandations de plan de données. Toutefois, les outils fournisseurs tiers installés dans un autre espace de noms peuvent être marqués comme non conformes. 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 de conteneur doivent être déployées uniquement à partir de registres approuvés. | 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 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 :
Connectez-vous au portail Azure.
Accédez à Microsoft Defender for Cloud>Management>Environment settings.
Sélectionnez l’abonnement approprié.
Dans le menu de navigation, sélectionnez Stratégies de sécurité.
Sous l’onglet Normes , recherchez la norme de sécurité appropriée.
Sélectionnez le menu 3 points de la norme de sécurité, puis sélectionnez Gérer.
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.
Modifiez les valeurs en fonction des besoins.
Sélectionnez Enregistrer.
Pour appliquer les recommandations :
Ouvrez la page Détails de la recommandation et sélectionnez Refuser :
Le volet permettant de définir l’étendue s’ouvre.
Définissez l’étendue et sélectionnez Modifier pour refuser.
Pour voir quelles recommandations s’appliquent à vos clusters :
Connectez-vous au portail Azure.
Accédez à Defender for Cloud>Inventory.
Définissez le filtre de type de ressource sur les services Kubernetes , puis sélectionnez Appliquer.
Sélectionnez un cluster à examiner.
Examinez les recommandations disponibles. Lorsque vous consultez une recommandation de l’ensemble de protection de la charge de travail, le nombre de pods affectés (« composants Kubernetes ») est indiqué avec le cluster.
Facultatif : pour obtenir la liste des pods spécifiques, sélectionnez la recommandation.
puis sélectionnez Effectuer une action.
Pour tester l'application des règles, 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 :