如何在不启用Team Drive与外部各方共享的情况下授予Team Drive访问服务帐户的权限?

时间:2019-04-10 13:15:18

标签: google-drive-api

我最近在这家公司工作的公司改用Team Drive,我们有多个应用程序可以使用Google Drive API与Google Drive进行交互。可以使用Google服务帐户授权API调用,并通过与服务帐户电子邮件共享文件的方式(与普通用户共享文件的方式相同)来授予对特定文件的访问权限。既然我们已经切换到Team Drive,我将无法授予对服务帐户的访问权限,因为与之相关的电子邮件地址不被视为我们组织的一部分。我还考虑过通过Google Admin仪表板将服务帐户添加为我们组织中的普通用户,但这只允许我创建新用户,而不包括现有用户。我发现的唯一解决方案是启用与外部方的共享,这将使我能够与被视为外部方的服务帐户共享Team Drive文件。该解决方案存在风险且不正确,因为使用服务帐户的应用程序是我们组织的一部分。通常,出于安全原因,我们也不希望与外部各方共享。

我已经按照How to access Team Drive using service account with Google Drive .NET API v3中所述的步骤进行操作,但是它们如上所述起作用,但是如上所述,它们需要与我们不希望的外部各方共享。

理想的解决方案是将服务帐户视为我们组织的一部分,但我找不到解决方法。

我也曾尝试按照https://developers.google.com/identity/protocols/OAuth2ServiceAccount#delegatingauthority中所述将域范围内的授权委派给服务帐户,但据我所知,这不是我想要的,因为这将允许服务帐户模拟其他用户,但是我们拥有服务帐户的原因是为了执行自动发生且与特定用户无关的流程。

我也按照https://developers.google.com/admin-sdk/reports/v1/guides/delegation#delegate_domain-wide_authority_to_your_service_account所述的步骤通过Google Admin Security界面将特定的API服务列入白名单,但这似乎无济于事,我不确定应该可以这样做,因为我已经在最初创建服务帐户的API和服务仪表板中为此服务帐户启用了Drive API。

我们正在使用R,所以我一直在使用googledrive软件包,该软件包具有用于Team Drive的功能,例如:

googledrive::drive_find()
googledrive::team_drive_find()
googledrive::team_drive_get(id = "team-drive-id")

我希望能够看到团队精神,但是除非服务帐户电子邮件是团队精神的成员,否则我想这是不可能的,因为该服务帐户(通过以下方式链接到我们的组织)是不可能的它的所有者)不被视为我们组织的一部分。

0 个答案:

没有答案