Es posible que tu servicio tenga dependencias que requieran claves de API, contraseñas, certificados u otra información sensible. En Cloud Run, Google recomienda que almacenes este tipo de información sensible en un secreto creado en Secret Manager.
Puedes hacer que un secreto esté disponible para tus contenedores de dos formas:
- Monta cada secreto como un volumen, lo que hace que el secreto esté disponible para el contenedor como archivos. Al leer un volumen, siempre se obtiene el valor del secreto de Secret Manager, por lo que se puede usar con la versión latest. Este método también funciona bien con la rotación de secretos.
- Transfiere un secreto mediante variables de entorno. Las variables de entorno se resuelven cuando se inicia la instancia, por lo que, si usas este método, Google te recomienda que fijes el secreto a una versión concreta en lugar de usar latest.
Para obtener más información, consulta el documento de prácticas recomendadas de Secret Manager.
Cómo se comprueban los secretos durante la implementación y el tiempo de ejecución
Durante la implementación del servicio, se comprueban todos los secretos utilizados, ya sea como variable de entorno o montados como un volumen, para asegurarse de que la cuenta de servicio utilizada para ejecutar el contenedor tenga acceso a ellos. Si falla alguna comprobación, el despliegue del servicio no se realizará.
Durante el tiempo de ejecución, cuando se inician las instancias:
- Si el secreto es una variable de entorno, su valor se recupera antes de iniciar la instancia, por lo que, si no se puede recuperar, la instancia no se inicia.
- Si el secreto se monta como un volumen, no se realiza ninguna comprobació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 montado fallarán.
La propiedad del volumen varía según el entorno de ejecución y el tipo de implementación
Cuando montas un volumen de secretos, la identidad propietaria de los archivos y directorios varía en función del entorno de ejecución de la carga de trabajo y de si la implementación consta de uno o varios contenedores.
En el entorno de ejecución de primera generación en el que se implementa un solo contenedor, el volumen secreto es propiedad de la identidad utilizada para el contenedor. En todos los demás casos, el volumen es propiedad de root. Entre los datos que recoge se incluyen los siguientes:
- Entorno de ejecución de primera generación en el que se implementan varios contenedores
- Entorno de segunda generación
Antes de empezar
-
Enable the Secret Manager API.
- Usa un secreto que ya tengas o crea uno en Secret Manager, tal como se describe en el artículo Crear un secreto.
Roles obligatorios
Para obtener los permisos que necesitas para configurar secretos, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos:
-
Administrador de Cloud Run (
roles/run.admin
) en el servicio Cloud Run -
Usuario de cuenta de servicio (
roles/iam.serviceAccountUser
) en la identidad de servicio
Para permitir que Cloud Run acceda al secreto, la identidad de servicio debe tener el siguiente rol:
- Lector de recursos de Secret Manager (
roles/secretmanager.secretAccessor
)
Para obtener instrucciones sobre cómo añadir la identidad de servicio al rol Permiso para acceder a los recursos de Secret Manager, consulta el artículo Gestionar el acceso a los secretos.
Para ver una lista de los roles y permisos de gestión de identidades y accesos asociados a Cloud Run, consulta los artículos sobre roles de gestión de identidades y accesos de Cloud Run y permisos de gestión de identidades y accesos de Cloud Run. Si tu servicio de Cloud Run interactúa con APIs, como las bibliotecas de cliente de Cloud, consulta la guía de configuración de la identidad del servicio.Google Cloud Para obtener más información sobre cómo conceder roles, consulta los artículos sobre permisos de implementación y gestión del acceso.
Hacer que un secreto sea accesible para Cloud Run
Cualquier cambio en la configuración conlleva la creación de una nueva revisión. Las revisiones posteriores también recibirán automáticamente este ajuste de configuración, a menos que hagas cambios explícitos para modificarlo.
Puedes hacer que un secreto sea accesible para tu servicio mediante la Google Cloud consola, la CLI de Google Cloud o un archivo YAML cuando despliegues un servicio nuevo o actualices uno que ya tengas y despliegues una revisión. Haga clic en la pestaña que quiera:
Consola
En la Google Cloud consola, ve a Cloud Run:
Selecciona Servicios en el menú y haz clic en Implementar contenedor para configurar un nuevo servicio. Rellena la página de configuración inicial del servicio y, a continuación, haz clic en Contenedores, volúmenes, redes y seguridad para desplegar la página de configuración del servicio.
Si vas a configurar un servicio que ya tienes, haz clic en él y, luego, en Editar y desplegar nueva revisión.
Sigue los pasos para montar el secreto como un volumen o exponerlo como una variable de entorno.
Para exponer el secreto como una variable de entorno, sigue estos pasos:
- Haz clic en la pestaña Contenedores.
- En la pestaña Variables y secretos, haga clic en Hacer referencia a un secreto.
- En el campo Nombre 1, introduce el nombre de la variable de entorno.
- En la lista Secreto, selecciona el secreto que quieras usar.
- En la lista Versión 1, selecciona la versión del secreto al que quieras hacer referencia.
- Haz clic en Listo.
- Haz clic en Crear o en Implementar.
Para montar un secreto como volumen, sigue estos pasos:
- Haz clic en la pestaña Volúmenes y selecciona Añadir volumen.
- En la lista Tipo de volumen, selecciona Secreto.
- En el campo Nombre del volumen, introduce un nombre o acepta el predeterminado.
- En la lista Secreto, selecciona el secreto que quieras usar.
- En el campo Ruta 1, introduce el nombre del archivo que quieras montar.
- En la lista Versión 1, selecciona la versión del secreto al que quieras hacer referencia. De forma predeterminada, se selecciona la versión más reciente. Si quieres, puedes seleccionar una versión específica.
- Haz clic en Listo.
- Vaya a la pestaña Contenedor(es) para montar su secreto en el contenedor.
- En la pestaña Montajes de volumen, haz clic en Montar volumen.
- En la lista Nombre 1, selecciona el nombre del volumen.
- En el campo Ruta de montaje 1, introduce la ruta de montaje de este secreto. Este es el directorio en el que se colocan todas las versiones de tu secreto.
- Haz clic en Listo.
- Haz clic en Crear o en Implementar.
gcloud
Para que tu servicio pueda acceder a un secreto, introduce uno de los siguientes comandos.
Para montar el secreto como volumen al desplegar un servicio, sigue estos pasos:
gcloud run deploy SERVICE --image IMAGE_URL \ --update-secrets=PATH=SECRET_NAME:VERSION
Haz los cambios siguientes:
SERVICE
: el nombre de tu servicio.- IMAGE_URL: una referencia a la imagen del contenedor, por ejemplo,
us-docker.pkg.dev/cloudrun/container/hello:latest
. Si usas Artifact Registry, el repositorio REPO_NAME ya debe estar creado. La URL sigue el formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
PATH
: la ruta de montaje del volumen y el nombre de archivo del secreto. Debe empezar por una barra diagonal. Por ejemplo:/etc/secrets/dbconfig/password
, donde/etc/secrets/dbconfig/
es la ruta de montaje del volumen ypassword
es el nombre de archivo del secreto.SECRET_NAME
: el nombre del secreto en el mismo proyecto, por ejemplo,mysecret
.VERSION
: la versión del secreto. Usalatest
para obtener la versión más reciente o un número (por ejemplo,2
).
Para exponer el secreto como una variable de entorno al implementar un servicio, sigue estos pasos:
gcloud run deploy SERVICE \ --image IMAGE_URL \ --update-secrets=ENV_VAR_NAME=SECRET_NAME:VERSION
Haz los cambios siguientes:
SERVICE
: el nombre de tu servicio.- IMAGE_URL: una referencia a la imagen del contenedor, por ejemplo,
us-docker.pkg.dev/cloudrun/container/hello:latest
. Si usas Artifact Registry, el repositorio REPO_NAME ya debe estar creado. La URL sigue el formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
. ENV_VAR_NAME
: el nombre de la variable de entorno que quieras usar con el secreto.SECRET_NAME
: el nombre del secreto en el mismo proyecto, por ejemplo,mysecret
.VERSION
: la versión del secreto. Usalatest
para obtener la versión más reciente o un número (por ejemplo,2
).
Puedes actualizar varios secretos a la vez. Para ello, separa las opciones de configuración de cada secreto con una coma. El siguiente comando actualiza un secreto montado como volumen y otro secreto expuesto como variable de entorno.
Para actualizar los secretos, introduce el siguiente comando:
gcloud run deploy SERVICE --image IMAGE_URL \ --update-secrets=PATH=SECRET_NAME:VERSION,ENV_VAR_NAME=SECRET_NAME:VERSION
Para borrar los secretos actuales y hacer que un nuevo secreto sea accesible para el servicio, usa la marca
--set-secrets
:gcloud run services update SERVICE \ --set-secrets="ENV_VAR_NAME=SECRET_NAME:VERSION"
YAML
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
En el caso de los secretos expuestos como variables de entorno, en
env
, actualiza ENV_VAR, VERSION y/o SECRET_NAME según tus preferencias. Si tienes varios secretos montados como variables de entorno, tendrás varios de estos atributos.apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: name: REVISION spec: containers: - image: IMAGE_URL env: - name: ENV_VAR valueFrom: secretKeyRef: key: VERSION name: SECRET_NAME
En el caso de los secretos montados como rutas de archivo, actualiza MOUNT_PATH, VOLUME_NAME, VERSION, FILENAME o SECRET_NAME según sea necesario. Si tienes varios secretos montados como rutas de archivo, tendrás varios de estos atributos.
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: name: REVISION spec: containers: - image: IMAGE_URL volumeMounts: - mountPath: MOUNT_PATH name: VOLUME_NAME volumes: - name: VOLUME_NAME secret: items: - key: VERSION path: FILENAME secretName: SECRET_NAME
Ten en cuenta que
VOLUME_NAME
puede tener cualquier nombre.Haz los cambios siguientes:
- SERVICE: el nombre de tu servicio de Cloud Run.
- IMAGE_URL: una referencia a la imagen del contenedor, por ejemplo,
us-docker.pkg.dev/cloudrun/container/hello:latest
. Si usas Artifact Registry, el repositorio REPO_NAME ya debe estar creado. La URL sigue el formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
. - REVISION con un nuevo nombre de revisión o elimínelo (si está presente). Si proporcionas un nuevo nombre de revisión, debe cumplir los siguientes criterios:
- Empieza por
SERVICE-
- Contiene solo letras minúsculas, números y
-
- No termina con
-
- No supera los 63 caracteres
- Empieza por
Sustituye el servicio por su nueva configuración con el siguiente comando:
gcloud run services replace service.yaml
Terraform
Crea un secreto y una versión del secreto.
Crea una cuenta de servicio y concédele acceso al secreto:
Se puede acceder a los secretos de Secret Manager desde Cloud Run como rutas de archivos montadas o como variables de entorno.
En el caso de los secretos montados como rutas de archivo, haz referencia al recurso de Secret Manager en el parámetro
volumes
. Elname
se corresponde con una entrada del parámetrovolume_mounts
:En el caso de los secretos expuestos como variables de entorno, haz referencia al recurso de Secret Manager en el parámetro
env
:
Hacer referencia a secretos de otros proyectos
Para hacer referencia a un secreto de otro proyecto, comprueba que la cuenta de servicio de tu proyecto tenga acceso al secreto.
Consola
En la Google Cloud consola, ve a Cloud Run:
Selecciona Servicios en el menú y haz clic en Implementar contenedor para configurar un nuevo servicio. Rellena la página de configuración inicial del servicio y, a continuación, haz clic en Contenedores, volúmenes, redes y seguridad para desplegar la página de configuración del servicio.
Si vas a configurar un servicio que ya tienes, haz clic en él y, luego, en Editar y desplegar nueva revisión.
Sigue los pasos para montar el secreto como un volumen o exponerlo como una variable de entorno.
Para exponer el secreto como una variable de entorno, sigue estos pasos:
- Haz clic en la pestaña Contenedores.
- En la pestaña Variables y secretos, haga clic en Hacer referencia a un secreto.
- En el campo Nombre 1, introduce el nombre de la variable de entorno.
- En la lista Secreto, haz clic en Introducir secreto manualmente.
Introduce el ID de recurso del secreto con el siguiente formato:
projects/PROJECT_NUMBER/secrets/SECRET_NAME
Haz los cambios siguientes:
PROJECT_NUMBER con el número de tu proyecto Google Cloud . Para obtener instrucciones detalladas sobre cómo encontrar el número de tu proyecto, consulta el artículo Crea y gestiona proyectos.
SECRET_NAME: nombre del secreto en Secret Manager.
En la lista Versión 1, selecciona la versión del secreto al que quieras hacer referencia.
Haz clic en Listo.
Haz clic en Crear o en Implementar.
Para montar un secreto como volumen, sigue estos pasos:
- Haz clic en la pestaña Volúmenes y selecciona Añadir volumen.
- En la lista Tipo de volumen, selecciona Secreto.
- En el campo Nombre del volumen, introduce un nombre o acepta el predeterminado.
- En la lista Secreto, haz clic en Introducir secreto manualmente.
Introduce el ID de recurso del secreto con el siguiente formato:
projects/PROJECT_NUMBER/secrets/SECRET_NAME
Haz los cambios siguientes:
PROJECT_NUMBER con el número de tu proyecto Google Cloud . Para obtener instrucciones detalladas sobre cómo encontrar el número de tu proyecto, consulta el artículo Crea y gestiona proyectos.
SECRET_NAME: nombre del secreto en Secret Manager.
En el campo Ruta 1, introduce el nombre del archivo que quieras montar.
En la lista Versión 1, selecciona la versión del secreto al que quieras hacer referencia. De forma predeterminada, se selecciona la versión más reciente. Si quieres, puedes seleccionar una versión específica.
Haz clic en Listo.
Vaya a la pestaña Contenedor(es) para montar su secreto en el contenedor.
En la pestaña Montajes de volumen, haz clic en Montar volumen.
En la lista Nombre 1, selecciona el nombre del volumen.
En el campo Ruta de montaje 1, introduce la ruta de montaje de este secreto. Este es el directorio en el que se colocan todas las versiones de tu secreto.
Haz clic en Listo.
Haz clic en Crear o en Implementar.
gcloud
Para montar un secreto como volumen al desplegar un servicio, sigue estos pasos:
gcloud run deploy SERVICE --image IMAGE_URL \ --update-secrets=PATH=projects/PROJECT_NUMBER/secrets/SECRET_NAME:VERSION
Haz los cambios siguientes:
SERVICE
: el nombre de tu servicio.- IMAGE_URL: una referencia a la imagen del contenedor, por ejemplo,
us-docker.pkg.dev/cloudrun/container/hello:latest
. Si usas Artifact Registry, el repositorio REPO_NAME ya debe estar creado. La URL sigue el formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
. PATH
: la ruta de montaje del volumen y el nombre de archivo del secreto. Debe empezar por una barra diagonal. Por ejemplo:/etc/secrets/dbconfig/password
, donde/etc/secrets/dbconfig/
es la ruta de montaje del volumen ypassword
es el nombre de archivo del secreto.PROJECT_NUMBER
con el número del proyecto en el que se creó el secreto.SECRET_NAME
: el nombre del secreto (por ejemplo,mysecret
).VERSION
con la versión del secreto. Usalatest
para obtener la versión más reciente o un número (por ejemplo,2
).
YAML
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
Debido a las restricciones relacionadas con la compatibilidad de las APIs, las ubicaciones de los secretos deben almacenarse en una anotación.
En el caso de los secretos expuestos como variables de entorno:
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: annotations: run.googleapis.com/secrets: SECRET_LOOKUP_NAME:projects/PROJECT_NUMBER/secrets/SECRET_NAME spec: containers: - image: IMAGE_URL env: - name: ENV_VAR valueFrom: secretKeyRef: key: VERSION name: SECRET_LOOKUP_NAME
Haz los cambios siguientes:
SERVICE
: el nombre de tu servicio.- IMAGE_URL: una referencia a la imagen del contenedor, por ejemplo,
us-docker.pkg.dev/cloudrun/container/hello:latest
. Si usas Artifact Registry, el repositorio REPO_NAME ya debe estar creado. La URL sigue el formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
ENV_VAR
PROJECT_NUMBER
: el número del proyecto en el que se creó el secreto.SECRET_NAME
: el nombre del secreto (por ejemplo,mysecret
).VERSION
: la versión del secreto. Usalatest
para obtener la versión más reciente o un número (por ejemplo,2
).SECRET_LOOKUP_NAME
: cualquier nombre que tenga una sintaxis de nombre de secreto válida. Por ejemplo,my-secret
puede ser el mismo queSECRET_NAME
.
En el caso de los secretos montados como rutas de archivos:
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: annotations: run.googleapis.com/secrets: SECRET_LOOKUP_NAME:projects/PROJECT_NUMBER/secrets/SECRET_NAME spec: containers: - image: IMAGE_URL volumeMounts: - mountPath: MOUNT_PATH name: VOLUME_NAME volumes: - name: VOLUME_NAME secret: items: - key: VERSION path: FILENAME secretName: SECRET_LOOKUP_NAME
Haz los cambios siguientes:
SERVICE
: el nombre de tu servicio.- IMAGE_URL: una referencia a la imagen del contenedor, por ejemplo,
us-docker.pkg.dev/cloudrun/container/hello:latest
. Si usas Artifact Registry, el repositorio REPO_NAME ya debe estar creado. La URL sigue el formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
. PATH
: la ruta de montaje del volumen y el nombre de archivo del secreto. Debe empezar por una barra diagonal. Por ejemplo:/etc/secrets/dbconfig/password
, donde/etc/secrets/dbconfig/
es la ruta de montaje del volumen ypassword
es el nombre de archivo del secreto.PROJECT_NUMBER
: el número del proyecto en el que se creó el secreto.SECRET_NAME
: el nombre del secreto (por ejemplo,mysecret
).VERSION
: la versión del secreto. Usalatest
para obtener la versión más reciente o un número (por ejemplo,2
).SECRET_LOOKUP_NAME
: cualquier nombre que tenga una sintaxis de nombre de secreto válida. Por ejemplo,my-secret
puede ser el mismo queSECRET_NAME
.VOLUME_NAME
: cualquier nombre, por ejemplo,my-volume
. Puede ser el mismo queSECRET_NAME
.
Terraform
Para saber cómo aplicar o quitar una configuración de Terraform, consulta Comandos básicos de Terraform.
Añade lo siguiente a un recursogoogle_cloud_run_v2_service
en tu configuración de Terraform:Para los secretos expuestos como variables de entorno:
resource "google_cloud_run_v2_service" "default" {
name = "SERVICE_NAME"
location = "REGION"
template {
containers {
image = "IMAGE_URL"
env {
name = "SECRET_NAME"
value_source {
secret_key_ref {
secret = "projects/PROJECT_ID/secrets/SECRET_NAME"
version = "VERSION"
}
}
}
}
}
}
Haz los cambios siguientes:
- SERVICE_NAME: el nombre de tu tarea de Cloud Run.
- REGION: la Google Cloud región. Por ejemplo,
europe-west1
. - IMAGE_URL: una referencia a la imagen del contenedor, por ejemplo,
us-docker.pkg.dev/cloudrun/container/hello:latest
. Si usas Artifact Registry, el repositorio REPO_NAME ya debe estar creado. La URL sigue el formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
. - SECRET_NAME: el nombre del secreto (por ejemplo,
mysecret
). - PROJECT_ID: el ID del proyecto en el que se creó el secreto.
- VERSION: la versión del secreto. Usa
latest
para la versión más reciente o un número (por ejemplo,2
).
Para los secretos montados como rutas de archivo:
resource "google_cloud_run_v2_service" "default" {
name = "SERVICE_NAME"
location = "REGION"
template {
containers {
image = "IMAGE_URL"
volume_mounts {
name = "VOLUME_NAME"
mount_path = "MOUNT_PATH"
}
}
volumes {
name = "VOLUME_NAME"
secret {
secret = "projects/PROJECT_ID/secrets/SECRET_NAME"
}
}
}
}
Haz los cambios siguientes:
- SERVICE_NAME: el nombre de tu tarea de Cloud Run.
- REGION con la región Google Cloud . Por ejemplo,
europe-west1
. - IMAGE_URL: una referencia a la imagen del contenedor, por ejemplo,
us-docker.pkg.dev/cloudrun/container/hello:latest
. Si usas Artifact Registry, el repositorio REPO_NAME ya debe estar creado. La URL sigue el formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
- VOLUME_NAME: cualquier nombre (por ejemplo,
my-volume
). Puede ser el mismo queSECRET_NAME
. - MOUNT_PATH: la ruta de montaje del volumen y el nombre de archivo del secreto. Debe empezar por una barra diagonal. Por ejemplo:
/etc/secrets/dbconfig/password
, donde/etc/secrets/dbconfig/
es la ruta de montaje del volumen ypassword
es el nombre de archivo del secreto. - PROJECT_ID: el ID del proyecto en el que se creó el secreto.
- SECRET_NAME: el nombre del secreto (por ejemplo,
mysecret
).
Ver ajustes de secretos
Para ver la configuración actual de los secretos de tu servicio de Cloud Run, sigue estos pasos:
Consola
En la Google Cloud consola, ve a Cloud Run:
Haz clic en el servicio que te interese para abrir la página Detalles del servicio.
Haz clic en la pestaña Revisiones.
En el panel de detalles de la derecha, el ajuste de secretos se encuentra en la pestaña Contenedor.
gcloud
Usa el siguiente comando:
gcloud run services describe SERVICE
Localiza el ajuste de secretos en la configuración devuelta.
Eliminar secretos de un servicio
Puedes quitar secretos de un servicio mediante la Google Cloud consola o la CLI de gcloud:
Consola
En la Google Cloud consola, ve a Cloud Run:
Selecciona tu servicio en la lista y haz clic en Editar y desplegar nueva revisión.
Haz clic en la pestaña Contenedores.
Para eliminar secretos montados como un volumen, selecciona la pestaña Montajes de volumen, coloca el puntero sobre el secreto que quieras eliminar y haz clic en
Eliminar.Para eliminar los secretos expuestos como variables de entorno, selecciona la pestaña Variables y secretos, coloca el puntero sobre el secreto que quieras eliminar y haz clic en
Eliminar.Haz clic en Desplegar.
gcloud
Puedes quitar todos los secretos de un servicio o especificar uno o varios secretos que quieras quitar:
Para eliminar todos los secretos, ejecuta el siguiente comando:
gcloud run deploy SERVICE --image IMAGE_URL \ --clear-secrets
Haz los cambios siguientes:
- SERVICE: el nombre de tu servicio.
- IMAGE_URL: una referencia a la imagen del contenedor, por ejemplo,
us-docker.pkg.dev/cloudrun/container/hello:latest
. Si usas Artifact Registry, el repositorio REPO_NAME ya debe estar creado. La URL sigue el formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
.
Para especificar una lista de secretos que quieras eliminar, usa la marca
--remove-secrets
. El siguiente comando elimina un secreto montado como un volumen y otro secreto expuesto como una variable de entorno:gcloud run deploy SERVICE --image IMAGE_URL \ --remove-secrets=ENV_VAR_NAME,SECRET_FILE_PATH
Haz los cambios siguientes:
- SERVICE: el nombre de tu servicio.
- IMAGE_URL: una referencia a la imagen del contenedor, por ejemplo,
us-docker.pkg.dev/cloudrun/container/hello:latest
. Si usas Artifact Registry, el repositorio REPO_NAME ya debe estar creado. La URL sigue el formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
. - ENV_VAR_NAME: el nombre de la variable de entorno.
SECRET_FILE_PATH: la ruta completa del secreto. Por ejemplo,
/mnt/secrets/primary/latest
, donde/mnt/secrets/primary/
es la ruta de montaje ylatest
es la ruta secreta. También puedes especificar las rutas de montaje y de secreto por separado:--set-secrets MOUNT_PATH:SECRET_PATH=SECRET:VERSION
Usar secretos en el código
Para ver ejemplos de cómo acceder a secretos en tu código como variables de entorno, consulta el tutorial sobre autenticación de usuarios finales, en concreto la sección Gestionar configuraciones sensibles con Secret Manager.
Rutas no permitidas y limitaciones
Cloud Run no te permite montar secretos en /dev
, /proc
y /sys
, ni en sus subdirectorios.
Si estás montando secretos en /tmp
y usas el entorno de ejecución de primera generación, consulta el problema conocido sobre montar secretos en /tmp
.
Cloud Run no permite montar varios secretos en la misma ruta, ya que no se pueden montar dos volúmenes en la misma ubicación.
Anular un directorio
Si el secreto se monta como un volumen en Cloud Run y ya existe el último directorio de la ruta de montaje del volumen, no se podrá acceder a ningún archivo ni carpeta del directorio.
Por ejemplo, si se monta un secreto llamado my-secret
en la ruta /etc/app_data
, se sobrescribirá todo el contenido del directorio app_data
y el único archivo visible será /etc/app_data/my-secret
.
Para evitar que se sobrescriban archivos en un directorio, crea un directorio para montar el secreto (por ejemplo, /etc/app_data/secrets
) de forma que la ruta de montaje del secreto sea /etc/app_data/secrets/my-secret
.