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.
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 :
Vous avez ajouté les règles FQDN/application obligatoires pour la stratégie Azure.
(Pour les clusters non AKS) Votre cluster Kubernetes est connecté à Azure Arc.
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.
Connectez-vous au portail Azure.
Accédez à Microsoft Defender for Cloud>Recommendations.
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
Sélectionnez une recommandation.
Dans l’onglet Effectuer une action , sélectionnez Corriger.
Sélectionnez Correctif pour corriger les ressources sélectionnées.
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 :
Connectez-vous au portail Azure.
Accédez à Defender for Cloud>Inventory.
Définissez le filtre de type de ressource sur Le service Kubernetes , puis sélectionnez Appliquer.
Sélectionnez le cluster approprié.
Passez en revue les recommandations disponibles. Les recommandations de renforcement du plan de données montrent le nombre de composants Kubernetes affectés.
Sélectionnez une recommandation pour afficher les ressources affectées.
Sélectionnez l’onglet Effectuer une action pour passer en revue les options de correction.
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 :
Connectez-vous au portail Azure.
Accédez aux paramètres Microsoft Defender for Cloud>Environment.
Sélectionnez l’abonnement approprié.
Sélectionnez Stratégies de sécurité.
Sous l’onglet Normes , sélectionnez la norme de sécurité appropriée.
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.
Mettez à jour les valeurs de paramètre requises.
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 :
Connectez-vous au portail Azure.
Accédez à Microsoft Defender for Cloud>Recommendations.
Recherchez et sélectionnez la recommandation de renforcement du plan de données appropriée.
Sous l’onglet Effectuer une action , sélectionnez Refuser.
Définissez l’étendue.
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