我很确定我的理解是正确的,但是由于找不到任何我想在此处明确指出的Google文档。
每https://developers.google.com/apps-script/guides/triggers/installable:
可安装触发器始终以创建它们的人的身份运行。
我们知道,当您创建触发器时,它将要求对脚本使用的所有范围进行授权。
然后,这意味着对脚本具有编辑访问权限的任何人都可以利用用于创建触发器的用户的Google身份来访问触发器被授权的范围。
例如:
GmailApp.sendEmail("one@example.com", "test subject", "email body");
)现在,用户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
他们要做的就是更改代码并保存;他们无需重新创建触发器,因为它已经存在。下次运行触发器时,它将运行更新的代码。
我可以通过在一个帐户上创建测试脚本并授予另一个帐户编辑权限来确认此行为。
所以我的问题是,减轻这种风险的官方/推荐方法是什么?显而易见的答案是不给其他任何人编辑访问权限,但是如果那不是一个选择,那该怎么办-如果出于支持目的,多个人需要能够访问脚本,那该怎么办?
答案 0 :(得分:2)
正如您所说,唯一的官方/推荐方式是将编辑权限限制为受信任的人员。
在您的特定示例中,用户1可能选择了MailApp而不是GmailApp。这两个看似多余的服务可以单独使用,因为与GmailApp相比,MailApp拥有的特权非常有限。 (例如,用户2无法使用MailApp服务搜索受害Gmail。)
您可以进行协作,同时避免使用clasp
和git
直接访问脚本文件。只有您用clasp
推送到脚本。其他所有人都通过git
提交更改。您可以将系统设置为全自动(即git push
触发clasp push
)或手动(即先查看所有更改),无论哪种方式都可以很好地记录谁在什么时候做了什么git
。
答案 1 :(得分:2)
当您提供对脚本项目的编辑访问权限时,就有固有的 trust 。您要么信任这个人,要么不信任他们。两者之间没有关系。
您仍然可以保护数据的一些“理论”方法:
在特定部署处/不在Head
处安装触发器:
Head
如先前的回答所述,git
将是更好的选择。
出于所有实际目的,与恶意实体共享的任何数据都应被视为已泄露。