Insights de segurança do ambiente de execução

1. Introdução

Neste laboratório, você vai implantar um aplicativo no Cloud Run e no cluster do GKE e conferir insights de segurança para a implantação no painel de insights de segurança do Software Delivery Shield.

O que você vai aprender

  • Insights de segurança do Artifact Registry
  • Insights de segurança do Cloud Run
  • Postura de segurança do GKE

2. Configuração e requisitos

Configuração do projeto do Cloud

  1. Faça login no Console do Google Cloud e crie um novo projeto ou reutilize um existente. Crie uma conta do Gmail ou do Google Workspace, se ainda não tiver uma.

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • O Nome do projeto é o nome de exibição para os participantes do projeto. É uma string de caracteres não usada pelas APIs do Google É possível atualizar o local a qualquer momento.
  • O ID do projeto precisa ser exclusivo em todos os projetos do Google Cloud e não pode ser mudado após a definição. O console do Cloud gera automaticamente uma string exclusiva. Em geral, não importa o que seja. Na maioria dos codelabs, é necessário fazer referência ao ID do projeto, normalmente identificado como PROJECT_ID. Se você não gostar do ID gerado, crie outro aleatório. Se preferir, teste o seu e confira se ele está disponível. Ele não pode ser mudado após essa etapa e permanece durante o projeto.
  • Para sua informação, há um terceiro valor, um Número do projeto, que algumas APIs usam. Saiba mais sobre esses três valores na documentação.
  1. Em seguida, ative o faturamento no console do Cloud para usar os recursos/APIs do Cloud. A execução deste codelab não será muito cara, se tiver algum custo. Para desligar os recursos e evitar cobranças além deste tutorial, exclua os recursos criados ou o projeto inteiro. Novos usuários do Google Cloud estão qualificados para o programa de US$ 300 de avaliação sem custos.

Configuração do ambiente

Clique no ícone à direita da barra de pesquisa para ativar o Cloud Shell.

ecdc43ada29e91b.png

No Cloud Shell, ative as APIs necessárias para este laboratório:

gcloud services enable run.googleapis.com \
  cloudbuild.googleapis.com \
  artifactregistry.googleapis.com \
  container.googleapis.com \
  containersecurity.googleapis.com

Se for preciso autorizar, clique em "Autorizar" para continuar.

6356559df3eccdda.png

Uma mensagem semelhante a esta vai aparecer:

Operation "operations/acf.p2-327036483151-73d90d00-47ee-447a-b600-a6badf0eceae" finished successfully.

Execute o comando para criar o cluster do GKE de forma assíncrona. Ele será usado mais adiante no laboratório:

gcloud beta container clusters create gke-cluster \
    --zone us-central1-a \
    --async

3. Preparar o aplicativo

Primeiro, você vai preparar um aplicativo simples em Node.js baseado no Express que responde a solicitações HTTP.

No Cloud Shell, crie um novo diretório chamado starter-nodejs e depois mude para ele:

mkdir starter-nodejs
cd starter-nodejs

Crie um arquivo package.json executando os comandos abaixo:

cat > ./package.json << EOF
{
  "name": "cloudrun-starter-app",
  "version": "1.0.0",
  "description": "Node.js Starter Application",
  "main": "index.js",
  "scripts": {
    "start": "node index.js"
  },
  "author": "",
  "license": "Apache-2.0",
  "dependencies": {
    "express": "^4.18.2"
  }
}
EOF

O arquivo acima contém um comando de script de início e uma dependência no framework Express para aplicativos da Web.

Em seguida, no mesmo diretório, crie um arquivo index.js executando os comandos abaixo:

cat > ./index.js << EOF
const express = require('express');
const app = express();

app.get('/', (req, res) => {
  console.log('Received a request.');
  res.send("Hello Cloud Run!");
});

const port = process.env.PORT || 8080;

app.listen(port, () => {
  console.log('Listening on port', port);
});
EOF

Esse código cria um servidor da Web básico que detecta na porta definida pela variável de ambiente PORT. O app está concluído e pronto para ser conteinerizado e implantado.

4. Implantar aplicativo do Cloud Run

Execute o comando abaixo para implantar o aplicativo:

gcloud run deploy starter-app \
  --source . \
  --region us-central1 \
  --allow-unauthenticated \
  --max-instances=3

Confirme a criação do repositório do Artifact Registry:

Deploying from source requires an Artifact Registry Docker repository to store built containers. A repository named [cloud-run-source-deploy] in region [us-central1] will be created.

Do you want to continue (Y/n)? y

5. Insights de segurança do Artifact Registry e do Cloud Build

A conclusão do build leva alguns minutos.

Abra o Cloud Build e analise os artefatos do build mais recente.

A interface do Cloud Build no console do Google Cloud contém o painel de insights de segurança do Software Delivery Shield, que mostra informações de segurança relacionadas ao build, como nível da SLSA, vulnerabilidades nas dependências e procedência do build.

7d9fd2213f3704c4.png

Analise os insights de segurança da imagem de contêiner criada. Siga o link para artefatos verificados e confira os detalhes das vulnerabilidades dessa imagem no Artifact Registry.

Volte ao console do Cloud Shell e verifique se a implantação do aplicativo do Cloud Run foi concluída.

Done.
Service [starter-app] revision [starter-app-00001-maw] has been deployed and is serving 100 percent of traffic.
Service URL: https://starter-app-nin5jpgefq-uc.a.run.app

6. Insights de segurança do Cloud Run

O Cloud Run tem um painel de segurança (prévia) que mostra insights de segurança da cadeia de suprimentos de software, como informações de conformidade do nível de build da SLSA, procedência do build e vulnerabilidades encontradas em serviços em execução.

Abra o Cloud Run e analise os insights de segurança na guia "REVISÕES / SEGURANÇA".

62a9f5d26207e58e.png

Esse painel mostra as seguintes informações:

  • Identidade e criptografia:o endereço de e-mail da conta de serviço padrão do Compute Engine e a chave de criptografia usada para a implantação.
  • Nível da SLSA:este build está no nível 3 da SLSA, que identifica o nível de maturidade do processo de build de software de acordo com a especificação da SLSA.
  • Vulnerabilidades:qualquer vulnerabilidade encontrada nas dependências do aplicativo.
  • Detalhes do build:detalhes do build, como o builder e o link para visualizar registros.
  • Procedência do build:procedência do build, que é uma coleção de metadados verificáveis sobre um build. Ele inclui detalhes como os resumos das imagens criadas, os locais da origem de entrada, o conjunto de ferramentas de build, as etapas de build e a duração do build.

7. Postura de segurança do GKE

O GKE pode avaliar sua postura de segurança de contêineres e oferecer orientações ativas sobre configurações de cluster, configuração de carga de trabalho e vulnerabilidades. Ele inclui o painel de postura de segurança (prévia), que verifica seus clusters e cargas de trabalho do GKE para fornecer recomendações opinativas e acionáveis para melhorar sua postura de segurança.

Nas próximas etapas, você vai implantar o aplicativo no cluster do GKE e analisar insights de segurança no painel de controle de postura de segurança do GKE.

Verifique se o cluster está pronto executando o seguinte comando:

gcloud beta container clusters list

Exemplo de resposta:

NAME: gke-cluster
LOCATION: us-central1-a
MASTER_VERSION: 1.24.9-gke.3200
MASTER_IP: 34.29.226.228
MACHINE_TYPE: e2-medium
NODE_VERSION: 1.24.9-gke.3200
NUM_NODES: 3
STATUS: RUNNING

Receba as credenciais e a configuração do cluster do GKE:

gcloud container clusters get-credentials gke-cluster  \
    --region=us-central1-a

Execute o comando para implantar o aplicativo usando a imagem criada na etapa anterior:

export PROJECT_ID=$(gcloud config get-value project)

kubectl run starter-app \
  --image us-central1-docker.pkg.dev/${PROJECT_ID}/cloud-run-source-deploy/starter-app:latest \
  --port 8080

As cargas de trabalho do GKE precisam ter uma configuração com aumento da proteção que limite a superfície de ataque. A verificação manual de cargas de trabalho em clusters pode ser difícil. É possível usar o painel de postura de segurança para verificar automaticamente a configuração de todas as cargas de trabalho em execução em vários clusters e retornar resultados de ação úteis e pontuados, além de recomendações opinativas para melhorar a postura de segurança.

Ative a verificação da configuração da carga de trabalho:

gcloud beta container clusters update gke-cluster \
    --region=us-central1-a \
    --enable-workload-config-audit

Além de verificar a configuração da carga de trabalho, também é possível ativar a verificação de vulnerabilidades e analisar os resultados no painel de postura de segurança, um conjunto de recursos que oferecem informações e recomendações opinativas para melhorar a segurança dos clusters e cargas de trabalho do GKE.

O GKE verifica automaticamente as imagens de contêiner em cada pod qualificado em execução no cluster do GKE em busca de vulnerabilidades conhecidas, usando dados de vulnerabilidade de bancos de dados públicos de CVE, como o NIST.

Se uma vulnerabilidade for encontrada nas imagens de contêiner, o GKE vai atribuir uma classificação de gravidade e mostrar os resultados no painel de postura de segurança no console do Google Cloud. O GKE também adiciona entradas ao Cloud Logging para auditoria e rastreabilidade.

Ative a verificação de vulnerabilidades da carga de trabalho:

gcloud beta container clusters update gke-cluster \
    --region=us-central1-a \
    --enable-workload-vulnerability-scanning \
    --async

Abra a página Postura de segurança do GKE.

Aguarde alguns minutos até que a auditoria da carga de trabalho seja concluída e analise os resultados.

5b1b8158bc55ce67.png

Analise os problemas de configuração e as cargas de trabalho afetadas.

58e6f4b6d8eaa99a.png

Por que usar o painel de postura de segurança

O painel de postura de segurança é uma medida de segurança básica que pode ser ativada para qualquer cluster do GKE qualificado. O Google Cloud recomenda o uso do painel de postura de segurança em todos os clusters pelos seguintes motivos:

  • Interrupções mínimas: os recursos não interferem nem interrompem as cargas de trabalho em execução.
  • Recomendações úteis: quando disponíveis, o painel de postura de segurança fornece ações necessárias para corrigir as preocupações identificadas. Essas ações incluem comandos que você pode executar, exemplos de alterações de configuração a serem feitas e orientações sobre o que fazer para reduzir as vulnerabilidades.
  • Visualização: o painel de postura de segurança fornece uma visualização de alto nível de preocupações que afetam clusters de todo o projeto e inclui gráficos para mostrar o progresso feito e o possível impacto de cada preocupação.
  • Resultados opinativos: o GKE atribui uma classificação de gravidade aos problemas descobertos com base na experiência das equipes de segurança do Google e nos padrões do setor.
  • Registros de eventos auditáveis: o GKE adiciona todas as preocupações identificadas ao Logging para melhorar a capacidade de geração de relatórios e a observabilidade.

8. Parabéns!

Parabéns! Você concluiu o codelab.

O que aprendemos:

  • Informações do Security Insights para artefatos de build e aplicativos em execução no Cloud Run e no GKE

Limpar

Para evitar cobranças na sua conta do Google Cloud pelos recursos usados no tutorial, exclua o projeto ou mantenha o projeto e exclua cada um dos recursos.

Excluir o projeto

O jeito mais fácil de evitar cobranças é excluindo o projeto que você criou para este tutorial.

Última atualização: 21/03/23