分享google驱动器API凭据以供脚本使用的最佳做法是什么?

时间:2018-05-23 09:05:50

标签: python-3.x oauth-2.0 google-api google-oauth2 google-drive-team-drive

简而言之: 我应该在源代码中共享oauth2-credentials,其中包含对来自专用单个驱动器的google驱动器的完全写入访问权限 - 目的谷歌帐户?

所以,我已经编写了一个python脚本,可以将一些数据保存到预先存在的google-sheets文件中,或者在给定的google驱动器文件夹中创建一个新的google-sheets文件(这两个文件都可以公开编辑为在团队之间分享目的)。

为此,我按照google和其他来源列出的步骤和教程,之后我获得了使用google驱动器和google sheet API对我的脚本进行身份验证所需的oauth2-credentials。

这些凭据来自我为此脚本创建的单一用途的Google帐户。

现在我想与其他团队成员分享此脚本,但我不确定如何处理凭据;之一:

A。)

  

我会合并建议的谷歌工作流程,让我们   脚本的用户验证他/她自己,即用户启动   脚本,然后被定向到google身份验证weblogin,   验证脚本,然后脚本将保存并使用它们   用于将数据写入公共Google工作表的用户凭据   文件(不一定是用户拥有的私人文件)。

这有缺点:

  • 用户会信任我的脚本,凭据可以启用它 读/写用户驱动器帐户的所有数据。虽然我这样做 当然,并不意味着任何伤害,它似乎仍然要求太多
  • 负责
  • 它打破了我脚本的预期直接工作流程。
  • 在技术上根本不需要,因为脚本只能 写入公共工作表 - 文件/驱动器文件夹;那么它为什么需要呢 对所有用户的驱动器文件进行写访问?

B中。)

  

将我们的单一用途帐户的凭据硬编码到   脚本;这是脚本源代码的唯一缺点   将被分享,任何人都可以获得这些凭据。但是这些   凭据只会使攻击者能够将数据写入/读取   帐户的谷歌驱动器,但不控制整个帐户   本身由于oauth2凭证范围的限制   (我已经使用了" https://www.googleapis.com/auth/drive" scope)。   另外,如前所述,我们只会使用脚本   将数据读/写到由real拥有的公共工作表文件中   谷歌帐户,所以我们永远不会使用单一用途的驱动器   帐户,因此没有攻击者可以破坏我们的数据。

因此,我更倾向于选择B,但我无法帮助解决硬编码公开可读证书带来的焦虑......

你会建议什么?

1 个答案:

答案 0 :(得分:1)

我们决定使用选项A:用户需要自己创建client_secret.json和credentials.json文件。遗憾的是,这不是最直接的,而是最安全的。无论细节如何,在公共回购中共享凭证都是一件大事。

另外,为了完整起见:另一种方法是让我们的应用程序在我们可以保存client_secret的服务器上运行,这样用户就会看到一个浏览器弹出窗口,他/她将授权我们的服务

但是我们不遵循该选项,因为脚本只包含核心逻辑,它应该是其他开发的基础。

这是我们决定背后的动力。