通过模拟超级管理员,启用了域范围委派的应用程序可以做的比范围所允许的更多吗?

问题描述

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

根据a Google Support article,这暗示该应用程序受到该应用程序上设置的范围的限制。

但是,在Stack Exchange上阅读有关“用户假冒”的各种回复使我想知道这是否有效。参见:

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

我的问题:

(Q)启用DWD的应用程序是否可以通过模拟超级管理员来实现超出范围所允许的范围?如果不是,那么如果这些作用域之一包含更改用户密码的权限(例如https://www.googleapis.com/auth/admin.directory.user),这是否意味着应用程序可以自我引导并添加任何其他所需的作用域?

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

我不是开发人员;我是一名系统管理员,具有丰富的/非正式的开发经验,因此,如果您能相应地提出自己的答案,我将不胜感激。

解决方法

模拟帐户的特权有两种限制方式

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

换句话说:

  • 如果您在管理控制台中启用,例如在特定服务帐户的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会更正确。

  • 作为一般经验法则,应避免为慷慨的范围提供(无论使用和不使用服务帐户)(最好是提供多个特定范围,而不是一个广泛的范围)。