La seguretat de xarxa en Kubernetes és un aspecte crític per protegir les aplicacions i dades que s'executen en un clúster. Aquest tema cobreix els conceptes i pràctiques clau per assegurar la comunicació dins del clúster i amb el món exterior.

Conceptes Clau

  1. Polítiques de Xarxa (Network Policies):

    • Les polítiques de xarxa permeten controlar el trànsit de xarxa entre els pods dins del clúster.
    • Es defineixen utilitzant recursos de Kubernetes i poden especificar quins pods poden comunicar-se entre ells.
  2. Seguretat de la Capa de Transport (TLS):

    • L'ús de TLS (Transport Layer Security) és essencial per assegurar la comunicació entre serveis.
    • Kubernetes pot gestionar certificats TLS per a serveis interns i externs.
  3. Ingress Controllers:

    • Els ingress controllers gestionen l'accés extern a serveis dins del clúster.
    • Poden aplicar regles de seguretat com TLS i autenticació.
  4. Firewall i Seguretat de Xarxa:

    • Els firewalls poden ser configurats per protegir el clúster de trànsit no desitjat.
    • Les regles de seguretat de xarxa poden ser aplicades a nivell de nodes i clúster.

Polítiques de Xarxa

Definició de Polítiques de Xarxa

Les polítiques de xarxa es defineixen utilitzant recursos de Kubernetes. Aquí teniu un exemple bàsic d'una política de xarxa que permet el trànsit ingressant només des d'un pod etiquetat com app: frontend:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-frontend
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: backend
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: frontend

Explicació del Codi

  • apiVersion: La versió de l'API de Kubernetes utilitzada per a les polítiques de xarxa.
  • kind: El tipus de recurs, en aquest cas, NetworkPolicy.
  • metadata: Informació sobre la política, incloent el nom i el namespace.
  • spec: La configuració específica de la política.
    • podSelector: Selecciona els pods als quals s'aplica la política.
    • ingress: Defineix les regles de trànsit ingressant.
      • from: Especifica les fonts de trànsit permès.

Exercici Pràctic

Objectiu: Crear una política de xarxa que permeti el trànsit ingressant només des de pods amb l'etiqueta role: database.

  1. Crea un fitxer YAML anomenat network-policy.yaml.
  2. Defineix la política de xarxa com es mostra a continuació:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-database
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: backend
  ingress:
  - from:
    - podSelector:
        matchLabels:
          role: database
  1. Aplica la política de xarxa al clúster:
kubectl apply -f network-policy.yaml

Solució

El fitxer network-policy.yaml hauria de contenir la definició de la política de xarxa com es mostra a l'exemple anterior. Després d'aplicar-lo, només els pods amb l'etiqueta role: database podran enviar trànsit ingressant als pods amb l'etiqueta app: backend.

TLS en Kubernetes

Configuració de TLS

Per configurar TLS en Kubernetes, necessitem crear secrets que continguin els certificats i claus privades. Aquí teniu un exemple de com crear un secret TLS:

kubectl create secret tls my-tls-secret --cert=path/to/cert.crt --key=path/to/cert.key

Utilització del Secret TLS en un Ingress

Un cop creat el secret TLS, podem utilitzar-lo en una definició d'Ingress:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: example-ingress
  namespace: default
spec:
  tls:
  - hosts:
    - example.com
    secretName: my-tls-secret
  rules:
  - host: example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: example-service
            port:
              number: 80

Explicació del Codi

  • tls: Defineix la configuració TLS per a l'Ingress.
    • hosts: Llista de dominis que utilitzaran TLS.
    • secretName: El nom del secret que conté els certificats TLS.
  • rules: Defineix les regles de trànsit per a l'Ingress.
    • host: El domini per al qual s'aplica la regla.
    • http: Configuració de les rutes HTTP.

Resum

En aquesta secció, hem après sobre la seguretat de xarxa en Kubernetes, incloent les polítiques de xarxa, la configuració de TLS i l'ús d'Ingress controllers. Aquests conceptes són fonamentals per assegurar la comunicació dins del clúster i amb el món exterior. En el proper mòdul, explorarem més sobre la seguretat de les imatges i com protegir les aplicacions des del punt de vista de la imatge del contenidor.

Curs de Kubernetes

Mòdul 1: Introducció a Kubernetes

Mòdul 2: Components Bàsics de Kubernetes

Mòdul 3: Gestió de Configuració i Secrets

Mòdul 4: Xarxes en Kubernetes

Mòdul 5: Emmagatzematge en Kubernetes

Mòdul 6: Conceptes Avançats de Kubernetes

Mòdul 7: Monitorització i Registre

Mòdul 8: Seguretat en Kubernetes

Mòdul 9: Escalabilitat i Rendiment

Mòdul 10: Ecosistema i Eines de Kubernetes

Mòdul 11: Estudis de Cas i Aplicacions del Món Real

Mòdul 12: Preparació per a la Certificació de Kubernetes

© Copyright 2024. Tots els drets reservats