Configura secretos para grupos de trabajadores

Es posible que tu grupo de trabajadores requiera claves de API, contraseñas, certificados o cualquier otra información sensible para sus dependencias. Para Cloud Run, Google recomienda almacenar esta información sensible en un secreto que crees en Secret Manager.

Puedes hacer que un secreto esté disponible para tus contenedores de una de las siguientes maneras:

  • Cuando activas cada Secret como un volumen, Cloud Run lo pone a disposición del contenedor como archivos. Cuando se lee un volumen, Cloud Run siempre recupera el valor del secreto de Secret Manager para usar el valor con la versión más reciente. Este método también funciona bien con la rotación de Secrets.
  • Pasa un secreto mediante variables de entorno. Las variables de entorno se resuelven en el momento del inicio de la instancia, por lo que si usas este método, Google te recomienda fijar el secreto en una versión específica en lugar de usar latest como la versión.

Para obtener más información, consulta las prácticas recomendadas de Secret Manager.

Cómo se verifican los secretos en la implementación y el entorno de ejecución

Durante la implementación del grupo de trabajadores, Cloud Run verifica todos los secretos que usas. La verificación garantiza que la cuenta de servicio que ejecuta el contenedor tenga permiso para acceder a estos secretos.

Durante el tiempo de ejecución, cuando se inician las instancias:

  • Si el secreto es una variable de entorno, Cloud Run recupera su valor antes de iniciar la instancia. Si falla el proceso de recuperación de secretos, la instancia no se inicia.
  • Si activas el secreto como un volumen, Cloud Run no realiza ninguna verificación durante el inicio de la instancia. Sin embargo, durante el tiempo de ejecución, si no se puede acceder a un secreto, los intentos de leer el volumen activado fallarán.

Propiedad del volumen

La propiedad de un volumen de Secret de Cloud Run difiere según el entorno de ejecución y el tipo de implementación.

Cuando activas un volumen de Secret con el entorno de ejecución de segunda generación, que siempre es el caso del grupo de trabajadores, la raíz es propietaria del volumen.

Antes de comenzar

  1. Enable the Secret Manager API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  2. Usa un Secret existente o crea uno en Secret Manager, como se describe en Crea un Secret.

Roles requeridos

Para obtener los permisos que necesitas para configurar los objetos Secret, pídele a tu administrador que te otorgue los siguientes roles de IAM:

Para permitir que Cloud Run acceda al Secret, la identidad del servicio debe tener el siguiente rol:

Si deseas obtener instrucciones para agregar el principal de identidad del servicio al rol de descriptor de acceso a secretos de Secret Manager, consulta Administra el acceso a los objetos Secret.

Para obtener una lista de los roles y los permisos de IAM asociados con Cloud Run, consulta los roles de IAM de Cloud Run y los permisos de IAM de Cloud Run. Si tu grupo de trabajadores de Cloud Run interactúa con lasGoogle Cloud APIs, como las bibliotecas cliente de Cloud, consulta la guía de configuración de identidades del servicio. Para obtener más información sobre cómo otorgar roles, consulta permisos de implementación y administra el acceso.

Haz que Cloud Run tenga acceso a un Secret

Cualquier cambio en la configuración conlleva la creación de una revisión nueva. Las revisiones posteriores también adoptarán esta configuración de manera automática, a menos que realices actualizaciones explícitas para cambiarla.

Puedes hacer que un Secret sea accesible para tu grupo de trabajadores con la Google Cloud consola o Google Cloud CLI cuando implementes un grupo de trabajadores nuevo o actualices uno existente, y, luego, implementes una revisión. Haz clic en la pestaña que prefieras:

Console

  1. En la consola de Google Cloud , ve a Cloud Run:

    Ir a Cloud Run

  2. Selecciona Grupos de trabajadores en el menú y haz clic en Implementar contenedor para configurar un grupo de trabajadores nuevo. Completa la página de configuración inicial del grupo de trabajadores y, luego, haz clic en Contenedores, volúmenes, Herramientas de redes y seguridad para expandir la página de configuración.

  3. Si quieres configurar un grupo de trabajadores existente, haz clic en el grupo de trabajadores y, luego, en Implementar y editar una nueva revisión.

  4. Sigue los pasos para activar el Secret como un volumen o exponerlo como una variable de entorno.

    • Para exponer el Secret como una variable de entorno, haz lo siguiente:

      1. Haz clic en la pestaña Contenedores.
      2. En la pestaña Variables y Secrets, haz clic en Hacer referencia a un Secret.
      3. En el campo Name 1, ingresa el nombre de la variable de entorno.
      4. En la lista Secret, selecciona el secreto que quieres usar.
      5. En la lista Versión 1, selecciona la versión del Secret que deseas consultar.
      6. Haz clic en Listo.
      7. Haz clic en Crear o Implementar.
    • Para activar el Secret como un volumen, haz lo siguiente:

      1. Haz clic en la pestaña Volúmenes y selecciona Agregar volumen.
      2. En la lista Tipo de volumen, selecciona Secreto.
      3. En el campo Nombre del volumen, ingresa un nombre o acepta el nombre predeterminado.
      4. En la lista Secret, selecciona el secreto que quieres usar.
      5. En el campo Ruta de acceso 1, ingresa el nombre del archivo que deseas activar.
      6. En la lista Versión 1, selecciona la versión del Secret que deseas consultar. De forma predeterminada, se selecciona la versión más reciente. Si lo deseas, puedes seleccionar una versión específica.
      7. Haz clic en Listo.
      8. Navega a la pestaña Contenedores para activar tu secreto en el contenedor.
      9. En la pestaña Activaciones de volumen, haz clic en Activar volumen.
      10. En la lista Nombre 1, selecciona el nombre de tu volumen.
      11. En el campo Ruta de activación 1, ingresa la ruta de activación para este secreto. Este es el directorio en el que se encuentran todas las versiones de tu Secret.
      12. Haz clic en Listo.
      13. Haz clic en Crear o Implementar.

gcloud

  • Para exponer el secreto como una variable de entorno cuando implementas un grupo de trabajadores, ejecuta el siguiente comando:

    gcloud beta run worker-pools deploy WORKER_POOL \
    --image IMAGE_URL \
    --update-secrets=ENV_VAR_NAME=SECRET_NAME:VERSION

    Reemplaza lo siguiente:

    • WORKER_POOL: El nombre de tu grupo de trabajadores.
    • IMAGE_URL: Es una referencia a la imagen del contenedor que contiene el grupo de trabajadores, como us-docker.pkg.dev/cloudrun/container/worker-pool:latest.
    • ENV_VAR_NAME: Es el nombre de la variable de entorno que deseas usar con el secreto.
    • SECRET_NAME: Es el nombre del secreto en el mismo proyecto, por ejemplo, mysecret.
    • VERSION: Es la versión del secreto. Usa latest para la versión más reciente o un número, por ejemplo, 2.
  • Para actualizar varios secretos al mismo tiempo, separa las opciones de configuración de cada secreto con una coma. Con el siguiente comando, se actualiza un secreto activado como un volumen y otro expuesto como una variable de entorno. Para actualizar los secretos existentes, ejecuta el siguiente comando:

    gcloud beta run worker-pools deploy WORKER_POOL \
    --image IMAGE_URL \
    --update-secrets=PATH=SECRET_NAME:VERSION,ENV_VAR_NAME=SECRET_NAME:VERSION
  • Si deseas borrar los secretos existentes y hacer que un servicio nuevo sea accesible para el grupo de trabajadores, usa la marca --set-secrets:

    gcloud beta run worker-pools update WORKER_POOL \
    --set-secrets="ENV_VAR_NAME=SECRET_NAME:VERSION"

Haz referencia a Secrets de otros proyectos

Para hacer referencia a un secreto de otro proyecto, verifica que la cuenta del grupo de trabajadores de tu proyecto tenga acceso al secreto.

Console

  1. En la consola de Google Cloud , ve a Cloud Run:

    Ir a Cloud Run

  2. Selecciona Grupos de trabajadores en el menú y haz clic en Implementar contenedor para configurar un grupo de trabajadores nuevo. Completa la página de configuración inicial del grupo de trabajadores y, luego, haz clic en Contenedores, volúmenes, Herramientas de redes y seguridad para expandir la página de configuración.

  3. Si quieres configurar un grupo de trabajadores existente, haz clic en el grupo de trabajadores y, luego, en Implementar y editar una nueva revisión.

  4. Sigue los pasos para activar el Secret como un volumen o exponerlo como una variable de entorno.

    • Para exponer el Secret como una variable de entorno, haz lo siguiente:

      1. Haz clic en la pestaña Contenedores.
      2. En la pestaña Variables y Secrets, haz clic en Hacer referencia a un Secret.
      3. En el campo Name 1, ingresa el nombre de la variable de entorno.
      4. En la lista Secret, haz clic en Ingresar Secret manualmente.
      5. Ingresa el ID de recurso del Secret en el siguiente formato:

        projects/PROJECT_NUMBER/secrets/SECRET_NAME
        

        Reemplaza lo siguiente:

        • PROJECT_NUMBER por el Google Cloud número de tu proyecto. Para obtener instrucciones detalladas sobre cómo encontrar el número de tu proyecto, consulta Crea y administra proyectos.

        • SECRET_NAME: Es el nombre del Secret en Secret Manager.

      6. En la lista Versión 1, selecciona la versión del Secret que deseas consultar.

      7. Haz clic en Listo.

      8. Haz clic en Crear o Implementar.

    • Para activar el Secret como un volumen, haz lo siguiente:

      1. Haz clic en la pestaña Volúmenes y selecciona Agregar volumen.
      2. En la lista Tipo de volumen, selecciona Secreto.
      3. En el campo Nombre del volumen, ingresa un nombre o acepta el nombre predeterminado.
      4. En la lista Secret, haz clic en Ingresar Secret manualmente.
      5. Ingresa el ID de recurso del Secret en el siguiente formato:

        projects/PROJECT_NUMBER/secrets/SECRET_NAME
        

        Reemplaza lo siguiente:

        • PROJECT_NUMBER por el Google Cloud número de tu proyecto. Para obtener instrucciones detalladas sobre cómo encontrar el número de tu proyecto, consulta Crea y administra proyectos.

        • SECRET_NAME: Es el nombre del Secret en Secret Manager.

      6. En el campo Ruta de acceso 1, ingresa el nombre del archivo que deseas activar.

      7. En la lista Versión 1, selecciona la versión del Secret que deseas consultar. De forma predeterminada, se selecciona la versión más reciente. Si lo deseas, puedes seleccionar una versión específica.

      8. Haz clic en Listo.

      9. Navega a la pestaña Contenedores para activar tu secreto en el contenedor.

      10. En la pestaña Activaciones de volumen, haz clic en Activar volumen.

      11. En la lista Nombre 1, selecciona el nombre de tu volumen.

      12. En el campo Ruta de activación 1, ingresa la ruta de activación para este secreto. Este es el directorio en el que se encuentran todas las versiones de tu Secret.

      13. Haz clic en Listo.

      14. Haz clic en Crear o Implementar.

gcloud

Para hacer referencia a un secreto como una variable de entorno, ejecuta el siguiente comando:

gcloud beta run worker-pools deploy WORKER_POOL \
--image IMAGE_URL \
--update-secrets=ENV_VAR_NAME=projects/PROJECT_NUMBER/secrets/SECRET_NAME:VERSION

Reemplaza lo siguiente:

  • WORKER_POOL: El nombre de tu grupo de trabajadores.
  • IMAGE_URL: Es una referencia a la imagen del contenedor que contiene el grupo de trabajadores, como us-docker.pkg.dev/cloudrun/container/worker-pool:latest.
  • PROJECT_NUMBER por el número del proyecto en el que se creó el Secret
  • SECRET_NAME: Es el nombre del secreto, por ejemplo, mysecret.
  • VERSION por la versión del Secret Usa latest para la versión más reciente o un número, por ejemplo, 2.

Visualiza la configuración de los Secrets

Para ver la configuración actual de los Secrets de tu grupo de trabajadores de Cloud Run, sigue estos pasos:

Console

  1. En la consola de Google Cloud , ve a la página de grupos de trabajadores de Cloud Run:

    Ir a los grupos de trabajadores de Cloud Run

  2. Haz clic en el grupo de trabajadores que te interesa para abrir la página Detalles del grupo de trabajadores.

  3. Haz clic en Editar e implementar una nueva revisión.

  4. Ubica la configuración de secretos en los detalles de configuración.

gcloud

  1. Usa el siguiente comando:

    gcloud beta run worker-pools describe WORKER_POOL
  2. Busca la configuración de Secrets en la configuración mostrada.

Quita los secretos de un grupo de trabajadores

Puedes quitar Secrets de un grupo de trabajadores con la consola de Google Cloud o gcloud CLI:

Console

  1. En la consola de Google Cloud , ve a Cloud Run:

    Ir a Cloud Run

  2. Selecciona tu grupo de trabajadores en la lista y haz clic en Editar e implementar nueva revisión.

  3. Haz clic en la pestaña Contenedores.

  4. Para borrar los Secrets que se activaron como un volumen, selecciona la pestaña Activaciones de volumen, mantén el puntero sobre el Secret que deseas quitar y, luego, haz clic en Borrar.

  5. Para borrar los secretos expuestos como variable de entorno, selecciona la pestaña Variables y secretos, mantén el puntero sobre el secreto que deseas quitar y, luego, haz clic en Borrar.

  6. Haz clic en Implementar.

gcloud

Puedes quitar todos los secretos de un grupo de trabajadores o especificar uno o más secretos para quitarlos:

  • Para quitar todos los Secrets, ejecuta el siguiente comando:
  gcloud beta run worker-pools deploy WORKER_POOL --image IMAGE_URL \
  --clear-secrets

Reemplaza lo siguiente:

  • WORKER_POOL: El nombre de tu grupo de trabajadores.
  • IMAGE_URL: Es una referencia a la imagen del contenedor que contiene el grupo de trabajadores, como us-docker.pkg.dev/cloudrun/container/worker-pool:latest.

  • Para especificar una lista de Secrets que deseas quitar, usa la marca --remove-secrets. Con el siguiente comando, se quita un Secret activado como un volumen y otro expuesto como una variable de entorno.

  gcloud beta run worker-pools deploy WORKER_POOL --image IMAGE_URL \
  --remove-secrets=ENV_VAR_NAME,SECRET_FILE_PATH

Reemplaza lo siguiente:

  • WORKER_POOL: El nombre de tu grupo de trabajadores.
  • IMAGE_URL: Es una referencia a la imagen del contenedor que contiene el grupo de trabajadores, como us-docker.pkg.dev/cloudrun/container/worker-pool:latest.
  • ENV_VAR_NAME: Es el nombre de la variable de entorno.
  • SECRET_FILE_PATH: Es la ruta de acceso completa del secreto. Por ejemplo, /mnt/secrets/primary/latest, en el que /mnt/secrets/primary/ es la ruta de activación y latest es la ruta del Secret. También puedes especificar las rutas de activación y de Secret por separado:

    --set-secrets MOUNT_PATH:SECRET_PATH=SECRET:VERSION

Usa secretos en tu código

Para ver ejemplos de cómo acceder a los secretos en tu código como variables de entorno, consulta el instructivo sobre la autenticación de usuario final, en especial la sección Cómo manejar la configuración sensible con Secret Manager.

Rutas no permitidas y limitaciones

Se aplican las siguientes limitaciones al montaje de secretos:

  • Cloud Run no te permite activar secretos en /dev, /proc y /sys, ni en sus subdirectorios.
  • Cloud Run no te permite activar varios Secrets en la misma ruta porque dos activaciones de volumen no se pueden activar en la misma ubicación.

Anula un directorio

Si el Secret se activa como un volumen en Cloud Run y el último directorio en la ruta de activación de volumen ya existe, los archivos o las carpetas en del directorio existente se vuelven inaccesibles.

Por ejemplo, si un Secret llamado my-secret se activa en la ruta de acceso /etc/app_data, se reemplazará todo el contenido dentro del directorio app_data y el único archivo visible es /etc/app_data/my-secret.

Si deseas evitar reemplazar archivos en un directorio existente, crea un directorio nuevo para activar el Secret, por ejemplo, /etc/app_data/secrets, para que la ruta de activación del Secret sea /etc/app_data/secrets/my-secret.