【问题标题】:What are the permissions to get admin_view in response to REST API: https://www.googleapis.com/admin/directory/v1/users?viewType=admin_view'响应 REST API 获取 admin_view 的权限是什么:https://www.googleapis.com/admin/directory/v1/users?viewType=admin_view'
【发布时间】:2025-12-19 11:55:11
【问题描述】:

在使用 Google Admin SDK REST API(获取域中的用户列表):https://www.googleapis.com/admin/directory/v1/users?domain='时,我总是遇到 403(未授权错误)。 “代码”:403, "message": "无权访问此资源/api"

但是,如果我只更改其中一个查询参数的值,即 viewType 从 'admin_view' 更改为 'domain_public',它会成功。因此,它表明我用来调用此查询的帐户没有“admin_view”的必要权限。

我正在使用 G-suite 帐户执行 REST API,但它没有 SUPER ADMIN 权限。同样,出于安全原因,我不想为该用户分配无限权限。

所以,我在这里有两个尖锐的查询:

  1. 获取上述 REST API 的“admin_view”的精确权限集是什么?
  2. 与其使用 G-Suite 用户帐户,不如创建一个与包含所有必要权限的自定义/开箱即用角色关联的服务帐户,并使用该服务帐户启动 REST API 查询?它会起作用吗?我觉得这是“理论上”更安全、更合适的方式?

【问题讨论】:

    标签: view admin google-admin-sdk


    【解决方案1】:

    我认为问题在于使用的帐户不是域的管理员,因此无法访问 Admin View Directory API。

    要解决此问题,请添加delegate domain-wide authority to your service account,然后面对以下注释

    只有有权访问 Admin API 的用户才能访问 Admin SDK 目录 API,因此您的服务帐户需要模拟 其中一位用户可以访问 Admin SDK Directory API。 此外,用户必须至少登录一次并接受 G Suite 服务条款。

    在您提出请求时冒充域管理员:

    $cred = new Google_Auth_AssertionCredentials(
        $service_account_name,
        $authArray,
        $key
    );
    $cred->sub = "admin@yourdomain.com";
    

    【讨论】:

    • 感谢您的回复...我有以下后续查询:1)如果用户必须是管理员帐户,这是否可能具有只读权限?我不能拥有具有任何写入、执行权限的管理员帐户。 2) 调用此 API 的全部目的是查明是否为特定用户启用了 MFA。是否有任何替代 API 可以找出这一点?