Realiza implementaciones en Cloud Run y consulta 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 las estadísticas de seguridad de la implementación en la pestaña Seguridad de la consola deGoogle Cloud . Harás lo siguiente:
- Implementa una imagen en Cloud Run con Cloud Deploy. Cloud Deploy es un Google Cloud servicio que automatiza la entrega de tus aplicaciones a una serie de entornos de destino en una secuencia de promoción definida.
Consulta las siguientes estadísticas de seguridad de la implementación:
- Información de identidad y encriptación de la implementación.
- Nivel de Niveles de cadena de suministro para artefactos de software (SLSA), que identifica el nivel de garantía de la implementación.
- Vulnerabilidades en los artefactos de compilación
- Lista de materiales de software (SBOM) para los artefactos de compilación
- Procedencia de la compilación, que es 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 de compilación y la duración de la compilación.
Antes de comenzar
- 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.
-
Si usas un proveedor de identidad externo (IdP), primero debes acceder a gcloud CLI con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente 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.
-
Si usas un proveedor de identidad externo (IdP), primero debes acceder a gcloud CLI con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente 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 Establece una variable de entorno para el ID del proyecto:
export PROJECT_ID=$(gcloud config get project)
Establece la región predeterminada para Cloud Deploy:
gcloud config set deploy/region us-central1
Crea un nuevo repositorio de Docker llamado
containers
en la ubicaciónus-central1
con la descripción “Repositorio de Docker”:gcloud artifacts repositories create containers --repository-format=docker \ --location=us-central1 --description="Docker repository"
Verifica que se haya creado el repositorio:
gcloud artifacts repositories list
Deberías ver
containers
en la lista de repositorios que se muestran.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
Actualiza
cloudrun.clouddeploy.yaml
para reemplazarPROJECT_ID
por el ID de tu proyecto:sed -i "s/PROJECT_ID/${PROJECT_ID}/g" cloudrun.clouddeploy.yaml
Compila y aloja en un contenedor la aplicación de Java con Cloud Build. El siguiente comando compila y aloja 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 que se complete 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
Registra tu canalización y tus destinos con el servicio de Cloud Deploy:
gcloud deploy apply --file cloudrun.clouddeploy.yaml
Ahora tienes una canalización, con destinos, lista para implementar tu aplicación en tu primer destino.
Para verificar que tu canalización existe, ve a la página Canalizaciones de entrega en la consola de Google Cloud :
Abrir la página Canalizaciones de entrega
Se muestra la canalización de entrega que acabas de crear,
cloudrun-guestbook-backend-delivery
.Haz clic en
cloudrun-guestbook-backend-delivery
para supervisar el progreso. Se abrirá la página Detalles de la canalización de entrega.En Cloud Shell, crea una versión en 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 aparece en la sección Versiones de la página Detalles de la canalización de entrega.
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 Promover para
dev-cluster
. Es posible que debas actualizar la página.En el primer objetivo de la visualización de la canalización de entrega,
cloudrun-dev
, haz clic en Promote.Se muestra el cuadro de diálogo Promocionar la versión. Muestra los detalles del destino al que promocionarás.
Haz clic en Promover.
Ahora, la versión está en cola para su implementación en
cloudrun-prod
. Cuando se completa la implementación, la visualización de la canalización de entrega la muestra como implementada:Abre la página Canalizaciones de entrega de Cloud Deploy en la consola deGoogle Cloud .
En la tabla Canalizaciones de entrega, haz clic en cloudrun-guestbook-backend-delivery.
En la página Detalles de las canalizaciones de entrega, haz clic en test-release-008.
En la página Detalles de la versión, haz clic en la pestaña Artefactos.
En la tabla Build artifacts, busca la fila con el artefacto java-guestbook-backend y, en la columna Security insights correspondiente, haz clic en View.
Nivel de SLSA: Esta compilación alcanzó el nivel 3 de SLSA. Haz clic en el vínculo Más información para saber qué significa este nivel de seguridad.
Vulnerabilidades: Cualquier vulnerabilidad que se encuentre en tus artefactos. Haz clic en el nombre de la imagen (java-guestbook-backend) para ver los artefactos que se analizaron en busca de vulnerabilidades.
Dependencias para los artefactos de compilación.
Detalles de la compilación: Detalles de la compilación, como el compilador y el vínculo para ver los registros.
Abre la página Servicios de Cloud Run.
En la tabla Servicios de Cloud Run, haz clic en guestbook-backend-prod.
En la página Detalles del servicio, haz clic en Revisiones.
En el panel Revisiones, haz clic en Seguridad.
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 usa para la implementación.
Nivel de SLSA: Esta compilación alcanzó el nivel 3 de SLSA. Haz clic en el vínculo Más información para saber qué significa este nivel de seguridad.
Vulnerabilidades: Cualquier vulnerabilidad que se encuentre en tus artefactos. Haz clic en el nombre de la imagen (java-guestbook-backend) para ver los artefactos que se analizaron en busca de vulnerabilidades.
Dependencias para los artefactos de compilación.
Detalles de la compilación: Detalles de la compilación, como el compilador y el vínculo para ver los registros.
Inhabilita la API de Container Scanning:
gcloud services disable containerscanning.googleapis.com --force
Borra el servicio de
guestbook-backend-dev
Cloud Run:gcloud run services delete guestbook-backend-dev --region=us-central1 \ --project=${PROJECT_ID}
Borra el servicio
guestbook-backend-prod
:gcloud run services delete guestbook-backend-prod --region=us-central1 \ --project=${PROJECT_ID}
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
yrollout
que Software supply chain security creó para esa canalización.Borra el repositorio de Artifact Registry:
gcloud artifacts repositories delete containers \ --location=us-central1 --async
- Obtén más información sobre las estadísticas de seguridad en Cloud Run.
- Obtén más información para consultar estadísticas de seguridad cuando realices implementaciones en GKE.
- Obtén más información para ver estadísticas de seguridad de las compilaciones.
- Obtén más información sobre la seguridad de la cadena de suministro de software.
Cómo establecer la configuración predeterminada
Otorgar acceso
Otorga roles de IAM a la cuenta de servicio predeterminada de Compute Engine. Esto es necesario para que Cloud Deploy implemente 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
Prepara la aplicación de ejemplo
Necesitarás algún 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 Java.
Compila la aplicación
Genera la SBOM para la imagen compilada
Una SBOM es un inventario completo de una aplicación que identifica los paquetes de los que depende tu software. El contenido puede incluir software de terceros de proveedores, artefactos internos y bibliotecas de código abierto.
Genera la SBOM para la imagen que compilaste en la sección anterior:
gcloud artifacts sbom export \
--uri=us-central1-docker.pkg.dev/${PROJECT_ID}/containers/java-guestbook-backend:quickstart
Implementa el contenedor en Cloud Run con Cloud Deploy
Consulta estadísticas de seguridad en Cloud Deploy
Verás la pestaña Seguridad para la implementación.
En esta pestaña, se muestra la siguiente información en la sección Estadísticas de seguridad:
Consulta estadísticas de seguridad en Cloud Run
Verás la pestaña Seguridad para la implementación.
En esta pestaña, se muestra la siguiente información en la sección Estadísticas de seguridad:
Limpia
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 Google Cloud que tiene los recursos.
Eso es todo, finalizaste la guía de inicio rápido.