Les groupes de sécurité agissent comme des pare-feu virtuels pour les pods exécutés en tant qu'Elastic Container Instances (ECI) dans Container Service for Kubernetes (ACK). Ils utilisent l'inspection avec état des paquets (SPI) et le filtrage des paquets pour contrôler le trafic entrant et sortant au niveau du pod. Vous pouvez utiliser les groupes de sécurité pour définir des domaines de sécurité dans le cloud.
S'applique à : clusters ACK avec Virtual Node (Virtual Kubelet) activé
Avant de commencer
Avant d'assigner des groupes de sécurité, vérifiez que vous disposez des éléments suivants :
Un cluster ACK avec le composant Virtual Node (Virtual Kubelet) installé
Au moins un groupe de sécurité créé dans le même Virtual Private Cloud (VPC) que votre cluster. Pour en créer un, consultez Créer un groupe de sécurité
Virtual Kubelet v2.0.0.90-15deb126e-aliyun ou version ultérieure, si vous souhaitez que les modifications de configuration au niveau du cluster s'appliquent sans redémarrer les pods (mise à jour à chaud). Pour vérifier votre version et la mettre à niveau si nécessaire, consultez les notes de version de Virtual Kubelet
Limites
Examinez ces contraintes avant de poursuivre :
| Contrainte | Détail |
|---|---|
| Adhésion requise | Chaque Elastic Container Instance doit appartenir à un groupe de sécurité. |
| Immuabilité | Les groupes de sécurité ne peuvent pas être modifiés sur un pod en cours d'exécution. Pour déplacer un pod vers un autre groupe de sécurité, créez un pod identique dans ce groupe de sécurité. |
| Limite au niveau du pod | Un pod peut appartenir à cinq groupes de sécurité maximum. |
| Même VPC | Tous les groupes de sécurité assignés à un pod doivent se trouver dans le même VPC. |
| Même type | Tous les groupes de sécurité assignés à un pod doivent être du même type : soit tous des groupes de sécurité basiques, soit tous des groupes de sécurité avancés. |
| Moment de l'annotation | L'annotation k8s.aliyun.com/eci-security-group prend effet uniquement lors de la création d'un pod. L'ajout ou la modification de l'annotation sur un pod existant n'a aucun effet. |
Types de groupes de sécurité
ECI prend en charge deux types de groupes de sécurité :
| Type | Description | Recommandé lorsque |
|---|---|---|
| Groupe de sécurité basique | Groupe de sécurité standard avec contrôle du trafic basé sur des règles | Charges de travail générales |
| Groupe de sécurité avancé | Capacité d'instance plus élevée, gestion simplifiée des règles | Déploiements ECI à grande échelle nécessitant une efficacité opérationnelle élevée |
Toutes les instances d'un groupe de sécurité se font mutuellement confiance et sont protégées par les mêmes règles de groupe de sécurité. Les règles de groupe de sécurité contrôlent l'accès à Internet ou au réseau interne pour les Elastic Container Instances du groupe de sécurité.
Pour une comparaison détaillée, consultez Groupes de sécurité basiques et groupes de sécurité avancés.
Assigner un groupe de sécurité au niveau du cluster
Par défaut, tous les pods basés sur ECI dans un cluster ACK utilisent le groupe de sécurité spécifié dans le ConfigMap eci-profile. Pour modifier le groupe de sécurité par défaut pour tous les pods du cluster, modifiez ce ConfigMap.
-
Ouvrez le ConfigMap
eci-profilepour le modifier :kubectl edit configmap eci-profile -n kube-system -
Mettez à jour
securityGroupIddans la sectiondataavec l'ID de votre groupe de sécurité. Un seul ID de groupe de sécurité est pris en charge au niveau du cluster.data: enableClusterIp: "true" enableHybridMode: "false" enablePrivateZone: "false" resourceGroupId: "" securityGroupId: sg-2ze0b9o8pjjzts4h**** # Specify a single security group ID. selectors: "" vSwitchIds: vsw-2zeet2ksvw7f14ryz****,vsw-2ze94pjtfuj9vaymf**** vpcId: vpc-2zeghwzptn5zii0w7**** Enregistrez le fichier. Si Virtual Kubelet est en version v2.0.0.90-15deb126e-aliyun ou ultérieure, la modification prend effet immédiatement sans redémarrer les pods existants.
Assigner des groupes de sécurité à un pod spécifique
Pour remplacer la valeur par défaut au niveau du cluster pour des pods individuels, ajoutez l'annotation k8s.aliyun.com/eci-security-group à la spécification du pod. Cette approche est utile lorsque des charges de travail spécifiques nécessitent des politiques réseau plus strictes ou plus permissives.
Ajoutez les annotations dans spec.template.metadata pour les Deployments, et non dans les metadata de niveau supérieur. Les annotations prennent effet uniquement au moment de la création du pod.
L'exemple suivant assigne deux groupes de sécurité à tous les pods créés par le Deployment test :
apiVersion: apps/v1
kind: Deployment
metadata:
name: test
labels:
app: test
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
name: nginx-test
labels:
app: nginx
alibabacloud.com/eci: "true"
annotations:
k8s.aliyun.com/eci-security-group: "sg-bp1dktddjsg5nktv****,sg-2ze0b9o8pjjzts4h****" # Up to 5 IDs, comma-separated.
spec:
containers:
- name: nginx
image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
ports:
- containerPort: 80
Ajouter une règle de groupe de sécurité
Les règles de groupe de sécurité contrôlent le trafic pouvant atteindre vos pods. Cas d'utilisation courants :
Activer la communication entre groupes de sécurité : Ajoutez une règle de groupe de sécurité pour autoriser le trafic provenant d'un service extérieur au groupe de sécurité du pod.
Bloquer les sources malveillantes : Ajoutez une règle de groupe de sécurité pour bloquer l'accès depuis des sources lorsque des attaques sont détectées.
Pour ajouter une règle, consultez Ajouter une règle de groupe de sécurité.
Étapes suivantes
Présentation des groupes de sécurité — Découvrez le fonctionnement des groupes de sécurité et l'évaluation des règles
Groupes de sécurité basiques et groupes de sécurité avancés — Comparez les deux types pour choisir celui qui convient à votre charge de travail