Je souhaite configurer un groupe de sécurité pour mes pods AWS Fargate dans mon cluster Amazon Elastic Kubernetes Service (Amazon EKS). Je souhaite utiliser le groupe de sécurité pour contrôler le trafic réseau entrant et sortant.
Brève description
Vous pouvez utiliser des groupes de sécurité pour des pods individuels afin d'associer vos groupes de sécurité Amazon Elastic Compute Cloud (Amazon EC2) personnalisés à vos pods Fargate dans votre cluster Amazon EKS. Ces groupes de sécurité attachés limitent le trafic réseau entrant et sortant à destination et en provenance des pods Fargate.
Par défaut, les pods Fargate sont automatiquement configurés pour utiliser le groupe de sécurité du cluster afin de communiquer avec le plan de contrôle Kubernetes. Vous pouvez utiliser des groupes de sécurité pour configurer des règles pour le trafic réseau entrant et sortant à destination et en provenance des pods Fargate.
Les groupes de sécurité que vous spécifiez pour vos pods Fargate doivent répondre aux critères suivants :
- Ils doivent disposer de règles permettant aux pods de communiquer avec le plan de contrôle Kubernetes. Assurez-vous de spécifier le groupe de sécurité du cluster comme l'un des groupes de sécurité.
- Ils doivent disposer des règles entrantes et sortantes nécessaires pour communiquer avec d'autres pods ou points de terminaison. Par exemple, ils doivent disposer d'une règle sortante vers les pods CoreDNS dotés d'un port TCP/UDP 53 pour la résolution du nom.
Résolution
Pour appliquer des groupes de sécurité à vos pods Fargate, procédez comme suit :
-
Déployez une politique de groupe de sécurité Amazon EKS sur votre cluster.
Exemple :
apiVersion: vpcresources.k8s.aws/v1beta1
kind: SecurityGroupPolicy
metadata:
name: my-security-group-policy
namespace: my-namespace
spec:
podSelector:
matchLabels:
role: my-role
securityGroups:
groupIds:
- my_pod_security_group_id
Remarque : Remplacez my-security-group-policy, my-namespace, my-role et my-pod-security-group-id par les valeurs de votre configuration. Vous pouvez utiliser serviceAccountSelector à la place de podSelector.
-
Déployez votre application avec une étiquette correspondant à SecurityGroupPolicy.
Exemple :
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deployment
namespace: my-namespace
labels:
app: my-app
spec:
replicas: 4
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
role: my-role
spec:
terminationGracePeriodSeconds: 120
containers:
- name: nginx
image: public.ecr.aws/nginx/nginx:1.23
ports:
- containerPort: 80
-
Vérifiez que vos pods utilisent les groupes de sécurité des pods. Si tel est le cas, fargate.amazonaws.com/pod-sg est inclus dans l'annotation. Exécutez la commande suivante :
kubectl describe pod pod name -n <namespace> | grep fargate.amazonaws.com/pod-sg
fargate.amazonaws.com/pod-sg: my_pod_security_group_id,...
Remarque : Remplacez pod-name par le nom de votre pod, et my_pod_security_group_id par l'ID du groupe de sécurité de votre pod.
Informations connexes
Présentation des groupes de sécurité pour les pods