启用了全域委派的应用程序是否可以通过模拟超级管理员来完成超出范围允许的范围?

Can applications with Domain-Wide Delegation enabled do more than the scopes allow by impersonating a superadmin?

GSuite 中的应用程序可以启用全域委派 (DWD),允许应用程序访问用户数据(和其他域数据)而无需用户进行任何交互。

根据a Google Support article,这意味着应用程序受限于应用程序上设置的范围。

但是,阅读 Stack Exchange 上关于“用户模拟”的各种回复让我怀疑这是否有效。参见:

没有具体的内容,但似乎(可能是错误的)一旦应用程序模拟具有足够管理员权限的“正确”用户,就可以访问任何所需的数据。我已经浏览了 Google 支持文档,但我能找到的关于模拟用户的范围的内容很少。我没有构建此类应用程序的经验,不知道要查找什么。

我的问题:

(Q) 启用了 DWD 的应用程序是否可以通过模拟超级管理员执行超出范围的操作?如果不是,如果这些范围之一包括更改用户密码的权限(例如 https://www.googleapis.com/auth/admin.directory.user),这是否意味着应用程序可以 bootstrap 本身并添加任何其他所需的范围?

或者,具有 DWD 的应用程序是否受其范围限制,即使在模拟超级管理员时也是如此?

我不是开发人员;我是一名系统管理员,拥有一些 light/informal 开发经验,所以如果您能相应地提出您的答案,我将不胜感激。

模拟帐户的权限有两种限制

  1. 模拟只能在 Security -> API controls
  2. 下的管理控制台中授权的范围内代表用户执行请求
  3. 某个应用程序只能使用在 creating a credentials object
  4. 时提供给服务帐户的范围

换句话说:

  • 如果您在管理控制台中启用,例如特定服务帐户的范围 https://www.googleapis.com/auth/admin.directory.user.readonly,此服务帐户 - 当被模拟时 - 将只能查看用户,不能执行任何超出 https://www.googleapis.com/auth/admin.directory.user.readonly
  • 限制的请求
  • 即使您在管理控制台中启用了完整的 https://www.googleapis.com/auth/admin.directory.user 范围,但在创建服务帐户凭据对象时,您也仅将其作为范围 https://www.googleapis.com/auth/admin.directory.user.readonly 传递 - 在特定的框架内应用程序,服务帐户同样将无法执行超出范围 https://www.googleapis.com/auth/admin.directory.user.readonly
  • 的请求

假设 once an application impersonates the "right" user with sufficient admin privileges, any required data can be accessed 令人困惑。

once an application impersonates the "right" user with sufficient admin privileges, any required data can be accessed - IF THE RESPECTIVE SCOPES HAVE BEEN ENABLED IN THE ADMIN CONSOLE AND GRANTED TO THE SERVICE ACCOUNT CREDENTIALS OBJECT OF THE SPECIFIC APPLICATION更正确。

  • 根据一般经验,您应该避免提供(在使用和不使用服务帐户时)过于宽泛的范围,最好提供几个特定的​​范围,而不是一个广泛的范围。