如何解决通过模拟超级管理员,启用了域范围委派的应用程序可以做的比范围所允许的更多吗?
GSuite中的应用程序可以启用域范围委派(DWD),从而允许应用程序访问用户数据(和其他域数据)而无需用户方面的任何交互。
根据a Google Support article,这暗示该应用程序受到该应用程序上设置的范围的限制。
但是,在Stack Exchange上阅读有关“用户假冒”的各种回复使我想知道这是否有效。参见:
- Breno's response“域范围的委派模型允许服务帐户模拟用户,从而在域中获得与用户身份+授予应用程序的范围集所暗示的相同的特权。”
- Kessy's and Gilfoyle's responses“ ...这意味着服务帐户只能访问应用程序要模拟的帐户中的数据...。”和“ ...首先,最重要的是:服务帐户从技术上讲是DWD超级管理员...”
- Edited question ("Solution")
没有什么具体的内容,但是似乎(可能是错误地)一旦应用程序以足够的管理员权限模拟了“正确的”用户,便可以访问任何必需的数据。我已经浏览了Google支持文档,但是关于模拟我可以找到的用户的范围很少。我没有构建这样的应用程序的经验,无法知道要寻找什么。
我的问题:
(Q)启用DWD的应用程序是否可以通过模拟超级管理员来实现超出范围所允许的范围?如果不是,那么如果这些作用域之一包含更改用户密码的权限(例如https://www.googleapis.com/auth/admin.directory.user),这是否意味着应用程序可以自我引导并添加任何其他所需的作用域?
或者,即使模拟超级管理员,具有DWD的应用程序也受其范围限制吗?
我不是开发人员;我是一名系统管理员,具有丰富的/非正式的开发经验,因此,如果您能相应地提出自己的答案,我将不胜感激。
解决方法
模拟帐户的特权有两种限制方式
- 模拟只能在
Security -> API controls
下在管理控制台授权的范围内代表用户执行请求 - 某个应用程序只能使用creating a credentials object 时赋予服务帐户的范围
换句话说:
- 如果您在管理控制台中启用,例如在特定服务帐户的
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
会更正确。
- 作为一般经验法则,应避免为慷慨的范围提供(无论使用和不使用服务帐户)(最好是提供多个特定范围,而不是一个广泛的范围)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。