¿Las mejores prácticas para compartir las credenciales de la API de Google Drive para ser utilizadas por un script?

0

En pocas palabras: ¿Compartiré las credenciales de oauth2 en nuestro código fuente con el alcance del acceso completo de escritura a una unidad de Google desde un Google dedicado único? -cuenta?

Por lo tanto, escribí un script en Python que guarda algunos datos en un archivo de hojas de Google preexistentes o crea un nuevo archivo de hojas de Google en una carpeta de Google Drive determinada (ambas editables públicamente para compartirlas) entre equipos).

Para esto seguí los pasos y tutoriales descritos en google y otras fuentes a partir de las cuales tengo obtuve las credenciales de oauth2 necesarias para que mi script sea autenticado con la unidad de Google y la API de las hojas de google.

Esas credenciales se derivan de una cuenta de Google de un solo propósito que he creado para este script.

Ahora me gustaría compartir este guión con otros miembros del equipo, pero no estoy seguro de cómo proceder con respecto a las credenciales; ya sea:

A.) Incorporaría el flujo de trabajo de Google sugerido que permitiría al usuario del script autenticarse, es decir, el usuario inicia el script, luego se dirige al weblogin de autenticación de Google, autentica el script y luego el script guarda y usa esos credenciales del usuario para escribir datos en un archivo público de hojas de google (no necesariamente privado, propiedad del usuario).

Esto tiene las desventajas de que:

  • el usuario confiaría en mi script con credenciales que le permitirían leer / escribir todos los datos de la cuenta de disco del usuario. Si bien no me refiero a ningún daño, por supuesto, todavía parece demasiado pedir y ser responsable de
  • rompe el flujo de trabajo directo previsto de mi script.
  • no es necesario en absoluto técnicamente, porque la secuencia de comandos solo escribirá en archivos públicos de hojas / carpetas de unidades; entonces, ¿por qué debería necesitar acceso de escritura a todos los archivos de disco del usuario?

B.) codifique las credenciales de nuestra cuenta de un solo propósito en el script; que tiene el único inconveniente de que cuando se compartiera el código fuente del script, cualquier persona podría obtener esas credenciales. Pero estas credenciales solo permitirían a un atacante escribir / leer datos en el disco de Google de la cuenta, pero no tomar el control de toda la cuenta en sí debido a las limitaciones del alcance de las credenciales de oauth2 (he usado " enlace " alcance ) . Además, como se dijo anteriormente, solo usaríamos el script para leer / escribir datos en archivos de hojas públicas que son propiedad de cuentas de google reales, por lo que nunca usaríamos la unidad de la cuenta de un solo propósito y, por lo tanto, ningún atacante podría destruir nuestros datos.

Por lo tanto, estoy optando por la opción B, pero no puedo evitar la ansiedad que conlleva la codificación de credenciales públicamente legibles ...

¿Qué sugerirías?

    
pregunta onoSendai 23.05.2018 - 11:58
fuente

1 respuesta

0

Decidimos por la opción A: los usuarios necesitan crear los archivos client_secret.json y credentials.json. Lamentablemente no es el más directo, sino el más seguro. Compartir credenciales en un repositorio público es simplemente un gran no-go, sin importar los detalles.

También para que esté completo: otra alternativa sería tener nuestra aplicación ejecutándose en un servidor donde pudiéramos guardar el cliente_secret, por lo que a un usuario solo se le presentaría un navegador emergente donde autorizaría nuestro servicio. .

Pero tampoco seguimos esa opción ya que la secuencia de comandos solo contendrá la lógica central y será una base para que otros desarrollen.

Esa es nuestra motivación detrás de la decisión.

    
respondido por el onoSendai 12.06.2018 - 12:25
fuente

Lea otras preguntas en las etiquetas