Implantar no Cloud Run e conferir insights de segurança
Este guia de início rápido explica como implantar uma imagem de contêiner no Cloud Run e acessar insights de segurança para a implantação na guia Segurança no console do Google Cloud. Você vai:
- Implante uma imagem no Cloud Run usando o Cloud Deploy. O Cloud Deploy é um serviço do Google Cloud que automatiza a entrega de aplicativos para uma série de ambientes de destino em uma sequência de promoções definida.
Confira os seguintes insights de segurança da implantação:
- Informações sobre identidade e criptografia para a implantação.
- Nível de Níveis da cadeia de suprimentos para artefatos de software (SLSA), que identifica o nível de garantia da implantação.
- Vulnerabilidades em artefatos de build.
- Lista de materiais de software (SBOM) para os artefatos de 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.
Antes de começar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Build, Artifact Registry, Cloud Deploy, Cloud Run, and Container Scanning APIs:
gcloud services enable cloudbuild.googleapis.com
artifactregistry.googleapis.com clouddeploy.googleapis.com run.googleapis.com containerscanning.googleapis.com - Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Build, Artifact Registry, Cloud Deploy, Cloud Run, and Container Scanning APIs:
gcloud services enable cloudbuild.googleapis.com
artifactregistry.googleapis.com clouddeploy.googleapis.com run.googleapis.com containerscanning.googleapis.com
Definir configurações padrão
Defina uma variável de ambiente para o ID do projeto:
export PROJECT_ID=$(gcloud config get project)
Defina a região padrão para o Cloud Deploy:
gcloud config set deploy/region us-central1
Conceder acesso
Conceda papéis do IAM à conta de serviço padrão do Compute Engine. Isso é necessário para que o Cloud Deploy implante cargas de trabalho no Cloud Run.
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member=serviceAccount:$(gcloud projects describe $PROJECT_ID \
--format="value(projectNumber)")-compute@developer.gserviceaccount.com \
--role="roles/clouddeploy.jobRunner"
gcloud iam service-accounts add-iam-policy-binding $(gcloud projects describe $PROJECT_ID \
--format="value(projectNumber)")-compute@developer.gserviceaccount.com \
--member=serviceAccount:$(gcloud projects describe $PROJECT_ID \
--format="value(projectNumber)")-compute@developer.gserviceaccount.com \
--role="roles/iam.serviceAccountUser" \
--project=$PROJECT_ID
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member=serviceAccount:$(gcloud projects describe $PROJECT_ID \
--format="value(projectNumber)")-compute@developer.gserviceaccount.com \
--role="roles/run.developer"
Se você tiver problemas para adicionar um desses papéis, entre em contato com o administrador do projeto.
Criar um repositório do Docker no Artifact Registry
Crie um novo repositório do Docker chamado
containers
no localus-central1
com a descrição "repositório do Docker":gcloud artifacts repositories create containers --repository-format=docker \ --location=us-central1 --description="Docker repository"
Verifique se o repositório foi criado:
gcloud artifacts repositories list
Você vai encontrar
containers
na lista de repositórios exibidos.
Preparar o aplicativo de exemplo
Você vai precisar de um código-fonte de exemplo para criar e implantar. Nesta seção, você vai clonar um repositório de origem que contém um exemplo de código Java.
Clone o repositório que contém o exemplo de código Java:
git clone https://github.com/googlecloudplatform/software-delivery-shield-demo-java.git cd software-delivery-shield-demo-java/backend
Atualize
cloudrun.clouddeploy.yaml
para substituirPROJECT_ID
pelo ID do projeto:sed -i "s/PROJECT_ID/${PROJECT_ID}/g" cloudrun.clouddeploy.yaml
Criar o aplicativo
Crie e conteinerize o aplicativo Java usando o Cloud Build. O comando a seguir cria e conteineriza o aplicativo Java e armazena o contêiner criado no repositório do Docker do Artifact Registry:
gcloud builds submit --config=cloudbuild.yaml --region=us-central1
Depois que o build for concluído, uma mensagem de status de sucesso semelhante a esta será exibida:
DONE ----------------------------------------------------------------------------- ID: 3e08565f-7f57-4449-bc68-51c46cf33d03 CREATE_TIME: 2022-09-19T15:41:07+00:00 DURATION: 54S SOURCE: gs://sds-docs-project_cloudbuild/source/1663602066.777581-6ebe4b2d6fd741ffa18936d7f78055e9.tgz IMAGES: us-central1-docker.pkg.dev/sds-docs-project/containers/java-guestbook-backend:quickstart STATUS: SUCCESS
Gerar uma lista de materiais de software para a imagem criada
Um SBOM é um inventário completo de um aplicativo, que identifica os pacotes em que o software depende. O conteúdo pode incluir softwares de terceiros de fornecedores, artefatos internos e bibliotecas de código aberto.
Gere o SBOM para a imagem criada na seção anterior:
gcloud artifacts sbom export \
--uri=us-central1-docker.pkg.dev/${PROJECT_ID}/containers/java-guestbook-backend:quickstart
Implantar o contêiner no Cloud Run usando o Cloud Deploy
Registre o pipeline e os destinos com o serviço do Cloud Deploy:
gcloud deploy apply --file cloudrun.clouddeploy.yaml
Agora você tem um pipeline com destinos prontos para implantar seu aplicativo no primeiro destino.
Para verificar se o pipeline existe, acesse a página Pipelines de entrega no console do Google Cloud:
Abrir a página "Pipelines de entrega"
O pipeline de entrega que você acabou de criar,
cloudrun-guestbook-backend-delivery
, é exibido.Clique em
cloudrun-guestbook-backend-delivery
para monitorar o progresso. A página Detalhes do pipeline de entrega é aberta.No Cloud Shell, crie uma versão no Cloud Deploy:
gcloud deploy releases create test-release-007 \ --delivery-pipeline=cloudrun-guestbook-backend-delivery \ --skaffold-file=cloudrun.skaffold.yaml \ --images=java-guestbook-backend=us-central1-docker.pkg.dev/${PROJECT_ID}/containers/java-guestbook-backend:quickstart
A nova versão aparece na seção Versões na página Detalhes do pipeline de entrega.
Monitore a visualização Visualização do pipeline na página Detalhes do pipeline de entrega até que o botão Promover seja exibido para
dev-cluster
. Talvez seja necessário atualizar a página.No primeiro destino na visualização do pipeline de exibição,
cloudrun-dev
, clique em Promover.A caixa de diálogo Promover versão é exibida. Ela mostra os detalhes do destino que você está promovendo.
Clique em Promover.
A versão agora está na fila para implantação em
cloudrun-prod
. Quando a implantação estiver concluída, a visualização do pipeline de entrega a mostrará como implantada:
Conferir insights de segurança no Cloud Deploy
Abra a página Pipelines de entrega do Cloud Deploy no console do Google Cloud.
Na tabela Pipelines de entrega, clique em cloudrun-guestbook-backend-delivery.
Na página Detalhes dos pipelines de entrega, clique em test-release-008.
Na página Detalhes do lançamento, clique na guia Artefatos.
Na tabela Build artifacts, localize a linha com o artefato java-guestbook-backend e, na coluna Security insights correspondente, clique em View.
A guia Segurança aparece para a implantação.
Essa guia mostra as seguintes informações na seção Insights de segurança:
Nível da SLSA:este build alcançou o nível 3 da SLSA. Clique no link Saiba mais para saber o que esse nível de segurança significa.
Vulnerabilidades:todas as vulnerabilidades encontradas nos seus artefatos. Clique no nome da imagem (java-guestbook-backend) para conferir os artefatos que foram verificados quanto a vulnerabilidades.
Dependências dos artefatos de build.
Detalhes do build:detalhes do build, como o builder e o link para visualizar registros.
Conferir insights de segurança no Cloud Run
Abra a página Serviços do Cloud Run.
Na tabela Serviços do Cloud Run, clique em guestbook-backend-prod.
Na página Detalhes do serviço, clique em Revisões.
No painel Revisions, clique em Security.
A guia Segurança aparece para a implantação.
Esta guia mostra as seguintes informações na seção Insights de segurança:
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 alcançou o nível 3 da SLSA. Clique no link Saiba mais para saber o que esse nível de segurança significa.
Vulnerabilidades:todas as vulnerabilidades encontradas nos seus artefatos. Clique no nome da imagem (java-guestbook-backend) para conferir os artefatos que foram verificados quanto a vulnerabilidades.
Dependências dos artefatos de build.
Detalhes do build:detalhes do build, como o builder e o link para visualizar registros.
Limpar
Para evitar cobranças na sua conta do Google Cloud pelos recursos usados nesta página, exclua o projeto do Google Cloud com esses recursos.
Desativar a API Container Scanning:
gcloud services disable containerscanning.googleapis.com --force
Exclua o serviço do Cloud Run
guestbook-backend-dev
:gcloud run services delete guestbook-backend-dev --region=us-central1 \ --project=${PROJECT_ID}
Exclua o serviço
guestbook-backend-prod
:gcloud run services delete guestbook-backend-prod --region=us-central1 \ --project=${PROJECT_ID}
Exclua o pipeline de entrega, incluindo a versão e os lançamentos:
gcloud deploy delivery-pipelines delete cloudrun-guestbook-backend-delivery \ --force --region=us-central1 --project=${PROJECT_ID}
Esse comando exclui o próprio pipeline de entrega, além de todos os recursos
release
erollout
da segurança da cadeia de suprimentos de software criados para esse pipeline.Exclua o repositório do Artifact Registry:
gcloud artifacts repositories delete containers \ --location=us-central1 --async
Pronto, você concluiu as etapas deste início rápido.
A seguir
- Saiba mais sobre os insights de segurança no Cloud Run.
- Saiba como visualizar insights de segurança ao implantar no GKE.
- Saiba como acessar insights de segurança para builds.
- Saiba mais sobre a segurança da cadeia de suprimentos de software.