Implantar no Cloud Run e conferir insights de segurança

Neste guia de início rápido, explicamos como implantar uma imagem de contêiner no Cloud Run e acessar insights de segurança para a implantação no Software Delivery Shield painel Segurança 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 de aplicativos para 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íveis da cadeia de suprimentos para artefatos de software (SLSA), que identifica o nível de garantia da implantação.
    • Vulnerabilidades em artefatos de builds.
    • Lista de materiais do software (SBOM, na sigla em inglês) para os artefatos 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 de origem, o conjunto de ferramentas, as etapas e a duração da compilação.

Antes de começar

  1. 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.
  2. Install the Google Cloud CLI.
  3. To initialize the gcloud CLI, run the following command:

    gcloud init
  4. 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.

  5. Verifique se a cobrança está ativada para o seu projeto do Google Cloud.

  6. 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
  7. Install the Google Cloud CLI.
  8. To initialize the gcloud CLI, run the following command:

    gcloud init
  9. 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.

  10. Verifique se a cobrança está ativada para o seu projeto do Google Cloud.

  11. 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

  1. Defina uma variável de ambiente para o ID do projeto:

    export PROJECT_ID=$(gcloud config get project)
    
  2. 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 o Cloud Deploy para implantar 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

  1. Crie um novo repositório do Docker chamado containers no local us-central1 com a descrição "repositório do Docker":

    gcloud artifacts repositories create containers --repository-format=docker \
        --location=us-central1 --description="Docker repository"
    
  2. Verifique se o repositório foi criado:

    gcloud artifacts repositories list
    

    Você verá containers na lista de objetos repositórios.

Preparar aplicativo de amostra

Você precisará de um código-fonte de amostra para criar e implantar. Nesta seção, você vai clonar um repositório de origem que contém um exemplo de código Java.

  1. 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
    
  2. Atualize cloudrun.clouddeploy.yaml para substituir PROJECT_ID pelo ID do projeto:

    sed -i "s/PROJECT_ID/${PROJECT_ID}/g" cloudrun.clouddeploy.yaml
    

Criar o aplicativo

  1. Criar e conteinerizar o aplicativo Java usando o Cloud Build. O o comando a seguir cria e conteineriza o aplicativo Java e armazena os contêiner criado no repositório Docker do Artifact Registry:

    gcloud builds submit --config=cloudbuild.yaml --region=us-central1
    

    Após a conclusão do build, você verá uma mensagem de status de sucesso semelhante à seguintes:

    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 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

  1. Registre o pipeline e os destinos no serviço do Cloud Deploy:

    gcloud deploy apply --file cloudrun.clouddeploy.yaml
    

    Agora você tem um pipeline com destinos prontos para implantar o aplicativo no primeiro destino.

  2. 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.

  3. Clique em cloudrun-guestbook-backend-delivery para monitorar o progresso. O A página Detalhes do pipeline de entrega será aberta.

  4. 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.

  5. Monitore a visualização Visualização do pipeline em Pipeline de entrega. detalhes até que o botão Promover seja exibido para dev-cluster. Você talvez seja necessário atualizar a página.

  6. 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.

  7. 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:

    Captura de tela da implantação

Conferir insights de segurança no Cloud Deploy

  1. Abra a página Pipelines de entrega do Cloud Deploy na console do Google Cloud.

    Abrir a página do Cloud Deploy

  2. Na tabela Pipelines de entrega, clique em cloudrun-guestbook-backend-delivery.

  3. Na página Detalhes dos pipelines de entrega, clique em test-release-008.

  4. Na página Detalhes da versão, clique na guia Artefatos.

  5. Na tabela Build artifacts, localize a linha com o artefato java-guestbook-backend e, na coluna Security insights correspondente, clique em View.

Você verá o painel Segurança do Software Delivery Shield para a implantação.

Captura de tela do painel de segurança

Esse painel mostra as seguintes informações:

  • Nível SLSA: esta versão atingiu o nível 3 de SLSA. Clique no botão Saiba mais para saber o que esse nível de segurança significa.

  • Vulnerabilidades:todas as vulnerabilidades encontradas nos artefatos. Clique no botão da imagem (java-guestbook-backend) para ver os artefatos que foram e verificados em busca de vulnerabilidades.

  • Dependências dos artefatos de compilação.

  • Detalhes da versão:detalhes da versão, como o builder e o link para e conferir os registros.

Mostrar insights de segurança no Cloud Run

  1. Abra a página Serviços do Cloud Run.

    Abrir a página Serviços do Cloud Run

  2. Na tabela Services do Cloud Run, clique em guestbook-backend-prod.

  3. Na página Detalhes do serviço, clique em Revisões.

  4. No painel Revisões, clique em Segurança.

Você verá o painel Segurança do Software Delivery Shield para a implantação.

Captura de tela do painel de segurança

Esse painel exibe as seguintes informações:

  • Identidade e criptografia: o endereço de e-mail do endereço de e-mail padrão do Compute Engine conta de serviço e a chave de criptografia usada para a implantação.

  • Nível SLSA: esta versão atingiu o nível 3 de SLSA. Clique no botão Saiba mais para saber o que esse nível de segurança significa.

  • Vulnerabilidades:todas as vulnerabilidades encontradas nos artefatos. Clique no botão da imagem (java-guestbook-backend) para ver os artefatos que foram e verificados em busca de vulnerabilidades.

  • Dependências dos artefatos de compilação.

  • Detalhes da versão:detalhes da versão, como o builder e o link para e conferir os 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.

  1. Desativar a API Container Scanning:

    gcloud services disable containerscanning.googleapis.com --force
    
  2. Exclua o serviço guestbook-backend-dev do Cloud Run:

    gcloud run services delete guestbook-backend-dev --region=us-central1 \
        --project=${PROJECT_ID}
    
  3. Exclua o serviço guestbook-backend-prod:

    gcloud run services delete guestbook-backend-prod --region=us-central1 \
        --project=${PROJECT_ID}
    
  4. 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 release e rollout recursos de segurança da cadeia de suprimentos de software criada para esse pipeline.

  5. 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