保护链接到授权触发器的Google Apps脚本,以便其他人可以进行编辑

时间:2019-08-14 10:25:32

标签: security google-apps-script google-authentication privacy google-apps-script-editor

我很确定我的理解是正确的,但是由于找不到任何我想在此处明确指出的Google文档。

https://developers.google.com/apps-script/guides/triggers/installable

  

可安装触发器始终以创建它们的人的身份运行。

我们知道,当您创建触发器时,它将要求对脚本使用的所有范围进行授权。

然后,这意味着对脚本具有编辑访问权限的任何人都可以利用用于创建触发器的用户的Google身份来访问触发器被授权的范围。

例如:

  • 用户1创建一个Google Apps脚本,该脚本使用GmailApp发送电子邮件 (即GmailApp.sendEmail("one@example.com", "test subject", "email body");
  • 用户1创建触发器以每小时运行一次该脚本,并使用适当的GmailApp范围对其进行授权
  • 用户1授予用户2对所述脚本的编辑访问权限

现在,用户2可以进入该脚本并更改代码并访问用户1的Gmail帐户。例如,用户2可以将代码更改为:

var emails = GmailApp.search("search string to find sensitive emails")
// use GmailApp.sendEmail to forward those details to someone else like User 2

他们要做的就是更改代码并保存;他们无需重新创建触发器,因为它已经存在。下次运行触发器时,它将运行更新的代码。

我可以通过在一个帐户上创建测试脚本并授予另一个帐户编辑权限来确认此行为。

所以我的问题是,减轻这种风险的官方/推荐方法是什么?显而易见的答案是不给其他任何人编辑访问权限,但是如果那不是一个选择,那该怎么办-如果出于支持目的,多个人需要能够访问脚本,那该怎么办?

2 个答案:

答案 0 :(得分:2)

正如您所说,唯一的官方/推荐方式是将编辑权限限制为受信任的人员。

在您的特定示例中,用户1可能选择了MailApp而不是GmailApp。这两个看似多余的服务可以单独使用,因为与GmailApp相比,MailApp拥有的特权非常有限。 (例如,用户2无法使用MailApp服务搜索受害Gmail。)

您可以进行协作,同时避免使用claspgit直接访问脚本文件。只有您用clasp推送到脚本。其他所有人都通过git提交更改。您可以将系统设置为全自动(即git push触发clasp push)或手动(即先查看所有更改),无论哪种方式都可以很好地记录谁在什么时候做了什么git

答案 1 :(得分:2)

当您提供对脚本项目的编辑访问权限时,就有固有的 trust 。您要么信任这个人,要么不信任他们。两者之间没有关系。

您仍然可以保护数据的一些“理论”方法:

  • 创建和使用其他Google帐户。
  • 在特定部署处/不在Head处安装触发器:

    • 仅在手动完成时才可能。以编程方式创建的可安装触发器只能在Head
    • 上使用
    • 部署web-app / api时,可以部署特定版本。
    • 当您为项目here创建新触发器时,可以提供此部署版本。
    • 不需要有效的web-app / api。我们只希望获取部署ID。
    • 这样,即使用户更改了脚本,触发器也将仅在已部署的旧版本上运行。
    • 可以在“发布”>“从清单部署”中看到已部署的版本。
  • 如先前的回答所述,git将是更好的选择。

出于所有实际目的,与恶意实体共享的任何数据都应被视为已泄露。