Implemente no Cloud Run e veja estatísticas de segurança
Este início rápido explica como implementar uma imagem de contentor no Cloud Run e ver estatísticas de segurança para a implementação no separador Segurança naGoogle Cloud consola. Vai:
- Implemente uma imagem no Cloud Run através do Cloud Deploy. O Cloud Deploy é um Google Cloud serviço que automatiza o fornecimento das suas aplicações a uma série de ambientes de destino numa sequência de promoção definida.
Veja as seguintes estatísticas de segurança para a implementação:
- Informações de identidade e encriptação para a implementação.
- Nível dos níveis da cadeia de fornecimento para artefactos de software (SLSA), que identifica o nível de garantia para a implementação.
- Vulnerabilidades nos artefactos de compilação.
- Lista de materiais de software (SBOM) para os artefactos de compilação.
- Crie a proveniência, que é uma coleção de metadados validáveis sobre uma compilação. Inclui detalhes como os resumos das imagens criadas, as localizações das fontes de entrada, a cadeia de ferramentas de compilação, os passos de compilação e a duração da compilaçã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.
-
Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro, tem de iniciar sessão na CLI gcloud com a sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
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.
-
-
Verify 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.
-
Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro, tem de iniciar sessão na CLI gcloud com a sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
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.
-
-
Verify 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 Defina uma variável de ambiente para o ID do projeto:
export PROJECT_ID=$(gcloud config get project)
Defina a região predefinida para o Cloud Deploy:
gcloud config set deploy/region us-central1
Crie um novo repositório Docker denominado
containers
na localizaçãous-central1
com a descrição "Repositório 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
Deverá ver
containers
na lista de repositórios apresentados.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
Crie e coloque a aplicação Java num contentor com o Cloud Build. O comando seguinte cria e coloca a aplicação Java num contentor, e armazena o contentor criado no repositório Docker do Artifact Registry:
gcloud builds submit --config=cloudbuild.yaml --region=us-central1
Após a conclusão da compilação, é apresentada uma mensagem de estado de êxito 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
Registe o pipeline e os destinos no serviço Cloud Deploy:
gcloud deploy apply --file cloudrun.clouddeploy.yaml
Agora, tem um pipeline com alvos pronto para implementar a sua aplicação no primeiro alvo.
Para verificar se o pipeline existe, aceda à página Pipelines de entrega na consola Google Cloud :
Abra a página Pipelines de fornecimento
É apresentada a pipeline de entrega que acabou de criar,
cloudrun-guestbook-backend-delivery
.Clique em
cloudrun-guestbook-backend-delivery
para monitorizar o progresso. É apresentada a página Detalhes do pipeline de entrega.No Cloud Shell, crie um lançamento 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
O novo lançamento aparece na secção Lançamentos na página Detalhes do pipeline de entrega.
Monitorize a vista Visualização da pipeline na página Detalhes da pipeline de fornecimento até o botão Promover ser apresentado para
dev-cluster
. Pode ter de atualizar a página.No primeiro alvo na visualização do pipeline de fornecimento,
cloudrun-dev
, clique em Promover.É apresentada a caixa de diálogo Promover lançamento. Mostra os detalhes do destino que está a promover.
Clique em Promover.
O lançamento está agora na fila para implementação no
cloudrun-prod
. Quando a implementação estiver concluída, a visualização do pipeline de publicação mostra que foi implementada:Abra a página Pipelines de entrega do Cloud Deploy na Google Cloud consola.
Na tabela Pipelines de fornecimento, clique em cloudrun-guestbook-backend-delivery.
Na página Detalhes dos pipelines de fornecimento, clique em test-release-008.
Na página Detalhes do lançamento, clique no separador Artefactos.
Na tabela Criar artefactos, localize a linha com o artefacto java-guestbook-backend e, na coluna Estatísticas de segurança correspondente, clique em Ver.
Nível SLSA: esta compilação alcançou o nível 3 da SLSA. Clique no link Saiba mais para saber o que significa este nível de segurança.
Vulnerabilidades: quaisquer vulnerabilidades encontradas nos seus artefactos. Clique no nome da imagem (java-guestbook-backend) para ver os artefactos que foram analisados quanto a vulnerabilidades.
Dependências dos artefactos de compilação.
Detalhes da compilação: detalhes da compilação, como o criador e o link para ver os registos.
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 Revisões, clique em Segurança.
Identidade e encriptação: o endereço de email da conta de serviço do Compute Engine predefinida e a chave de encriptação usada para a implementação.
Nível SLSA: esta compilação alcançou o nível 3 da SLSA. Clique no link Saiba mais para saber o que significa este nível de segurança.
Vulnerabilidades: quaisquer vulnerabilidades encontradas nos seus artefactos. Clique no nome da imagem (java-guestbook-backend) para ver os artefactos que foram analisados quanto a vulnerabilidades.
Dependências dos artefactos de compilação.
Detalhes da compilação: detalhes da compilação, como o criador e o link para ver os registos.
Desative a API Container Scanning:
gcloud services disable containerscanning.googleapis.com --force
Elimine o serviço do
guestbook-backend-dev
Cloud Run:gcloud run services delete guestbook-backend-dev --region=us-central1 \ --project=${PROJECT_ID}
Elimine o serviço
guestbook-backend-prod
:gcloud run services delete guestbook-backend-prod --region=us-central1 \ --project=${PROJECT_ID}
Elimine o pipeline de envio, incluindo o lançamento e as implementações:
gcloud deploy delivery-pipelines delete cloudrun-guestbook-backend-delivery \ --force --region=us-central1 --project=${PROJECT_ID}
Este comando elimina o próprio pipeline de entrega, além de todos os recursos
release
erollout
de segurança da cadeia de abastecimento de software criados para esse pipeline.Elimine o repositório do Artifact Registry:
gcloud artifacts repositories delete containers \ --location=us-central1 --async
- Saiba mais sobre as estatísticas de segurança no Cloud Run.
- Saiba como ver estatísticas de segurança quando implementar no GKE.
- Saiba como ver estatísticas de segurança para compilações.
- Saiba mais acerca da segurança da cadeia de fornecimento de software.
Defina as predefinições
Conceder acesso
Conceda funções IAM à conta de serviço predefinida do Compute Engine. Isto é necessário para o Cloud Deploy implementar 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 tiver problemas em adicionar qualquer uma destas funções, contacte o administrador do projeto.
Crie um repositório Docker no Artifact Registry
Prepare uma aplicação de exemplo
Precisa de algum código fonte de exemplo para criar e implementar. Nesta secção, vai clonar um repositório de origem existente que contém um exemplo de código Java.
Crie a aplicação
Gere a SBOM para a imagem criada
Uma SBOM é um inventário completo de uma aplicação que identifica os pacotes dos quais o seu software depende. Os conteúdos podem incluir software de terceiros de fornecedores, artefactos internos e bibliotecas de código aberto.
Gere a SBOM para a imagem que criou na secção anterior:
gcloud artifacts sbom export \
--uri=us-central1-docker.pkg.dev/${PROJECT_ID}/containers/java-guestbook-backend:quickstart
Implemente o contentor no Cloud Run através do Cloud Deploy
Veja estatísticas de segurança no Cloud Deploy
É apresentado o separador Segurança para a implementação.
Este separador apresenta as seguintes informações na secção Estatísticas de segurança:
Veja estatísticas de segurança no Cloud Run
É apresentado o separador Segurança para a implementação.
Este separador apresenta as seguintes informações na secção Estatísticas de segurança:
Limpar
Para evitar incorrer em custos na sua Google Cloud conta pelos recursos usados nesta página, elimine o Google Cloud projeto com os recursos.
É tudo. Concluiu este início rápido!