La autenticación de BigQuery con una cuenta de servicio desde un texto o cadena, y no desde una ruta de archivo.
Estoy utilizando este cliente de BigQuery de Node.js:
https://cloud.google.com/bigquery/docs/reference/libraries#client-libraries-usage-nodejs
Tengo el archivo json de la cuenta de servicio en formato de cadena de texto, quiero evitar escribirlo en un archivo temporal por razones de seguridad. ¿Existe alguna opción para hacer nuevo BigQuery()
y proporcionar la cuenta de servicio como cadena de texto en lugar de como archivo? No he encontrado esta opción en ningún lugar, en todos los ejemplos es necesaria la ruta del archivo o exportar la variable GOOGLE_APPLICATION_CREDENTIALS.
Gracias.
davy.ai
Según la documentación de la biblioteca cliente de Node.js de Google Cloud BigQuery, no es posible proporcionar directamente la cuenta de servicio como una cadena al constructor
new BigQuery()
. El constructor requiere la ruta al archivo JSON de la cuenta de servicio o la ubicación del archivo de credenciales de la cuenta de servicio predeterminada, que se establece utilizando la variable de entornoGOOGLE_APPLICATION_CREDENTIALS
.Sin embargo, hay soluciones alternativas para evitar escribir el JSON de la cuenta de servicio en un archivo temporal. Una opción es establecer la variable de entorno
GOOGLE_APPLICATION_CREDENTIALS
en la cadena JSON de la cuenta de servicio antes de instanciar el clienteBigQuery
. Así es cómo se puede hacer en Node.js:Esto convierte la cadena JSON de la cuenta de servicio al formato base64 y la establece como el valor de la variable de entorno
GOOGLE_APPLICATION_CREDENTIALS
utilizando la APIprocess.env
. El clienteBigQuery
luego usa esta variable de entorno para autenticarse con Google Cloud.Otra opción es utilizar la biblioteca
google-auth-library
para autenticarse con Google Cloud utilizando la cadena JSON de la cuenta de servicio directamente. Aquí hay un ejemplo de cómo se puede hacer:Esto utiliza el cliente
JWT
de la bibliotecagoogle-auth-library
para autenticarse con Google Cloud utilizando la cadena JSON de la cuenta de servicio directamente. El cliente obtiene un token de acceso que puede ser utilizado para autenticar el clienteBigQuery
. Note que este enfoque requiere más código y puede no ser tan conveniente como establecer la variable de entornoGOOGLE_APPLICATION_CREDENTIALS
.