管理员如何访问特定域中所有用户的 Google 驱动器内容?

How can an Admin access the Google Drive contents of all the users in a particular domain?

我正在开发一种工具,使用由管理员 运行 提供的 Admin SDK,自动将 Google Drive 文档的所有权从一个用户转移到另一个用户。我使用数据传输 API 进行所有权转让。我想通过检查传输前后 google 驱动器文档的 size/number 来验证传输,管理员帐户必须能够访问所有用户的 Google 驱动器内容在域中。有没有办法做到这一点?还是有更好的方法来验证数据传输?

我尝试通过将 'key' 设置为目标用户帐户来使用 Drive API 服务进行验证。到目前为止,我对驱动器 API 的所有尝试都检索到了管理员的驱动器内容。

Files.list 将检索所有用户的文件,在这种情况下它将获得您自己的所有文件。只有当该用户也是您的文件之一的所有者时,该查询才能工作。

HTTP请求

GET https://www.googleapis.com/drive/v2/files

即使作为管理员,您也不能直接访问用户文件。

要访问其他用户的文件,作为管理员,您需要模拟用户然后代表他们执行操作。

这是通过使用具有全域授权的 service account 来实现的。

通常,当应用程序使用 Google API 来处理自己的数据而不是用户的数据时,应用程序会使用服务帐户。例如,使用 Google Cloud Datastore 进行数据持久化的应用程序将使用服务帐户来验证其对 Google Cloud Datastore API.

的调用

Google 应用域管理员还可以授予服务帐户域范围内的权限,以代表域中的用户访问用户数据。

这里有一张相关的 SO ticket,讨论最有效的用户文件传输过程:

使用Google Vault、Matters、Search Drive、Source All Data、Entitiy Specific Accounts、(用户帐户)放入您要提取的帐户。然后搜索。

您将看到用户访问过的所有文档的列表,并带有 date/time 标记。