Implante no Cloud Run e confira insights de segurança
Neste guia de início rápido, explicamos como implantar uma imagem de contêiner no Cloud Run e conferir insights de segurança para a implantação no painel Segurança do Software Delivery Shield, no console do Google Cloud. Você vai:
- Implantar uma imagem no Cloud Run usando o Cloud Deploy. O Cloud Deploy é um serviço do Google Cloud que automatiza a entrega dos aplicativos a uma série de ambientes de destino em uma sequência de promoção definida.
Confira os seguintes insights de segurança para a implantação:
- Informações de identidade e criptografia para a implantação.
- Nível da cadeia de suprimentos para artefatos de software (SLSA, na sigla em inglês), que identifica o nível de garantia para a implantação.
- Vulnerabilidades em artefatos de build.
- Lista de materiais de software (SBOM, na sigla em inglês) para os artefatos de build.
- Proveniê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 de origem de entrada, o conjunto de ferramentas, as etapas e a duração da versão.
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
Permitir 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 denominado
containers
no localus-central1
e 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ê verá
containers
na lista de repositórios exibidos.
Preparar o aplicativo de exemplo
Você vai precisar de um código-fonte de amostra para criar e implantar. Nesta seção, você vai clonar um repositório de origem existente que contém uma 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
Criar e conteinerizar 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 Docker do Artifact Registry:
gcloud builds submit --config=cloudbuild.yaml --region=us-central1
Depois que a criação for concluída, você verá uma mensagem de status de sucesso semelhante à seguinte:
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 SBOM para a imagem criada
Um SBOM é um inventário completo de um aplicativo que identifica os pacotes de que seu software depende. O conteúdo pode incluir software de terceiros de fornecedores, artefatos internos e bibliotecas de código aberto.
Gere o SBOM para a imagem que você criou 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 Cloud Deploy:
gcloud deploy apply --file cloudrun.clouddeploy.yaml
Agora você tem um pipeline, com destinos, pronto para implantar o 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
, será 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 envio.
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 entrega,
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:
Ver 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-playbook-backend-delivery.
Na página Detalhes dos pipelines de entrega, clique em test-release-008.
Na página Detalhes da versão, clique na guia Artefatos.
Na tabela Artefatos de build, localize a linha com o artefato java-playbook-backend e, na coluna Insights de segurança correspondente, clique em Ver.
O painel Segurança do Software Delivery Shield vai aparecer para a implantação.
Esse painel mostra as seguintes informações:
Nível SLSA:esse 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:qualquer vulnerabilidade encontrada nos artefatos. Clique no nome da imagem (java-guestbook-backend) para ver os artefatos verificados em busca de vulnerabilidades.
Dependências para os artefatos de build.
Detalhes do build:detalhes da versão, 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 playbook-backend-prod.
Na página Detalhes do serviço, clique em Revisões.
No painel Revisões, clique em Segurança.
O painel Segurança do Software Delivery Shield vai aparecer para a implantação.
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 SLSA:esse 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:qualquer vulnerabilidade encontrada nos artefatos. Clique no nome da imagem (java-guestbook-backend) para ver os artefatos verificados em busca de vulnerabilidades.
Dependências para os artefatos de build.
Detalhes do build:detalhes da versão, 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
guestbook-backend-dev
do Cloud Run: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
que a segurança da cadeia de suprimentos de software foi criada 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 o painel de insights de segurança do Software Delivery Shield no Cloud Run.
- Saiba como conferir insights de segurança ao implantar no GKE.
- Saiba como ver insights de segurança de builds.
- Saiba mais sobre o Software Delivery Shield.