Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.
Guía de inicio rápido: Implementa en Cloud Run y consulta las estadísticas de seguridad

Implementa en Cloud Run y consulta las estadísticas de seguridad

En esta guía de inicio rápido, se explica cómo implementar una imagen de contenedor en Cloud Run y ver estadísticas de seguridad para la implementación en el panel Seguridad de Software Delivery Shield en Google Cloud Console. Harás lo siguiente:

  • Implementa una imagen en Cloud Run con Google Cloud Deploy. Google Cloud Deploy es un servicio de Google Cloud que automatiza la entrega de las aplicaciones a una serie de entornos de destino en una secuencia de promoción definida.
  • Consulta las siguientes estadísticas de seguridad para la implementación:

    • Información de identidad y encriptación para la implementación.
    • Niveles de la cadena de suministro para artefactos de software (SLSA), que identifican el nivel de seguridad de la implementación.
    • Vulnerabilidades en los artefactos de compilación
    • Origen de las compilaciones: Se trata de una colección de metadatos verificables sobre una compilación. Incluye detalles como los resúmenes de las imágenes compiladas, las ubicaciones de la fuente de entrada, la cadena de herramientas de compilación, los pasos y la duración de la compilación.

Antes de comenzar

  1. Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  2. Instala y, luego, inicializa Google Cloud CLI.
  3. Crea o selecciona un proyecto de Google Cloud.

    • Crea un proyecto de Cloud:

      gcloud projects create PROJECT_ID
    • Selecciona el proyecto de Cloud que creaste:

      gcloud config set project PROJECT_ID
  4. Asegúrate de que la facturación esté habilitada para tu proyecto de Cloud. Obtén información sobre cómo verificar si la facturación está habilitada en un proyecto.

  5. Habilita las APIs de 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. Instala y, luego, inicializa Google Cloud CLI.
  7. Crea o selecciona un proyecto de Google Cloud.

    • Crea un proyecto de Cloud:

      gcloud projects create PROJECT_ID
    • Selecciona el proyecto de Cloud que creaste:

      gcloud config set project PROJECT_ID
  8. Asegúrate de que la facturación esté habilitada para tu proyecto de Cloud. Obtén información sobre cómo verificar si la facturación está habilitada en un proyecto.

  9. Habilita las APIs de 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

Establecer configuración predeterminada

  1. Establece una variable de entorno para el ID del proyecto:

    export PROJECT_ID=$(gcloud config get project)
    
  2. Establece la región predeterminada para Google Cloud Deploy:

    gcloud config set deploy/region us-central1
    

Otorgar acceso

Otorga funciones de IAM a la cuenta de servicio predeterminada de Compute Engine. Esto es necesario para que Google Cloud Deploy implemente las cargas de trabajo en 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"

Si tienes problemas para agregar cualquiera de estos roles, comunícate con el administrador de tu proyecto.

Crea un repositorio de Docker en Artifact Registry

  1. Crea un nuevo repositorio de Docker llamado containers en la ubicación us-central1 y con la descripción “Docker repository”:

    gcloud artifacts repositories create containers --repository-format=docker \
        --location=us-central1 --description="Docker repository"
    
  2. Verifica que se haya creado el repositorio:

    gcloud artifacts repositories list
    

    Deberías ver containers en la lista de repositorios que se muestran.

Prepara la aplicación de muestra

Necesitará un código fuente de muestra para compilar e implementar. En esta sección, clonarás un repositorio de código fuente existente que contiene una muestra de código de Java.

  1. Clona el repositorio que contiene la muestra de código de Java:

    git clone https://github.com/googlecloudplatform/software-delivery-shield-demo-java.git
    cd software-delivery-shield-demo-java/backend
    
  2. Actualiza cloudrun.clouddeploy.yaml para reemplazar PROJECT_ID por el ID del proyecto:

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

Compila la aplicación

  1. Compilar y crear contenedores para la aplicación de Java con Cloud Build El siguiente comando compila y organiza en contenedores la aplicación de Java y almacena el contenedor compilado en el repositorio de Docker de Artifact Registry:

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

    Una vez finalizada la compilación, verás un mensaje de estado de éxito similar al siguiente:

    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
    

Implemente el contenedor en Cloud Run con Google Cloud Deploy

  1. Registra tu canalización y objetivos con el servicio de Google Cloud Deploy:

    gcloud deploy apply --file cloudrun.clouddeploy.yaml
    

    Ahora tiene una canalización con destinos listos para implementar su aplicación en su primer destino.

  2. Para verificar que la canalización exista, ve a la página Canalizaciones de entrega en Google Cloud Console:

    Abrir la página Canalizaciones de entrega

    Se muestra cloudrun-guestbook-backend-delivery, la canalización de entrega que acabas de crear.

  3. Haga clic en cloudrun-guestbook-backend-delivery para supervisar el progreso. Se abrirá la página Detalles de la canalización de entrega.

  4. En Cloud Shell, crea una versión en 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
    

    La versión nueva aparecerá en la sección Lanzamientos de la página Detalles de la canalización de entrega.

  5. Supervisa la vista Visualización de la canalización en la página Detalles de la canalización de entrega hasta que aparezca el botón Promocionar para dev-cluster. Es posible que debas actualizar la página.

  6. En el primer destino en la visualización de la canalización de entrega, cloudrun-dev, haz clic en Promocionar.

    Se muestra el cuadro de diálogo Promocionar la versión. Muestra los detalles del destino al que promocionarás.

  7. Haz clic en Promover.

    La versión ahora está en cola para la implementación en cloudrun-prod. Cuando se completa la implementación, la visualización de la canalización de entrega se muestra como implementada:

    Captura de pantalla de la implementación

Ver las estadísticas de seguridad de la implementación

  1. Abre la página Servicios de seguridad de la cadena de suministro de software de Cloud Run.

    Abrir la página Servicios de Cloud Run

  2. En la tabla Servicios de Cloud Run, haz clic en guestbook-backend-prod.

  3. En la página Detalles del servicio, haz clic en Revisiones.

  4. En el panel Revisiones, haz clic en Seguridad.

Verás el panel Seguridad de Software Delivery Shield para la implementación.

Captura de pantalla del panel de seguridad

En este panel, se muestra la siguiente información:

  • Identidad y encriptación: La dirección de correo electrónico de la cuenta de servicio predeterminada de Compute Engine y la clave de encriptación que se usó para la implementación

  • Nivel SLSA: Esta compilación se encuentra en el nivel SLSA 3. Haz clic en el vínculo Más información para conocer el significado de este nivel de seguridad.

  • Vulnerabilidades: Cualquier vulnerabilidad que encuentres en tus dependencias. Haz clic en el nombre de la imagen (java-guestbook-backend) a fin de ver los artefactos que se analizaron para detectar dependencias. Software Delivery Shield muestra los detalles de las vulnerabilidades identificadas a fin de que puedas evaluar el impacto en tu aplicación y los pasos que quieres seguir para abordarlas.

  • Detalles de compilación: Detalles de la compilación, como el compilador y el vínculo para ver los registros

  • Origen de la compilación: Procedencia para la compilación

Realiza una limpieza

Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos que se usaron en esta página, borra el proyecto de Cloud que tiene los recursos.

  1. Inhabilita la API de Container Scanning:

    gcloud services disable containerscanning.googleapis.com --force
    
  2. Borra el servicio guestbook-backend-dev de Cloud Run:

    gcloud run services delete guestbook-backend-dev --region=us-central1 \
        --project=${PROJECT_ID}
    
  3. Borra el servicio guestbook-backend-prod:

    gcloud run services delete guestbook-backend-prod --region=us-central1 \
        --project=${PROJECT_ID}
    
  4. Borra la canalización de entrega, incluidas la versión y los lanzamientos:

    gcloud deploy delivery-pipelines delete cloudrun-guestbook-backend-delivery \
        --force --region=us-central1 --project=${PROJECT_ID}
    

    Este comando borra la canalización de entrega en sí, además de todos los recursos release y rollout, la seguridad de la cadena de suministro de software creada para esa canalización.

  5. Borra el repositorio de Artifact Registry:

    gcloud artifacts repositories delete containers \
        --location=us-central1 --async
    

Eso es todo, finalizaste la guía de inicio rápido.

¿Qué sigue?