Designa roles de administrador personalizados para las funciones de Classroom

Los administradores pueden crear funciones de administrador personalizadas en la Consola del administrador para permitir que ciertas personas o grupos con una licencia de Education Plus hagan lo siguiente:

En esta guía, se explica cómo configurar estas funciones en tu dominio con las APIs de Google.

Automatiza el proceso de asignación de roles personalizados

Para automatizar el proceso de asignación de roles personalizados, sigue estos pasos:

  1. Crea grupos de seguridad para organizar a los usuarios que pueden acceder a estas funciones.
  2. Agrega miembros a los grupos.
  3. Selecciona el privilegio correcto para crear una función de administrador personalizada.
  4. Recupera los IDs de unidades organizativas.
  5. Aplica la función de administrador personalizada a los grupos recién creados.

Requisitos previos

  1. Lee las guías de inicio rápido para aprender a configurar y ejecutar una aplicación con las API de Google en lenguajes como JavaScript, Python y Java.
  2. Lee la Descripción general de la API de Groups.
  3. Antes de usar cualquiera de las API de Cloud Identity que se describen en esta guía, debes configurar Cloud Identity. Estas APIs se usan para crear grupos para asignar privilegios de administrador.
  4. Configura la API de Grupos.

Crea grupos de seguridad

Crea un grupo de seguridad con el método groups.create. Un grupo se puede configurar como grupo de seguridad cuando la etiqueta de seguridad se incluye en el campo labels de la solicitud. Para obtener más información y limitaciones sobre la creación de grupos de seguridad, consulta la guía para crear grupos de seguridad.

POST https://cloudidentity.googleapis.com/v1/groups

De manera opcional, puedes incluir el parámetro de búsqueda InitialGroupConfig para inicializar el propietario del grupo:

POST https://cloudidentity.googleapis.com/v1/groups&initialGroupConfig={initialGroupConfig}

La cuenta que realiza esta solicitud requiere uno de los siguientes alcances:

  • https://www.googleapis.com/auth/cloud-identity.groups
  • https://www.googleapis.com/auth/cloud-identity
  • https://www.googleapis.com/auth/cloud-platform

Cuerpo de la solicitud

El cuerpo de la solicitud contiene detalles del grupo que se creará. El customerId debe comenzar con "C" (por ejemplo, C046psxkn). Encuentra tu ID de cliente.

{
   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": ""
   }
}

Respuesta

La respuesta contiene una instancia nueva del recurso 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": ""
      }
   }
}

Agregar miembros al grupo

Una vez que hayas creado el grupo, el siguiente paso es agregar miembros. Un miembro del grupo puede ser un usuario o cualquier otro grupo de seguridad. Si agregas un grupo como miembro de otro, puede haber un retraso de hasta 10 minutos para que la membresía se propague. Además, la API muestra un error para los ciclos en las membresías del grupo. Por ejemplo, si group1 es miembro de group2, group2 no puede ser miembro de group1.

Para agregar un miembro a un grupo, usa la siguiente solicitud POST.

API de Directory members.insert:

POST https://admin.googleapis.com/admin/directory/v1/groups/{groupKey}/members

El parámetro de ruta de acceso groupKey es la dirección de correo electrónico del grupo del miembro nuevo o el ID único del grupo.

La cuenta que realiza la solicitud POST requiere uno de los siguientes alcances:

  • 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

Cuerpo de la solicitud

El cuerpo de la solicitud contiene detalles de member que se creará.

{
   email: "person_one@example.com",
   role: "MEMBER", // can be `MEMBER`, `OWNER`, `MANAGER`
}

Respuesta

La respuesta contiene la instancia nueva del miembro.

{
   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"
}

Esta solicitud se debe realizar por cada usuario que quieras agregar como miembro. Puedes agrupar estas solicitudes para reducir la cantidad de conexiones HTTP que debe hacer el cliente.

Crea un rol de administrador personalizado con privilegios

La API de Directory te permite usar el control de acceso basado en funciones (RBAC) para administrar el acceso a las funciones en tu dominio de Google Workspace. Puedes crear funciones personalizadas con privilegios para limitar el acceso de administrador de forma más específica que las funciones compiladas con anterioridad que se proporcionan en Google Workspace. Puedes asignar roles a usuarios o grupos de seguridad. Para obtener información más detallada sobre las limitaciones de la creación de funciones, consulta las limitaciones de funciones personalizadas y asignaciones de funciones.

Para crear un rol nuevo, usa la siguiente solicitud POST.

API de Directory roles.insert:

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

El customerId es el mismo que se usa en el paso 1 de esta guía.

La cuenta que realiza la solicitud POST requiere el siguiente alcance:

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

Cuerpo de la solicitud

El cuerpo de la solicitud contiene detalles de role que se creará. Agrega privilegeName y serviceId para cada privilegio que se deba otorgar con esta función.

Estadísticas de Classroom

Se requiere el privilegio EDU_ANALYTICS_DATA_ACCESS para crear una función personalizada que pueda acceder a los datos de estadísticas, junto con el serviceId configurado como 019c6y1840fzfkt.

{
   roleName: "Education Admin", // customize as needed
   roleDescription: "Access to view analytics data", // customize as needed
   rolePrivileges: [
      {
         privilegeName: "EDU_ANALYTICS_DATA_ACCESS",
         serviceId: "019c6y1840fzfkt"
      }
   ]
}

Acceso temporal a las clases

Se requiere el privilegio ADMIN_OVERSIGHT_MANAGE_CLASSES para crear una función personalizada que pueda acceder a las clases de forma temporal, junto con serviceId configurado como 019c6y1840fzfkt.

{
   roleName: "Education Admin", // customize as needed
   roleDescription: "Access to manage classes privilege", // customize as needed
   rolePrivileges: [
      {
         privilegeName: "ADMIN_OVERSIGHT_MANAGE_CLASSES",
         serviceId: "019c6y1840fzfkt"
      }
   ]
}

Llama al método privileges.list para recuperar una lista de privilegeIds y serviceIds.

Respuesta

La respuesta contiene la instancia nueva del rol.

Estadísticas de Classroom

{
   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
}

Acceso temporal a las clases

{
   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
}

Recupera los IDs de unidades organizativas

Puedes limitar el acceso de la función de administrador personalizada a una o más unidades organizativas con el ID de unidad organizativa. Usa la API de OrgUnit para recuperar orgUnitId.

Estadísticas de Classroom

Se recomienda que selecciones una unidad organizativa de estudiantes y una unidad organizativa de profesor cuando asignes el rol de administrador personalizado a un usuario o grupo específico. Esto permite que los usuarios designados con el privilegio de administrador personalizado accedan a los datos a nivel de los estudiantes y de la clase de las unidades organizativas. Si se omite la unidad organizativa del estudiante, los usuarios designados no tendrán acceso a los datos de los estudiantes. Si se omite la unidad organizativa del profesor, los usuarios designados no tendrán acceso a los datos de toda la clase.

Acceso temporal a las clases

Para limitar los privilegios temporales de acceso a las clases, permite que los usuarios con la función de administrador personalizada accedan a clases en unidades organizativas específicas. Si se restringe el acceso a una unidad organizativa, el grupo al que se le asignó el rol de administrador personalizado solo podrá acceder a las clases en las que el profesor principal esté en esa unidad organizativa.

Asigna el rol de administrador personalizado

Para asignar la función de administrador personalizada a un grupo, usa la siguiente solicitud POST. Consulta la guía sobre las limitaciones de la asignación de funciones y funciones personalizadas para conocer los límites de la asignación de funciones.

API de Directory roleAssignments.insert:

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

Asignar a un grupo o a un usuario individual

Si asignas el privilegio a un grupo, incluye groupId en el campo assignedTo del cuerpo de la solicitud. El groupId se obtuvo en el paso Crea grupos de seguridad. Si asignas el privilegio a un usuario individual, incluye el ID del usuario en el campo assignedTo del cuerpo de la solicitud. El ID del usuario se puede recuperar llamando a users.get y especificando la dirección de correo electrónico del usuario como el parámetro userKey o llamando a users.list.

La cuenta que realiza la solicitud POST requiere el siguiente alcance:

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

Cuerpo de la solicitud

El cuerpo de la solicitud contiene detalles del RoleAssignment que se creará. Debes realizar una solicitud por unidad organizativa que desees asociar a este grupo.

{
   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
}

Respuesta

La respuesta contiene la instancia nueva de 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>"
}

Recursos

Puedes encontrar información adicional en: