首页 > 解决方案 > 共享 google drive API 凭据以供脚本使用的最佳实践?

问题描述

简而言之:我是否应该在我们的源代码中共享 oauth2-credentials 以及从专用的单一用途 google 帐户对 google 驱动器的完全写入访问权限?

所以,我编写了一个 python 脚本,它可以将一些数据保存到预先存在的 google-sheets 文件中,或者在给定的 google drive 文件夹中创建一个新的 google-sheets 文件(这两个文件都是可公开编辑的,以便在团队之间共享) .

为此,我遵循了google和其他来源概述的步骤和教程,之后我获得了 oauth2-credentials,以便我的脚本通过 google drive 和 google sheet API 进行身份验证。

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

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

一种。)

我将合并建议的 google 工作流程,让脚本的用户对他/她自己进行身份验证,即用户启动脚本,然后被定向到 google-authentication weblogin,对脚本进行身份验证,然后脚本将保存并使用那些用户用于将数据写入公共 google-sheets 文件(不一定是用户拥有的私有文件)的凭据。

这有以下缺点:

乙)

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

因此,我宁愿选择选项 B,但我无法摆脱硬编码公开可读凭证带来的焦虑......

你有什么建议?

标签: python-3.xoauth-2.0google-apigoogle-oauthgoogle-drive-shared-drive

解决方案


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

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

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

这就是我们做出这个决定的动机。


推荐阅读