Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.
Guia de início rápido: implantar no Cloud Run e ver insights de segurança

Implantar no Cloud Run e ver insights de segurança

Neste guia de início rápido, explicamos como implantar uma imagem de contêiner no Cloud Run e ver 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 Google Cloud Deploy. O Google Cloud Deploy é um serviço do Google Cloud que automatiza a entrega dos seus aplicativos para uma série de ambientes de destino em uma sequência de promoção definida.
  • Veja os seguintes insights de segurança da implantação:

    • Informações de identidade e criptografia para a implantação.
    • Níveis de cadeia de suprimentos para os artefatos de software (SLSA, na sigla em inglês), que identifica o nível de garantia da implantação.
    • Vulnerabilidades em artefatos de versão.
    • Procedência do build, que é uma coleção de metadados verificáveis sobre um build. Isso inclui detalhes como os resumos das imagens criadas, os locais de origem de entrada, o conjunto de ferramentas de compilação, as etapas de compilação e a duração da compilação.

Antes de começar

  1. Faça login na sua conta do Google Cloud. Se você começou a usar o Google Cloud agora, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
  2. Instale e inicialize a Google Cloud CLI.
  3. Criar ou selecionar um projeto do Google Cloud.

    • Criar um projeto do Cloud:

      gcloud projects create PROJECT_ID
    • Selecionar o projeto do Cloud que você criou:

      gcloud config set project PROJECT_ID
  4. Verifique se o faturamento está ativado para seu projeto na nuvem. Saiba como verificar se o faturamento está ativado em um projeto.

  5. Ative as APIs Cloud Build, Artifact Registry, Google Cloud Deploy, Cloud Run, and Container Scanning:

    gcloud services enable cloudbuild.googleapis.com artifactregistry.googleapis.com clouddeploy.googleapis.com run.googleapis.com containerscanning.googleapis.com
  6. Instale e inicialize a Google Cloud CLI.
  7. Criar ou selecionar um projeto do Google Cloud.

    • Criar um projeto do Cloud:

      gcloud projects create PROJECT_ID
    • Selecionar o projeto do Cloud que você criou:

      gcloud config set project PROJECT_ID
  8. Verifique se o faturamento está ativado para seu projeto na nuvem. Saiba como verificar se o faturamento está ativado em um projeto.

  9. Ative as APIs Cloud Build, Artifact Registry, Google Cloud Deploy, Cloud Run, and Container Scanning:

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

  1. Crie um novo repositório do Docker denominado containers no local us-central1 e 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 repositórios exibidos.

Preparar aplicativo de amostra

Você precisará de uma amostra de código-fonte para criar e implantar. Nesta seção, você clonará um repositório de origem existente que contém uma amostra 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 seu projeto:

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

Criar o aplicativo

  1. Criar e colocar em contêiner o aplicativo Java usando o Cloud Build. O comando a seguir cria e coloca em contêiner 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, você verá uma mensagem de status de sucesso semelhante a esta:

    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
    

Implantar o contêiner no Cloud Run usando o Google Cloud Deploy

  1. Registre o pipeline e os destinos com o serviço Google Cloud Deploy:

    gcloud deploy apply --file cloudrun.clouddeploy.yaml
    

    Agora você tem um pipeline com destinos prontos para implantar seu 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. A página Detalhes do pipeline de entrega é aberta.

  4. No Cloud Shell, crie uma versão no Google 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 Lançamentos na página Detalhes do pipeline de entrega.

  5. Monitore a visualização de 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.

  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

Ver insights de segurança da implantação

  1. Abra a página Serviços do Cloud Run Security para a cadeia de suprimentos de software.

    Abrir a página dos serviços do Cloud Run

  2. Na tabela Serviços do Cloud Run, clique em guestbook-backend-prod.

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

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

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

Captura de tela do painel de segurança

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.

  • SLSA Level: este build está no nível 3A da SLSA. Clique no link Saiba mais para saber o que esse nível de segurança significa.

  • Vulnerabilidades:todas as vulnerabilidades encontradas nas dependências. Clique no nome da imagem (java-guestbook-backend) para ver os artefatos que foram verificados para dependências. O Software Delivery Shield mostra detalhes das vulnerabilidades identificadas para que você possa avaliar o impacto no aplicativo e as etapas que precisam ser tomadas para resolvê-lo.

  • Detalhes do build: detalhes do build, como o builder e o link para ver registros.

  • Procedência do build: procedência para o build.

Limpar

Para evitar cobranças na sua conta do Google Cloud pelos recursos usados nesta página, exclua o projeto do Cloud com esses recursos.

  1. Desative 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 recursos release e rollout de segurança da cadeia de suprimentos de software criados 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