1. Introdução
Neste laboratório, você vai implantar um aplicativo no cluster do Cloud Run e do GKE e acessar insights de segurança para a implantação no software 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 Google Cloud
- 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.
- 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 Você pode atualizar 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. normalmente você não se importa com o que seja. Na maioria dos codelabs, é necessário fazer referência ao ID do projeto, que normalmente é identificado como
PROJECT_ID
. Se você não gostar do ID gerado, poderá gerar outro ID aleatório. Como alternativa, você pode tentar o seu próprio e ver se ele está disponível. Ela não pode ser alterada após essa etapa e permanecerá durante a duração do projeto. - Para sua informação, há um terceiro valor, um Número de projeto, que algumas APIs usam. Saiba mais sobre esses três valores na documentação.
- 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 encerrar os recursos e não gerar faturamento além deste tutorial, exclua os recursos criados ou exclua 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
Ative o Cloud Shell clicando no ícone à direita da barra de pesquisa.
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.
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 posteriormente neste laboratório:
gcloud beta container clusters create gke-cluster \
--zone us-central1-a \
--async
3. Preparar inscrição
Primeiro, você vai preparar um aplicativo Node.js simples e baseado no Express que responde a solicitações HTTP.
No Cloud Shell, crie um novo diretório chamado starter-nodejs
e 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 inicialização e uma dependência no framework Express para aplicativos da Web.
No mesmo diretório, execute os comandos abaixo para criar um arquivo index.js
:
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 conteinerização e implantação.
4. Implantar o 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
O build levará alguns minutos para ser concluído.
Abra o Cloud Build e revise 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 o nível de SLSA, as vulnerabilidades nas dependências e a procedência do build.
Revise os Insights de segurança para a imagem de contêiner criada. Siga o link de artefatos verificados para conferir os detalhes das vulnerabilidades desta 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 contém um painel de segurança (pré-lançamento) que exibe insights de segurança da cadeia de suprimentos de software, como informações de conformidade no nível do build do SLSA, procedência do build e vulnerabilidades encontradas na execução de serviços.
Abra o Cloud Run e revise os Insights de segurança na guia "REVISÕES / SEGURANÇA".
Esse painel exibe 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 SLSA: esse build está no nível 3 do SLSA, que identifica o nível de maturidade do processo de build do software de acordo com a especificação SLSA
- Vulnerabilidades:todas as vulnerabilidades encontradas nas dependências do aplicativo.
- Detalhes da versão:detalhes da versão, como o builder e o link para ver os registros.
- Procedência do build:procedência do build, que é uma coleção de metadados verificáveis sobre um build. Ele inclui detalhes como resumos das imagens criadas, os locais da origem de entrada, o conjunto de ferramentas, as etapas e a duração da compilação.
7. Postura de segurança do GKE
O GKE pode avaliar a postura de segurança dos seus contêineres e fornecer orientações ativas sobre configurações de clusters, configurações de cargas de trabalho e vulnerabilidades. Ele inclui o painel de postura de segurança (pré-lançamento), que verifica seus clusters e cargas de trabalho do GKE para fornecer recomendações opinativas e úteis 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 postura de segurança do GKE.
Execute o comando a seguir para verificar se o cluster está pronto:
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
O ideal é que as cargas de trabalho do GKE tenham uma configuração reforçada que limite a superfície de ataque. Verificar cargas de trabalho em clusters quanto a problemas de configuração pode ser difícil de fazer manualmente em grande escala. O painel de postura de segurança pode ser usado para verificar automaticamente a configuração de todas as cargas de trabalho em execução em vários clusters e retornar resultados úteis, pontuados e recomendações opinativas para melhorar sua 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 da carga de trabalho e analisar os resultados no painel de postura de segurança, que é um conjunto de recursos com 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 CVE públicos, como o NIST.
Se uma vulnerabilidade é encontrada nas imagens do contêiner, o GKE atribui uma classificação de gravidade e exibe 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 para que a auditoria da carga de trabalho seja concluída e analise os resultados.
Analise os problemas de configuração e as cargas de trabalho afetadas.
Por que usar o painel de postura de segurança
O painel de postura de segurança é uma medida básica que pode ser ativada em qualquer cluster qualificado do GKE. O Google Cloud recomenda usar o painel de postura de segurança em todos os clusters pelos seguintes motivos:
- Interrupções mínimas: os recursos não interferem ou interrompem a execução de cargas de trabalho.
- Recomendações decisivas: quando disponível, o painel de postura de segurança apresenta ações necessárias para corrigir problemas descobertos. Essas ações incluem comandos que podem ser executados, exemplos de alterações de configuração a serem feitas e conselhos sobre o que fazer para mitigar vulnerabilidades.
- Visualização: o painel de postura de segurança fornece uma visualização de alto nível das preocupações que afetam os clusters em todo o projeto e inclui tabelas e gráficos para mostrar seu progresso e o possível impacto de cada preocupação.
- Resultados opinativos: o GKE atribui uma classificação de gravidade às preocupações descobertas com base na experiência das equipes de segurança e nos padrões do setor do Google.
- Registros de eventos auditáveis: o GKE adiciona ao Logging todos os problemas descobertos para melhorar a observabilidade e a geração de relatórios.
8. Parabéns!
Parabéns! Você concluiu o codelab.
O que aprendemos:
- Informações de insights de segurança 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/2023