En esta guía se explica cómo configurar la autorización binaria para aplicar el despliegue basado en políticas de servicios y trabajos de Cloud Run.
Antes de empezar
Configura Cloud Run y habilita las APIs siguiendo estos pasos:
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Cloud Run, Artifact Registry, Binary Authorization APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. -
Install the Google Cloud CLI.
-
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Cloud Run, Artifact Registry, Binary Authorization APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. -
Install the Google Cloud CLI.
-
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init
Ve a la página Cloud Run de la Google Cloud consola.
Haz clic en el servicio.
Haz clic en la pestaña Seguridad.
Para habilitar la implementación obligatoria de la autorización binaria en el servicio, haz clic en Habilitar.
Opcional: Para configurar la política de autorización binaria, haz clic en Configurar política.
Si va a crear un servicio, puede saltarse este paso. Si va a actualizar un servicio, descargue su configuración YAML:
gcloud run services describe SERVICE --format export > service.yaml
Actualiza la anotación
run.googleapis.com/binary-authorization:
de la siguiente manera:apiVersion: serving.knative.dev/v1 kind: Service metadata: annotations: run.googleapis.com/binary-authorization: POLICY name: SERVICE spec: template:
Haz los cambios siguientes:
- SERVICE: el nombre de tu Cloud Run
- POLICY: se ha definido como
default
Sustituye el servicio por su nueva configuración con el siguiente comando:
Ve a la página Trabajos de Cloud Run de la Google Cloud consola.
Haz clic en el trabajo para abrir sus detalles.
Haz clic en la pestaña Configuration (Configuración).
En Autorización binaria, selecciona una política de la lista.
Haz clic en Aplicar para habilitar la implementación obligatoria de la autorización binaria en el trabajo.
Opcional: Para configurar la política de autorización binaria, haz clic en Configurar política.
JOB_NAME
: el nombre de tu trabajo.POLICY
: la política que quieras aplicar. Usa el valordefault
para usar la política predeterminada.Ve a la página de Cloud Run:
Haz clic en Crear servicio.
En el formulario Crear servicio :
- Selecciona Cloud Run como plataforma de desarrollo.
- Selecciona la región en la que quieres que se encuentre tu servicio.
- Introduce el nombre del servicio.
- Haz clic en Siguiente para ir a la página Configurar la primera revisión del servicio.
- Selecciona Desplegar una revisión desde una imagen de contenedor que ya existe.
- Introduce o selecciona la imagen que quieras implementar.
- Despliega la sección Configuración avanzada.
- Haz clic en la pestaña Seguridad.
Seleccione la casilla Verificar el despliegue de contenedores con la autorización binaria.
Opcional: Haz clic en Configurar política para configurar la política de autorización binaria. Para obtener más información sobre cómo configurar una política, consulta Configurar una política.
Implementa el servicio.
SERVICE_NAME
: el nombre de tu servicio.IMAGE_URL
: la imagen que quieras implementar.REGION
: la región en la que quieres implementar tu servicio.Crea un trabajo con la autorización binaria habilitada:
gcloud run jobs create JOB_NAME \ --image IMAGE_URL OPTIONS \ --binary-authorization=POLICY \ --region=REGION
Haz los cambios siguientes:
JOB_NAME
: el nombre del trabajo que quieras crear. Puedes omitir este parámetro, pero se te pedirá el nombre del trabajo si lo haces.POLICY
: la política que quieras aplicar. Usa el valordefault
para usar la política predeterminada.- IMAGE_URL: una referencia a la imagen del contenedor, por ejemplo,
us-docker.pkg.dev/cloudrun/container/job:latest
. REGION
: la región en la que se ejecutará este trabajo.OPTIONS
: cualquiera de las opciones disponibles descritas en la página de creación de trabajos de Cloud Run.
Espera a que termine de crearse el trabajo. Si se completa correctamente, la consola mostrará un mensaje de éxito.
Para ejecutar el trabajo, consulta Ejecutar trabajos o Ejecutar trabajos según una programación.
Crea un archivo
job.yaml
con este contenido:apiVersion: run.googleapis.com/v1 kind: Job metadata: name: JOB annotations: run.googleapis.com/binary-authorization: POLICY spec: template: spec: containers: - image: IMAGE
Haz los cambios siguientes:
- JOB: el nombre de tu tarea de Cloud Run
- IMAGE: la URL de la imagen del contenedor
- POLICY: se ha definido como
default
Implementa el nuevo trabajo con el siguiente comando:
gcloud run jobs replace job.yaml
- Usa el
built-by-cloud-build
attestor para desplegar solo imágenes creadas por Cloud Build. - Configura la política de autorización binaria con la Google Cloud consola o la herramienta de línea de comandos.
- Usa certificaciones para desplegar solo imágenes de contenedor firmadas.
- Consulta un vídeo sobre cómo usar la autorización binaria en Cloud Run para que solo se desplieguen las compilaciones aprobadas.
Habilitar la autorización binaria en un servicio de Cloud Run
Puedes habilitar la implementación obligatoria de la autorización binaria en un servicio que ya tengas. Para activar la aplicación después de habilitarla, puede que tengas que desplegar una revisión o actualizar el tráfico del servicio.
Puedes habilitar la aplicación de la autorización binaria en un servicio que ya tengas mediante la Google Cloud consola o la CLI de Google Cloud:
Consola
gcloud
Habilita la autorización binaria en el servicio e impleméntala:
gcloud run services update SERVICE_NAME --binary-authorization=default
Sustituye SERVICE_NAME
por el nombre de tu servicio.
YAML
gcloud run services replace service.yaml
Habilitar la autorización binaria en un trabajo de Cloud Run
Puedes habilitar la aplicación de la autorización binaria en un trabajo que ya tengas mediante laGoogle Cloud consola o la CLI de Google Cloud:
Consola
gcloud
Habilita la autorización binaria en el trabajo:
gcloud run jobs update JOB_NAME --binary-authorization=POLICY
Haz los cambios siguientes:
Te recomendamos que requieras la autorización binaria para Cloud Run configurando una política de organización para ello. Los desarrolladores de Cloud Run pueden inhabilitar la autorización binaria si la política no está configurada.
Ver la política
Para ver la política, haga clic en Ver política.
Para obtener más información, consulta Configurar una política de autorización binaria.
Error al implementar un servicio o un trabajo
Si no se puede implementar tu servicio o trabajo porque infringe la política de autorización binaria, es posible que veas un error como el siguiente:
Revision REVISION_NAME uses an unauthorized container image. Container image IMAGE_NAME is not authorized by policy.
El error también contiene información sobre por qué la imagen infringe la política. En este caso, puedes usar Breakglass para saltarte la aplicación de la política y desplegar la imagen.
Habilitar la autorización binaria en un servicio nuevo
Puedes habilitar la autorización binaria en un servicio nuevo mediante la Google Cloud consola o la CLI de Google Cloud:
Consola
gcloud
Habilita la autorización binaria en el servicio e impleméntala:
gcloud run deploy SERVICE_NAME --image=IMAGE_URL --binary-authorization=default --region=REGION
Haz los cambios siguientes:
Habilitar la autorización binaria en un trabajo nuevo
Puedes habilitar la autorización binaria en un nuevo trabajo mediante la CLI de Google Cloud:
gcloud
Cuando creas un trabajo, el agente de servicio de Cloud Run debe poder acceder al contenedor, lo que ocurre de forma predeterminada.