Creé un backend en Go, que usa el Administrador de secretos, y lo implementé en Cloud Run. El problema es que la API de Secret Manager necesita un credencial de cuenta de servicio json file para señalar y eso funciona en mi máquina local porque solo especifico la ruta del archivo en una variable de entorno GOOGLE_APPLICATION_CREDENTIALS, pero no tengo la misma conveniencia en un entorno Cloud Run. ¿Cómo especificará mi backend en Cloud Run su variable de entorno GOOGLE_APPLICATION_CREDENTIALS, por así decirlo?

0
sdfsdf 20 abr. 2020 a las 10:55

2 respuestas

La mejor respuesta

De acuerdo con la documentación oficial

Configuración de autenticación para aplicaciones de producción de servidor a servidor

Si no se establece la variable de entorno, ADC usa el servicio predeterminado cuenta que Compute Engine, Google Kubernetes Engine, Cloud Run , App Engine, y Cloud Functions proporcionan, para aplicaciones que se ejecutan en esos servicios

Por lo tanto, para acceder al Administrador Secreto desde Cloud Run, las Credenciales predeterminadas de aplicación (ADC) utilizarán la cuenta de servicio predeterminada de Cloud Run.

EDITAR

De forma predeterminada, la ejecución en la nube utiliza cuenta del servicio del motor de compilación PROJECT_NUMBER-compute@developer.gserviceaccount.com que tiene el rol EDITOR. Tiene 2 opciones: usar la cuenta de servicio predeterminada o implementar la ejecución en la nube con un no predeterminado cuenta de servicio que creó con la función Secret Manager Admin.

1
marian.vladoi 21 abr. 2020 a las 09:53

Además de la excelente respuesta de @marian.vladoi, en pocas palabras, para acceder a una API de GCP (en su caso API de Secret Manager), debe hacer dos cosas:

  1. Implemente su aplicación Cloud Run con una cuenta de servicio específica utilizando la opción --service-account (o equivalente de UI).

  2. Otorgue permisos a esta cuenta de servicio para hacer algo (en este caso, acceder a un secreto).

Dentro de un contenedor Cloud Run (o una aplicación GKE, una aplicación Cloud Run, una aplicación Cloud Functions, etc.) no necesita especificar una clave con GOOGLE_APPLICATION_CREDENTIALS. Las credenciales necesarias se obtienen automáticamente mientras se ejecuta en Google Cloud en cualquier biblioteca de cliente GCP.

0
AhmetB - Google 20 abr. 2020 a las 17:33