为 Google 课堂功能指定自定义管理员角色

管理员可以创建自定义管理员 角色 设置允许特定个人或群组 教育 Plus 版许可,以便:

本指南介绍了如何使用 Google API。

自动执行自定义角色分配流程

如需自动执行自定义角色分配流程,请执行以下操作:

  1. 创建安全群组来整理可以访问这些功能的用户。
  2. 向群组添加成员。
  3. 通过选择正确的选项来创建自定义管理员角色 权限。
  4. 检索组织部门 ID。
  5. 将自定义管理员角色应用于新创建的 群组。

前提条件

  1. 阅读快速入门指南,了解如何设置和运行 使用 Google API 编写的应用程序,如 JavaScript、Python 和 Java。
  2. 阅读 Groups API 概览
  3. 在使用本 指南,您必须设置 Cloud Identity。 这些 API 用于创建群组以分配管理员权限。
  4. 设置 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 还会针对组内循环返回错误 会员。例如,如果 group1group2 的成员,则 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 步

发出 POST 请求的账号需要以下范围:

  • https://www.googleapis.com/auth/admin.directory.rolemanagement

请求正文

请求正文包含 role 的详细信息 要创建的活动。为需要关联的每项权限分别添加 privilegeNameserviceId。 应授予此角色的权限。

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 方法来检索 privilegeIdsserviceIds 的列表。

响应

响应中包含该角色的新实例。

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

您可以将自定义管理员角色的访问权限限制为一个或多个 组织部门。使用 OrgUnit API 用于检索 orgUnitId

Google 课堂分析

建议您选择一个学生组织部门教师 组织部门时将自定义管理员角色分配给某个 特定用户或群组。执行此操作后,被指定为 以下项目对学生和课程级数据的管理员权限: 组织部门。如果省略了“学生”组织部门, 指定用户将无法访问学生数据。如果教师 组织部门被忽略,指定用户无权访问 类别级数据。

临时课程访问权限

您可以授予拥有以下访问权限的用户,以限制课程临时访问权限: 特定组织部门中的课程的自定义管理员角色访问权限。 如果将访问权限限制到某个组织部门,则该群组分配了 自定义管理员角色只能访问符合以下条件的课程:主讲教师 课程属于该组织部门。

分配自定义管理员角色

要为群组分配自定义管理员角色,请使用以下 POST 请求。请参阅 自定义角色和角色分配方面的限制 有关角色分配限制的指南。

Directory API roleAssignments.insert

POST https://admin.googleapis.com/admin/directory/v1/customer/{customer}/roleassignments

分配给群组或单个用户

如果要将权限分配给某个群组,请将 groupId 包含在 assignedTo 字段。groupId是在 创建安全群组步骤。如果为 权限,请在 assignedTo 字段中添加该用户的 ID 。可通过调用 users.get 并指定用户的电子邮件地址 指定为 userKey 参数或通过调用 users.list

发出 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>"
}

资源

如需了解更多信息,请访问: