Habilitar políticas de seguridad en los pods

Cuando habilitas las políticas de seguridad de Pods, te aseguras de que los espacios de nombres vulnerados (que no sean istio-system) no afecten la seguridad de otros espacios de nombres que comparten los mismos nodos. Los archivos de recursos de muestra PodSecurityPolicy que funcionan con la CA de Mesh se proporcionan con Anthos Service Mesh. Puedes modificar estos archivos según sea necesario. En lo sucesivo, primero debes aplicar las políticas de seguridad del Pod y, luego, habilitar la política de seguridad de Pods para el clúster de GKE.

Habilitar políticas de seguridad en los pods

  1. Verifica si tu sistema ya tiene políticas de seguridad de Pods definidas:

    kubectl get psp --all-namespaces
    
    • Si el comando muestra una lista de políticas existentes, tu sistema ya tiene políticas de seguridad de Pods aplicadas. Te recomendamos que tengas tus archivos YAML PodSecurityPolicy existentes disponibles en caso de que necesites hacer un rollback. Debes agregar la siguiente sección a la parte spec en cada una de las políticas de seguridad de Pods existentes, excepto las que comienzan con gce.

      allowedHostPaths:
        - pathPrefix: "/var/run/sds"
          readOnly: true
      allowedCapabilities:
        - NET_ADMIN
        - NET_RAW
      

      Estas líneas permiten leer desde la ruta de acceso del host /var/run/sds y permiten la inserción automática del archivo adicional.

      Puedes usar kubectl para editar y aplicar las políticas de seguridad de Pods en Kubernetes:

      kubectl edit psp YOUR_EXISTING_POD_SECURITY_POLICY
      
    • Si el comando muestra No resources found, no tienes definida una política de seguridad de Pod. Es posible que debas modificar el archivo samples/security/psp/all-pods-psp.yaml para asegurarte de que no entren en conflicto con tus cargas de trabajo existentes. Para obtener más detalles, consulta la Guía de políticas de seguridad de Pods. Luego de modificar el archivo, aplícalo:

      kubectl apply -f "samples/security/psp/all-pods-psp.yaml"
      
  2. Aplica la política de seguridad del pod para proteger el Servicio de descubrimiento de secretos (SDS):

    kubectl apply -f "samples/security/psp/citadel-agent-psp.yaml"
    

    Esto le da al agente de Citadel (también conocido como agente de nodo) el privilegio para crear la ruta de acceso /var/run/sds de UDS en la VM host.

  3. Ejecuta el siguiente comando para habilitar la política de seguridad de Pods:

    gcloud beta container clusters update ${CLUSTER_NAME} \
        --enable-pod-security-policy
    

    Es posible que la habilitación de las políticas de seguridad de Pods demore varios minutos. Durante este proceso, las cargas de trabajo existentes no podrán conectarse a la instancia principal de Kubernetes. Espere hasta que la instancia principal de Kubernetes vuelva a estar disponible. Puedes verificar el estado del clúster en la consola de Google Cloud en la página de clústeres de Kubernetes.

    Para obtener más información, consulta Usa políticas de seguridad de Pods.

Verifica las políticas de seguridad en los Pods

Si tienes cargas de trabajo existentes, te recomendamos que verifiques que las cargas de trabajo puedan implementarse con las nuevas políticas de seguridad de Pods.

  1. Selecciona las implementaciones que deseas verificar y aumentar sus réplicas. Por ejemplo, si el servicio especificado tiene 1 réplica, entonces aumenta el número en 1:

    kubectl scale deployment YOUR_DEPLOYMENT --replicas=2 -n YOUR_NAMESPACE
    
  2. Verifica que la implementación escale verticalmente:

    kubectl get deploy
    
  3. Verifica que se pueda implementar la carga de trabajo nueva. Esto significa que la política de seguridad del Pod no afecta la implementación de una carga de trabajo para el servicio.

    kubectl get deployment YOUR_SERVICE -n YOUR_NAMESPACE
    NAME                    READY   UP-TO-DATE   AVAILABLE   AGE
    YOUR_SERVICE            2/2     2            2           ...
    
  4. Reduce la escala de las réplicas del servicio:

    kubectl scale deployment YOUR_SERVICE --replicas=1 -n YOUR_NAMESPACE
    
  5. Si tus cargas de trabajo no se implementan de forma correcta, puedes inhabilitar la política de seguridad de Pods de forma temporal mientras corriges los archivos YAML:

    gcloud beta container clusters update ${CLUSTER_NAME} \
      --no-enable-pod-security-policy
    

¿Qué sigue?