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
- Ajouter les règles de nom de domaine complet/application requises pour Azure Policy.
- (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 Azure Policy pour Kubernetes de deux façons :
- Activer pour tous les clusters actuels et futurs à l’aide des paramètres de plan/connecteur
- Déployer Azure Policy pour Kubernetes sur des clusters existants
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.
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 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 :
Connectez-vous au portail Azure.
Accédez à Microsoft Defender pour le cloud>Paramètres d’environnement.
Sélectionnez l’abonnement approprié.
Sur la page des plans Defender, vérifiez que l’option Conteneurs est activée.
Sélectionnez Paramètres.
Dans la page Surveillance et Paramètres, sélectionnez « Azure Policy pour Kubernetes » sur Activé.
Activer 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 :
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"
.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.
À 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.
Sélectionnez le cluster approprié, puis 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 :
Connectez-vous au portail Azure.
Accédez à Microsoft Defender pour le cloud>Paramètres d’environnement.
Sélectionnez l’abonnement approprié.
Dans le menu de Defender pour le cloud, sélectionnez Stratégie de sécurité.
Sélectionnez l’assignation correspondante. L'assignation par défaut est
ASC default
.Ouvrez l’onglet Paramètres et modifiez les valeurs selon vos besoins.
Sélectionnez Vérifier + enregistrer.
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 :
Ouvrez la page d’inventaire des ressources Defender pour le cloud et utilisez le filtre de type de ressource sur Services Kubernetes.
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.
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 :