Verificar automaticamente as cargas de trabalho em busca de vulnerabilidades conhecidas


Nesta página, mostramos como verificar automaticamente os pacotes de linguagens e o sistema operacional (SO) do contêiner nas cargas de trabalho em execução para encontrar vulnerabilidades conhecidas e receber estratégias de mitigação acionáveis, se disponíveis. A verificação de vulnerabilidades da carga de trabalho faz parte do painel de postura de segurança, um conjunto de recursos que apresentam informações e recomendações opinativas para melhorar a segurança dos clusters e cargas de trabalho do Google Kubernetes Engine (GKE).

Para saber mais, consulte Sobre a verificação de vulnerabilidades da carga de trabalho.

Preços

Para informações sobre preços, consulte Preços do painel de postura de segurança do GKE

Antes de começar

Antes de começar, verifique se você realizou as tarefas a seguir:

  • Ativar a API Google Kubernetes Engine.
  • Ativar a API Google Kubernetes Engine
  • Se você quiser usar a Google Cloud CLI para essa tarefa, instale e, em seguida, inicialize a CLI gcloud. Se você instalou a CLI gcloud anteriormente, instale a versão mais recente executando gcloud components update.

Requisitos

  • Para receber as permissões necessárias para usar a verificação de vulnerabilidades da carga de trabalho, peça ao administrador para conceder a você o papel do IAM de Leitor de postura de segurança (roles/containersecurity.viewer) no seu projeto do Google Cloud. Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

    Esse papel predefinido contém as permissões necessárias para usar a verificação de vulnerabilidades da carga de trabalho. Para conferir as permissões exatas necessárias, expanda a seção Permissões necessárias:

    Permissões necessárias

    As permissões a seguir são necessárias para usar a verificação de vulnerabilidades da carga de trabalho:

    • resourcemanager.projects.get
    • resourcemanager.projects.list
    • containersecurity.locations.list
    • containersecurity.locations.get
    • containersecurity.clusterSummaries.list
    • containersecurity.findings.list

    Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.

  • O Advanced Vulnerability Insights requer a versão 1.27 ou posterior do GKE.

Níveis de verificação de vulnerabilidades da carga de trabalho

Ative a verificação de vulnerabilidades em níveis. Cada um deles adiciona recursos de verificação da seguinte maneira. Se você usa o Google Kubernetes Engine (GKE) Enterprise para gerenciar frotas de clusters, você também pode definir configurações de verificação de vulnerabilidades no nível de frota aplicáveis a todos os clusters membros. Para instruções, consulte Configurar recursos do painel de postura de segurança do GKE no nível da frota.

Nível Recursos ativados Requisito da versão do GKE
Standard
standard
Verificação de vulnerabilidades do SO do contêiner
  • GKE Enterprise Edition: ativado por padrão em todos os novos clusters que executam a versão 1.27 e posterior
  • GKE Standard Edition: ativado por padrão em todos os novos clusters do modo Autopilot com a versão 1.27 e posterior. Desativado por padrão em todos os novos modos Standard do Google Cloud.
Advanced Vulnerability Insights
enterprise
  • Verificação de vulnerabilidades do SO do contêiner
  • Verificação de vulnerabilidades de pacotes de linguagens
  • GKE Enterprise Edition: ativado por padrão em todos os novos clusters que executam a versão 1.27 e posterior
  • GKE Standard Edition: desativada por padrão em todos os clusters novos.

Para mais informações sobre cada recurso, consulte Sobre a verificação de vulnerabilidades de carga de trabalho.

Ativar a verificação de vulnerabilidades do SO do contêiner

A verificação de vulnerabilidades do Container OS é ativada por padrão em novos clusters do Autopilot que executam a versão 1.27 e mais recentes. Nesta seção, mostramos como ativar esse recurso em novos clusters padrão e em clusters do Autopilot que executam versões anteriores à 1.27.

Ativar a verificação do SO do contêiner em um novo cluster

gcloud

Crie um novo cluster do GKE usando a gcloud CLI:

gcloud container clusters create CLUSTER_NAME \
    --location=LOCATION \
    --workload-vulnerability-scanning=standard

Substitua:

Console

  1. Acesse a página Google Kubernetes Engine no console do Google Cloud.

    Acessar o Google Kubernetes Engine
  2. Clique em Criar.
  3. Na seção GKE Padrão, clique em Configurar.
  4. No painel de navegação, clique em Segurança.
  5. Na seção Segurança, marque a caixa de seleção Verificação de vulnerabilidades.
  6. Selecione a opção Básico.
  7. Configure outras opções para o cluster e clique em Criar quando estiver tudo pronto.

Ativar a verificação do SO do contêiner em um cluster atual

gcloud

Atualize o cluster:

gcloud container clusters update CLUSTER_NAME \
    --location=LOCATION \
    --workload-vulnerability-scanning=standard

Substitua:

Console

  1. Acesse a página Postura de segurança no console do Google Cloud.

    Acessar a postura de segurança
  2. Clique na guia Configurações.
  3. Na seção Clusters ativados de verificação de vulnerabilidades, clique em Selecionar clusters.
  4. Marque as caixas de seleção dos clusters que você quer adicionar.
  5. No menu suspenso Selecionar ação, escolha Definir como básico.
  6. Clique em Aplicar.

Ativar o Advanced Vulnerability Insights

O Advanced Vulnerability Insights permite a verificação contínua dos aplicativos em execução quanto aos seguintes tipos de vulnerabilidades:

  • Vulnerabilidades do SO do contêiner
  • Vulnerabilidades no pacote de linguagens

Quando você ativa o Advanced Vulnerability Insights, o recurso de verificação de vulnerabilidades do SO do contêiner é ativado automaticamente e não pode ser desativado separadamente.

Requisitos

Ativar insights avançados sobre vulnerabilidades em um novo cluster

gcloud

Crie um novo cluster do GKE usando a gcloud CLI:

gcloud container clusters create-auto CLUSTER_NAME \
    --location=LOCATION \
    --workload-vulnerability-scanning=enterprise

Substitua:

Console

  1. Acesse a página Google Kubernetes Engine no console do Google Cloud.

    Acessar o Google Kubernetes Engine
  2. Clique em Criar.
  3. Na seção Autopilot do GKE, clique em Configurar.
  4. No painel de navegação, clique em Configurações avançadas. Se você estiver criando um cluster Standard, clique em Segurança.
  5. Na seção Segurança, marque a caixa de seleção Verificação de vulnerabilidades.
  6. Selecione a opção Avançado.
  7. Configure outras opções para o cluster e clique em Criar quando estiver tudo pronto.

Ativar o Advanced Vulnerability Insights em um cluster atual

gcloud

Atualize o cluster:

gcloud container clusters update CLUSTER_NAME \
    --location=LOCATION \
    --workload-vulnerability-scanning=enterprise

Substitua:

Console

  1. Acesse a página Postura de segurança no console do Google Cloud.

    Acessar a postura de segurança
  2. Clique na guia Configurações.
  3. Na seção Clusters ativados de verificação de vulnerabilidades, clique em Selecionar clusters.
  4. Marque as caixas de seleção dos clusters que você quer adicionar.
  5. No menu suspenso Selecionar ação, escolha Definir como avançado.
  6. Clique em Aplicar.

Implantar uma carga de trabalho de teste

Os manifestos de exemplo a seguir têm vulnerabilidades conhecidas para fins de demonstração. Na prática, se você souber que um aplicativo é vulnerável, provavelmente não precisará executá-lo.

  1. Salve o seguinte manifesto como os-vuln-sample.yaml:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: frontend
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: guestbook
          tier: frontend
      template:
        metadata:
          labels:
            app: guestbook
            tier: frontend
        spec:
          containers:
          - name: php-redis
            image: us-docker.pkg.dev/google-samples/containers/gke/gb-frontend@sha256:dc8de8e0d569d2f828b187528c9317bd6b605c273ac5a282aebe471f630420fc
            env:
            - name: GET_HOSTS_FROM
              value: "dns"
            resources:
              requests:
                cpu: 100m
                memory: 100Mi
            ports:
            - containerPort: 80
    
  2. Analise o seguinte manifesto, que contém uma vulnerabilidade conhecida do Maven:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: maven-vulns
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: mavenvulns
      template:
        metadata:
          labels:
            app: mavenvulns
        spec:
          containers:
          - name: maven-vulns-app
            image: us-docker.pkg.dev/google-samples/containers/gke/security/maven-vulns
            # This app listens on port 8080 for web traffic by default.
            ports:
            - containerPort: 8080
            env:
              - name: PORT
                value: "8080"
            resources:
              requests:
                memory: "1Gi"
                cpu: "500m"
                ephemeral-storage: "1Gi"
              limits:
                memory: "1Gi"
                cpu: "500m"
                ephemeral-storage: "1Gi"
  3. Se quiser, consiga as credenciais do cluster:

    gcloud container clusters get-credentials CLUSTER_NAME \
        --region=COMPUTE_REGION
    
  4. Implante os aplicativos no cluster:

    kubectl apply -f os-vuln-sample.yaml
    kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/kubernetes-engine-samples/main/security/language-vulns/maven/deployment.yaml
    

Para testar outras vulnerabilidades, implante versões mais recentes de imagens em ambientes de teste, como nginx.

Ver e realizar os resultados

A verificação inicial leva pelo menos 15 minutos para retornar os resultados, dependendo do número de cargas de trabalho verificadas. O GKE exibe os resultados no painel de postura de segurança e adiciona automaticamente entradas ao Logging.

Ver resultados

Para uma visão geral das preocupações descobertas nos clusters e nas cargas de trabalho do seu projeto, faça o seguinte:

  1. Acesse a página Postura de segurança no console do Google Cloud.

    Acessar a postura de segurança

  2. Clique na guia Preocupações.

  3. No painel Filtrar preocupações, na seção Tipo de preocupação, marque a caixa de seleção Vulnerabilidade.

Ver detalhes e recomendações de problemas

Para ver informações detalhadas sobre uma vulnerabilidade específica, clique na linha que contém essa preocupação.

O painel Preocupação de vulnerabilidade mostra as seguintes informações:

  • Descrição: uma descrição da preocupação, incluindo um número de CVE, se aplicável, e uma descrição detalhada da vulnerabilidade e o possível impacto dela.
  • Ação recomendada: ações que você pode realizar para lidar com a vulnerabilidade, como versões fixas do pacote e onde aplicar a correção.

Ver registros de problemas descobertos

O GKE adiciona entradas ao bucket de registro _Default no Logging para cada problema descoberto. Esses registros são mantidos apenas por um período específico. Para mais detalhes, consulte Períodos de armazenamento dos registros.

  1. No console do Google Cloud, acesse a página do Análise de registros:

    Acessar a Análise de registros
  2. No campo Consulta, insira a seguinte consulta:

    resource.type="k8s_cluster"
    jsonPayload.@type="type.googleapis.com/cloud.kubernetes.security.containersecurity_logging.Finding"
    jsonPayload.type="FINDING_TYPE_VULNERABILITY"
  3. Clique em Executar consulta.

Para receber notificações quando o GKE adicionar novas descobertas ao Logging, configure alertas com base em registros para essa consulta. Para mais informações, consulte Como gerenciar alertas com base em registros.

Limpar

  1. Exclua a carga de trabalho de amostra que você implantou:

    kubectl delete deployment frontend
    
  2. Como opção, exclua o cluster usado:

    gcloud container clusters delete CLUSTER_NAME \
        --region=COMPUTE_REGION
    

Desativar a verificação de vulnerabilidades da carga de trabalho

É possível desativar a verificação de vulnerabilidades da carga de trabalho usando a gcloud CLI ou o console do Google Cloud.

gcloud

Execute este comando:

gcloud container clusters update CLUSTER_NAME \
    --region=LOCATION \
    --workload-vulnerability-scanning=disabled

Substitua:

Console

  1. Acesse a página Postura de segurança no console do Google Cloud.

    Acessar a postura de segurança
  2. Clique na guia Configurações.
  3. Na seção Clusters ativados de verificação de vulnerabilidades, clique em Selecionar clusters.
  4. Marque as caixas de seleção dos clusters que você quer remover.
  5. No menu suspenso Selecionar ação, escolha Definir como desativado.
  6. Clique em Aplicar.

A seguir