Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 共享脚本使用的google drive API凭据的最佳实践?_Python 3.x_Oauth 2.0_Google Api_Google Oauth_Google Drive Shared Drive - Fatal编程技术网

Python 3.x 共享脚本使用的google drive API凭据的最佳实践?

Python 3.x 共享脚本使用的google drive API凭据的最佳实践?,python-3.x,oauth-2.0,google-api,google-oauth,google-drive-shared-drive,Python 3.x,Oauth 2.0,Google Api,Google Oauth,Google Drive Shared Drive,简而言之:我是否应该在源代码中共享oauth2凭据,从专用的单一用途google帐户完全访问google驱动器 因此,我编写了一个python脚本,它将一些数据保存到一个预先存在的google sheets文件中,或者将一个新的google sheets文件创建到一个给定的google驱动器文件夹中(这两个文件夹都可以公开编辑,以便在团队之间共享) 为此,我遵循了由和其他来源概述的步骤和教程,之后我获得了使用google drive和google sheets API验证脚本所需的oauth2凭

简而言之:我是否应该在源代码中共享oauth2凭据,从专用的单一用途google帐户完全访问google驱动器

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

为此,我遵循了由和其他来源概述的步骤和教程,之后我获得了使用google drive和google sheets API验证脚本所需的oauth2凭据

这些凭证来自我为这个脚本创建的一个单一用途的google帐户

现在,我想与其他团队成员分享此脚本,但我不确定如何处理有关凭据的问题;要么:

A.)

我会合并建议的谷歌工作流程,让 脚本的用户对自己进行身份验证,即用户启动脚本 脚本,然后被定向到google身份验证weblogin, 验证脚本,然后脚本将保存并使用这些 用于将数据写入公用google表单的用户凭据 文件(不一定是用户拥有的私有文件)

这样做的缺点是:

  • 用户将信任我的脚本,并提供可以启用它的凭据 读取/写入用户驱动器帐户的所有数据。而我呢 当然,这并不意味着有什么坏处,但要求似乎还是太多了 负责
  • 它打破了我脚本的预期直接工作流程
  • 从技术上讲根本没有必要,因为脚本 写入公共工作表文件/驱动器文件夹;那么,为什么需要这样做呢 对所有用户驱动器文件的写访问权限
B.)

将我们的单一用途帐户的凭据硬编码到 剧本当脚本的源代码 任何人都可以获得这些证书。但是这些 凭据只会使攻击者能够将数据写入/读取到 帐户的谷歌驱动器,但不能控制整个帐户 由于oauth2凭据范围的限制,它本身 (我用了“”)。 此外,如前所述,我们将只使用脚本 将数据读/写到real所有的公共图纸文件中 谷歌帐户,所以我们永远不会使用单一用途的驱动器 因此,没有攻击者可以破坏我们的数据

因此,我宁愿选择选项B,但我无法控制来自硬编码公开可读凭证的焦虑


您有什么建议?

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

此外,为了完整性:另一种选择是让我们的应用程序在服务器上运行,我们可以在服务器上保存客户端的机密,这样用户只需看到一个浏览器弹出窗口,他/她就可以授权我们的服务

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

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