Como ativar as políticas de segurança de pods

Ao ativar as políticas de segurança do pod, você garante que os namespaces comprometidos (exceto istio-system) não afetem a segurança de outros namespaces que compartilham os mesmos nós. Os arquivos de recursos PodSecurityPolicy de amostra que funcionam com o Mesh CA são fornecidos com o Anthos Service Mesh. É possível modificar esses arquivos conforme necessário. A seguir, primeiro aplique as políticas de segurança do pod e, em seguida, ative a política de segurança do pod para o cluster do GKE.

Como ativar as políticas de segurança de pods

  1. Verifique se o sistema já tem políticas de segurança de pods definidas:

    kubectl get psp --all-namespaces
    
    • Se o comando retornar uma lista de políticas existentes, isso significará que o sistema já tem políticas de segurança de pods aplicadas. Recomendamos que os arquivos YAML PodSecurityPolicy estejam disponíveis caso seja necessário fazer a rollback. Você precisa adicionar a seção a seguir à parte spec em cada uma das políticas de segurança do pod existentes, exceto aquelas que começam com gce.

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

      Essas linhas permitem a leitura do caminho do host /var/run/sds e permitem a injeção automática do arquivo secundário.

      Use kubectl para editar e aplicar as políticas de segurança de pods no Kubernetes:

      kubectl edit psp YOUR_EXISTING_POD_SECURITY_POLICY
      
    • Se o comando retornar No resources found, você não tem uma política de segurança de pod definida. Ainda é necessário modificar o arquivo samples/security/psp/all-pods-psp.yaml para garantir que ele não entre em conflito com as cargas de trabalho atuais. Para mais detalhes, consulte o guia de política de segurança de pods. Depois de modificar o arquivo, aplique-o:

      kubectl apply -f "samples/security/psp/all-pods-psp.yaml"
      
  2. Aplique a política de segurança do pod para proteger o serviço de descoberta secreta (SDS, na sigla em inglês):

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

    Isso dá ao agente do Citadel (também conhecido como o agente de nó) o privilégio para criar o caminho UDS /var/run/sds na VM do host.

  3. Execute o seguinte comando para ativar a política de segurança do pod:

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

    A ativação das políticas de segurança do pod pode levar vários minutos. Durante esse processo, as cargas de trabalho atuais não poderão se conectar ao mestre do Kubernetes. Aguarde o mestre do Kubernetes ficar ativo. Verifique o status do cluster no console do Google Cloud na página de clusters do Kubernetes.

    Para mais informações, consulte Como usar políticas de segurança de pods.

Como verificar as políticas de segurança do pod

Se você tiver cargas de trabalho atuais, recomendamos que verifique se elas podem ser implantadas com as novas políticas de segurança de pods.

  1. Escolha as implantações que você quer verificar e aumente as réplicas delas. Por exemplo, se o serviço especificado tiver uma réplica, aumente-a em 1:

    kubectl scale deployment YOUR_DEPLOYMENT --replicas=2 -n YOUR_NAMESPACE
    
  2. Verifique se a implantação é escalonada:

    kubectl get deploy
    
  3. Verifique se a nova carga de trabalho pode ser implantada. Isso significa que a política de segurança do pod não afeta a implantação de uma carga de trabalho do serviço.

    kubectl get deployment YOUR_SERVICE -n YOUR_NAMESPACE
    NAME                    READY   UP-TO-DATE   AVAILABLE   AGE
    YOUR_SERVICE            2/2     2            2           ...
    
  4. Reduza as réplicas do serviço:

    kubectl scale deployment YOUR_SERVICE --replicas=1 -n YOUR_NAMESPACE
    
  5. Se as cargas de trabalho não forem implantadas com êxito, será possível desativar temporariamente a política de segurança do pod ao corrigir os arquivos YAML:

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

A seguir