网域管理员可以使用多种控件来管理其网域中的用户可以访问的功能和应用。本页介绍了这些功能,以及它们可能对外部集成有何影响或有何用途,以及相关的 API 请求。
为未满 18 周岁的用户管理对第三方应用的访问权限
管理员必须在 Google 管理控制台中为未满 18 周岁的用户配置第三方应用。如果管理员未配置某个应用,未满 18 周岁的用户将无法通过其 Google Workspace 教育版账号访问该应用。
面向未满 18 周岁的 Google Workspace 教育版用户构建应用的开发者无需采取任何行动。只有管理员才能在管理控制台界面中配置第三方应用,无法通过编程方式完成。
为 Google 课堂功能指定自定义管理员角色
管理员可以在管理控制台中创建自定义管理员角色,以允许拥有教育 Plus 许可的特定个人或群组执行以下操作:
查看 Google 课堂分析,了解作业完成情况、成绩趋势和 Google 课堂采用情况等数据。
临时访问 Google 课堂中的课程,而无需指定永久助理教师。
本指南介绍了如何使用 Google API 在您的网域中设置这些功能。
自动执行自定义角色分配流程
本指南将介绍如何完成以下步骤以自动执行自定义角色分配流程:
- 创建安全群组,以便整理可以访问这些功能的用户。
- 向群组添加成员。
- 选择正确的权限,创建自定义管理员角色。
- 检索组织部门 ID。
- 将自定义管理员角色应用于新创建的群组。
前提条件
- 请阅读快速入门指南,了解如何使用 JavaScript、Python 和 Java 等语言使用 Google API 设置和运行应用。
- 在使用本指南中介绍的任何 Cloud Identity API 之前,您必须设置 Cloud Identity。这些 API 用于创建群组以分配管理员权限。
- 如果您想向一组用户(而非单个用户)提供自定义角色访问权限,请参阅 Groups API 概览并设置 Groups API。
创建安全群组
使用 groups.create
方法创建安全群组。如果请求的 labels
字段中包含安全标签,则可以将群组设置为安全群组。如需详细了解如何创建安全群组以及相关限制,请参阅创建安全群组指南。
POST https://cloudidentity.googleapis.com/v1/groups
(可选)您可以添加 InitialGroupConfig
查询参数来初始化群组所有者:
POST https://cloudidentity.googleapis.com/v1/groups&initialGroupConfig={initialGroupConfig}
发出此请求的账号需要具有以下某个范围:
https://www.googleapis.com/auth/cloud-identity.groups
https://www.googleapis.com/auth/cloud-identity
https://www.googleapis.com/auth/cloud-platform
请求正文
请求正文包含要创建的群组的详细信息。customerId
必须以“C”开头(例如 C046psxkn
)。查找您的客户 ID。
{
parent: "customers/<customer-id>",
description: "This is the leadership group of school A.",
displayName: "Leadership School A",
groupKey: {
id: "leadership_school_a@example.com"
},
labels: {
"cloudidentity.googleapis.com/groups.security": "",
"cloudidentity.googleapis.com/groups.discussion_forum": ""
}
}
响应
响应包含 Operation
资源的新实例。
{
done: true,
response: {
@type: "type.googleapis.com/google.apps.cloudidentity.groups.v1.Group",
name: "groups/<group-id>", // unique group ID
groupKey: {
id: "leadership_school_a@example.com" // group email address
},
parent: "customers/<customer-id>",
displayName: "Leadership School A",
description: "This is the leadership group of school A.",
createTime: "<created time>",
updateTime: "<updated time>",
labels: {
"cloudidentity.googleapis.com/groups.security": "",
"cloudidentity.googleapis.com/groups.discussion_forum": ""
}
}
}
添加群组成员
创建群组后,下一步是添加成员。群组成员可以是用户,也可以是其他安全群组。如果您将某个群组添加为另一个群组的成员,成员资格最多可能需要 10 分钟才能传播完毕。此外,如果组成员资格存在循环,该 API 会返回错误。例如,如果 group1
是 group2
的成员,则 group2
不能是 group1
的成员。
如需向群组添加成员,请使用以下 POST 请求调用 Directory API members.insert
方法:
POST https://admin.googleapis.com/admin/directory/v1/groups/{groupKey}/members
groupKey
路径参数是新成员的群组电子邮件地址或群组的唯一 ID。
发出 POST 请求的账号需要具有以下范围之一:
https://apps-apis.google.com/a/feeds/groups/
https://www.googleapis.com/auth/admin.directory.group
https://www.googleapis.com/auth/admin.directory.group.member
请求正文
请求正文包含要创建的 member
的详细信息。
{
email: "person_one@example.com",
role: "MEMBER", // can be `MEMBER`, `OWNER`, `MANAGER`
}
响应
响应中包含成员的新实例。
{
kind: "admin#directory#member",
etag: "<etag-value>", // role's unique ETag
id: "4567", // group member's unique ID
email: "person_one@example.com",
role: "MEMBER",
type: "GROUP",
status: "ACTIVE"
}
您需要为要添加为成员的每位用户发出此请求。您可以批量发出这些请求,以减少客户端必须建立的 HTTP 连接数量。
创建特权自定义管理员角色
借助 Directory API,您可以使用基于角色的访问权限控制 (RBAC) 来管理对 Google Workspace 网域中功能的访问权限。您可以创建具有权限的自定义角色,以比 Google Workspace 提供的预构建角色更具体地限制管理员访问权限。您可以向用户或安全群组分配角色。如需详细了解创建角色的限制,请参阅自定义角色和角色分配限制。
如需创建新角色,请使用以下 POST 请求调用 Directory API roles.insert
方法:
POST https://admin.googleapis.com/admin/directory/v1/customer/{customer}/roles
customerId
与本指南第 1 步中使用的 customerId
相同。
发出 POST 请求的账号需要具有以下范围:
https://www.googleapis.com/auth/admin.directory.rolemanagement
请求正文
请求正文包含要创建的 role
的详细信息。为应通过此角色授予的每项特权添加 privilegeName
和 serviceId
。
Google 课堂分析
您必须拥有 EDU_ANALYTICS_DATA_ACCESS
特权,才能创建可访问分析数据的自定义角色,并将 serviceId
设为 019c6y1840fzfkt
。
{
roleName: "Education Admin", // customize as needed
roleDescription: "Access to view analytics data", // customize as needed
rolePrivileges: [
{
privilegeName: "EDU_ANALYTICS_DATA_ACCESS",
serviceId: "019c6y1840fzfkt"
}
]
}
临时类访问权限
您需要 ADMIN_OVERSIGHT_MANAGE_CLASSES
权限才能创建可暂时访问类的自定义角色,同时将 serviceId
设为 019c6y1840fzfkt
。
{
roleName: "Education Admin", // customize as needed
roleDescription: "Access to manage classes privilege", // customize as needed
rolePrivileges: [
{
privilegeName: "ADMIN_OVERSIGHT_MANAGE_CLASSES",
serviceId: "019c6y1840fzfkt"
}
]
}
调用 privileges.list
方法以检索 privilegeIds
和 serviceIds
的列表。
响应
响应中包含角色的新实例。
Google 课堂分析
{
kind: "admin#directory#role",
etag: "<etag-value>", // role's unique ETag
roleId: "<role-id>", // role's unique ID
roleName: "Education Admin",
roleDescription: "Access to view analytics data",
rolePrivileges: [
{
privilegeName: "EDU_ANALYTICS_DATA_ACCESS",
serviceId: "019c6y1840fzfkt"
}
],
isSystemRole: false,
isSuperAdminRole: false
}
临时类访问权限
{
kind: "admin#directory#role",
etag: "<etag-value>", // role's unique ETag
roleId: "<role-id>", // role's unique ID
roleName: "Education Admin",
roleDescription: "Access to manage classes privilege",
rolePrivileges: [
{
privilegeName: "ADMIN_OVERSIGHT_MANAGE_CLASSES",
serviceId: "019c6y1840fzfkt"
}
],
isSystemRole: false,
isSuperAdminRole: false
}
检索组织部门 ID
您可以使用组织部门 ID 限制自定义管理员角色对一个或多个组织部门的访问权限。使用 OrgUnit API 检索 orgUnitId
。
Google 课堂分析
建议您在向特定用户或群组分配自定义管理员角色时,选择学生组织部门和教师组织部门。这样一来,获准使用自定义管理员权限的用户便可以访问组织部门的学生级和课程级数据。如果省略学生组织部门,指定用户将无法访问学生数据。如果省略教师组织部门,指定用户将无法访问课程级数据。
临时类访问权限
您可以通过允许具有自定义管理员角色的用户访问特定组织部门中的课程,来限制临时课程访问权限。如果限制对某个组织部门的访问权限,则分配了自定义管理员角色的群组只能访问主讲教师所在的组织部门中的课程。
分配自定义管理员角色
如需向群组分配自定义管理员角色,请使用以下 POST 请求。如需了解角色分配限制,请参阅自定义角色和角色分配限制指南。
Directory API roleAssignments.insert
:
POST https://admin.googleapis.com/admin/directory/v1/customer/{customer}/roleassignments
分配给群组或单个用户
如果要向群组授予特权,请在请求正文的 assignedTo
字段中添加 groupId
。groupId
是在创建安全群组步骤中获取的。如果要向单个用户授予特权,请在请求正文的 assignedTo
字段中添加用户的 ID。您可以通过调用 users.get
并将用户的电子邮件地址指定为 userKey
参数,或通过调用 users.list
来检索用户的 ID。
发出 POST 请求的账号需要具有以下范围:
https://www.googleapis.com/auth/admin.directory.rolemanagement
请求正文
请求正文包含要创建的 RoleAssignment
的详细信息。对于您要与此群组关联的每个组织部门,您都必须发出一个请求。
{
roleId: "<role-id>", // role's unique ID obtained from Step 3
assignedTo: "<id>", // group ID or user ID
scopeType: "ORG_UNIT", // can be `ORG_UNIT` or `CUSTOMER`
orgUnitId: "<org-unit-id>" // organizational unit ID referenced in Step 4
}
响应
响应包含 RoleAssignment
的新实例。
{
kind: "admin#directory#roleAssignment",
etag: "<etag-value>",
roleAssignmentId: "<role-assignment-id>",
roleId: "<role-id>",
assignedTo: "<group-id or user-id>",
assigneeType: "GROUP",
scopeType: "ORG_UNIT",
orgUnitId: "<org-unit-id>"
}
资源
如需了解详情,请访问: