在 Google Apps 脚本中管理 API 机密的适当方法是啥?

Posted

技术标签:

【中文标题】在 Google Apps 脚本中管理 API 机密的适当方法是啥?【英文标题】:What is the appropriate way to manage API secrets within a Google Apps script?在 Google Apps 脚本中管理 API 机密的适当方法是什么? 【发布时间】:2019-04-11 08:44:30 【问题描述】:

如果我编写了一个谷歌应用程序脚本,并且在脚本中我需要调用第三方 API 或进行数据库调用,那么管理 API 密钥和密码的适当方法是什么?

如果我将脚本作为 API 发布但不共享对包含 Google Apps 脚本的 Google 云端硬盘位置的访问权限,那么将机密直接放在脚本中是否有任何风险

【问题讨论】:

例如,根据您的情况使用 Web Apps 怎么样?我认为您可以在 Web Apps 的脚本中使用密钥。示例流程如下。 1. 使用包含密钥的 Google Apps 脚本创建脚本。 2. 将其部署为 Web 应用程序。 3. 您像 API 一样调用 Web 应用程序并通过运行脚本来检索值。在这种情况下,包含 Web Apps 端点的 ID 不是脚本 ID,也不需要共享脚本。 developers.google.com/apps-script/guides/web如果这不是你想要的,我很抱歉。 另外,将其存储在User Properties @OP - 您是否设法找到了比将其保留在脚本中更好的解决方案? @Anshu Prateek 不幸的是,用户属性似乎是唯一的选择。这不是一个伟大的孤子。 @Master_Yoda 为什么用户属性不是一个很好的解决方案? 【参考方案1】:

没有正确或错误的答案。有很多因素需要考虑:

如果这是针对/在 G-Suite 中,那么您的 G-Suite 管理员将拥有(或可以获得)任何东西的访问权限。这可能是也可能不是问题。 如果您将数据放在工作表中,任何对该工作表具有读取权限的人都可以看到数据。 您可以使用PropertiesService,但随后人们可以按照文档中的说明进行访问。用户属性是一种方式,但可能不适用于所有用例——比如另一个用户正在执行代码。如果您的用例可行,您可以使用可安装的触发器。 如果人们需要能够使用您的密钥进行 API 调用,您可以编写一个他们可以调用但看不到源代码的代理网络应用。

【讨论】:

以上是关于在 Google Apps 脚本中管理 API 机密的适当方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

在 Google Apps 脚本中使用 Adwords API (MccApp)

在 Google Apps 脚本中使用完整的 Google Maps V3 API 及其所有功能

如何在 Google Apps 脚本中向 UrlFetchApp 添加 API 密钥

在 Google Apps 脚本中使用 Google People API 删除联系人返回 404 错误

使用 Google Apps 脚本的 Facebook API 批处理请求

Spotify API - 在 Google Apps 脚本中检索有效的访问令牌