简而言之: 我应该在源代码中共享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,但我无法帮助解决硬编码公开可读证书带来的焦虑......
你会建议什么?
答案 0 :(得分:1)
我们决定使用选项A:用户需要自己创建client_secret.json和credentials.json文件。遗憾的是,这不是最直接的,而是最安全的。无论细节如何,在公共回购中共享凭证都是一件大事。
另外,为了完整起见:另一种方法是让我们的应用程序在我们可以保存client_secret的服务器上运行,这样用户就会看到一个浏览器弹出窗口,他/她将授权我们的服务
但是我们不遵循该选项,因为脚本只包含核心逻辑,它应该是其他开发的基础。
这是我们决定背后的动力。