La API de Directory te permite usar Control de acceso basado en roles (RBAC) para administrar el acceso a las funciones de tu dominio de Google Workspace. Puedes crear roles personalizados con privilegios para limitar el acceso de administrador de manera más específica que los roles predefinidos de Google Workspace. Puedes asignar roles a los usuarios o grupos de seguridad. En esta guía, se explica cómo realizar algunas tareas básicas relacionadas con el rol.
La siguiente es una lista de términos comunes usados por la API de Directory con en cuanto al RBAC en Google Workspace:
- Privilegio
- El permiso necesario para realizar una tarea o una operación en una
dominio de Google Workspace. Representado por el
Recurso
Privilege
. Hay no hay datos persistentes asociados con este recurso. - Función
- Es una colección de privilegios que otorga a las entidades con ese rol las
capacidad para realizar ciertas tareas u operaciones. Representado por el
Recurso
Role
. - Asignación de roles
- El registro de un rol específico otorgado al usuario o grupo. Representado por
el
RoleAssignment
recurso. - Grupo de seguridad
- Un tipo de Grupo de Cloud Identity que se usa para controlar el acceso a los datos de Google Cloud. Los grupos de seguridad pueden contener tanto usuarios individuales como grupos.
Límites de asignación de roles
Solo puedes crear una cantidad limitada de roles personalizados o asignaciones de roles, así que te estás acercando al límite, consolide los recursos o quítalos para no superar el límite. Las funciones y las asignaciones de funciones tienen los siguientes límites:
- Puedes crear hasta 750 roles personalizados para toda la organización.
- Puedes crear hasta 1,000 asignaciones de roles por unidad organizativa (UO), en la que la organización raíz se considera una unidad. Por ejemplo, puedes asignar 600 roles en la organización raíz y 700 roles dentro de otra UO que hayas definido, como un departamento de una empresa. De forma predeterminada, todos los roles de administrador predefinidos de Google Workspace en toda la organización. Obtén más información sobre y límites de privilegios que se pueden asignar a nivel de la UO.
Las funciones y la asignación de roles tienen los siguientes límites para los grupos:
- Puedes asignar cualquier rol, excepto Administrador avanzado.
- Puedes tener un máximo de 250 asignaciones de roles a grupos en total en la UO general y dentro de cada UO.
- El grupo debe ser un grupo de seguridad de tu organización.
- Te recomendamos que restrinjas la pertenencia a un grupo solo a los usuarios de tu organización. Tú pueden agregar usuarios ajenos a tu organización, pero podría no obtener los privilegios del rol. Para obtener más información, consulta Restringe la pertenencia a un grupo. ### Asignación de funciones a grupos
Si necesitas asignar más de 1,000 roles en una UO, puedes agregar varios miembros a un grupo de seguridad y asignarles un rol. Rol en el grupo asignaciones tienen algunas limitaciones adicionales; consulta el Centro de ayuda para administradores si desea obtener información específica.
Asignación de rol a privilegios de la Consola del administrador de Google
Para asignar roles a los usuarios que acceden a sus privilegios a través del
Consola del administrador, tal vez se deban otorgar
otorgada. Por ejemplo, para otorgar a un usuario la capacidad de crear otros usuarios a través de
la Consola del administrador, y no solo el privilegio USERS_CREATE
obligatorio, pero también los valores USERS_UPDATE
y ORGANIZATION_UNITS_RETRIEVE
privilegios. En la siguiente tabla, se muestra la información de la Consola del administrador
a las concesiones de privilegios requeridas para administrar usuarios y
unidades organizativas.
Funcionalidad de la Consola del administrador | Privilegios necesarios |
---|---|
Unidades organizativas: Lectura | ORGANIZATION_UNITS_RETRIEVE |
Unidades organizativas: Creación | ORGANIZATION_UNITS_RETRIEVE + ORGANIZATION_UNITS_CREATE |
Unidades organizativas: Actualización | ORGANIZATION_UNITS_RETRIEVE + ORGANIZATION_UNITS_UPDATE |
Unidades organizativas: Borrar | ORGANIZATION_UNITS_RETRIEVE + ORGANIZATION_UNITS_DELETE |
Unidades organizativas | ORGANIZATION_UNITS_ALL |
Usuarios: Lectura | USERS_RETRIEVE + ORGANIZATION_UNITS_RETRIEVE |
Usuarios: Crear | USERS_CREATE + USERS_UPDATE + ORGANIZATION_UNITS_RETRIEVE |
Usuarios: actualización | USERS_UPDATE + ORGANIZATION_UNITS_RETRIEVE |
Usuarios: mover usuarios | USERS_MOVE + USERS_RETRIEVE + ORGANIZATION_UNITS_RETRIEVE |
Usuarios: Cambiar los nombres de los usuarios | USERS_ALIAS + USERS_RETRIEVE + ORGANIZATION_UNITS_RETRIEVE |
Usuarios: Restablecer contraseña | USERS_RESET_PASSWORD + USERS_RETRIEVE + ORGANIZATION_UNITS_RETRIEVE |
Usuarios: Forzar el cambio de contraseña | USERS_FORCE_PASSWORD_CHANGE + USERS_RETRIEVE + ORGANIZATION_UNITS_RETRIEVE |
Usuarios: Cómo agregar o quitar alias | USERS_ADD_NICKNAME + USERS_RETRIEVE + ORGANIZATION_UNITS_RETRIEVE |
Usuarios: Suspender usuarios | USERS_SUSPEND + USERS_RETRIEVE + ORGANIZATION_UNITS_RETRIEVE |
GRUPOS | GROUPS_ALL |
Seguridad: Administración de la seguridad de los usuarios | USER_SECURITY_ALL + USERS_RETRIEVE + ORGANIZATION_UNITS_RETRIEVE |
Ejemplos de casos de uso
Antes de comenzar
Completa el autenticación y autorización pasos para Google Workspace.
Obtener una lista de los privilegios del dominio
Para obtener una lista paginada de los privilegios admitidos en tu dominio, usa la
privileges.list()
.
Si eres un administrador y obtienes privilegios en tu propio dominio, utiliza
my_customer
como el ID de clienteSi usted es un distribuidor y obtiene privilegios para uno de sus clientes, utiliza el ID de cliente devuelto por la opción Recuperar user.
Solicitud
GET https://admin.googleapis.com/admin/directory/v1/customer/customer_id/roles/ALL/privileges
Respuesta
Una respuesta correcta devuelve un estado HTTP 200 automático. Además del estado, la respuesta devuelve los privilegios admitidos en el dominio:
{
"kind": "admin\#directory\#privileges",
"etag": ...,
"items": [
{
"kind": "admin\#directory\#privilege",
"etag": ...,
"serviceId": "02afmg282jiquyg",
"privilegeName": "APP_ADMIN",
"isOuScopable": false
},
{
"kind": "admin\#directory\#privilege",
"etag": ...,
"serviceId": "04f1mdlm0ki64aw",
"privilegeName": "MANAGE_USER_SETTINGS",
"isOuScopable": true,
"childPrivileges": [
{
"kind": "admin\#directory\#privilege",
"etag": ...,
"serviceId": "04f1mdlm0ki64aw",
"privilegeName": "MANAGE_APPLICATION_SETTINGS",
"isOuScopable": true
}
]
},
...
]
}
Obtener roles existentes
Para obtener una lista de los roles existentes, usa la siguiente solicitud GET
y agrega
autorización descrita en Autorizar
de estado de Google.
Si eres un administrador y obtienes roles en tu propio dominio, usa
my_customer
como el ID de clienteSi es un distribuidor y obtiene roles para un cliente, use el ID de cliente que gracias a la función Recuperar user.
Solicitud
GET https://admin.googleapis.com/admin/directory/v1/customer/customer_id/roles
Respuesta
Una respuesta correcta devuelve un estado HTTP 200
correcto. Además del
código de estado, la respuesta devuelve los roles que existen en el dominio:
{
"kind": "admin\#directory\#roles",
"etag": "\"sxH3n22L0-77khHtQ7tiK6I21Yo/DywA6_jaJCYw-f0lFs2-g17UWe8\"",
"items": [
{
"kind": "admin\#directory\#role",
"etag": ... ,
"roleId": "3894208461012993",
"roleName": "_SEED_ADMIN_ROLE",
"roleDescription": "Google Workspace Administrator Seed Role",
"rolePrivileges": [
{
"privilegeName": "SUPER_ADMIN",
"serviceId": "01ci93xb3tmzyin"
},
{
"privilegeName": "ROOT_APP_ADMIN",
"serviceId": "00haapch16h1ysv"
},
{
"privilegeName": "ADMIN_APIS_ALL",
"serviceId": "00haapch16h1ysv"
},
...
],
"isSystemRole": true,
"isSuperAdminRole": true
},
{
"kind": "admin\#directory\#role",
"etag": "\"sxH3n22L0-77khHtQ7tiK6I21Yo/bTXiZXfuK1NGr_f4paosCWXuHmw\"",
"roleId": "3894208461012994",
"roleName": "_GROUPS_ADMIN_ROLE",
"roleDescription": "Groups Administrator",
"rolePrivileges": [
{
"privilegeName": "CHANGE_USER_GROUP_MEMBERSHIP",
"serviceId": "01ci93xb3tmzyin"
},
{
"privilegeName": "USERS_RETRIEVE",
"serviceId": "00haapch16h1ysv"
},
{
"privilegeName": "GROUPS_ALL",
"serviceId": "00haapch16h1ysv"
},
{
"privilegeName": "ADMIN_DASHBOARD",
"serviceId": "01ci93xb3tmzyin"
},
{
"privilegeName": "ORGANIZATION_UNITS_RETRIEVE",
"serviceId": "00haapch16h1ysv"
}
],
"isSystemRole": true
},
...
]
}
Enumera todas las asignaciones de roles
Para obtener una lista paginada de todas las asignaciones de roles directas, usa la
roleAssignments.list()
. La API podría mostrar resultados vacíos con un token de página cuando userKey
parámetro de configuración. Debes continuar con la paginación hasta que no se muestre ningún token de página
que se devuelven.
Si eres administrador y obtienes asignaciones de roles en tu propio dominio, usa
my_customer
como el ID de clienteSi usted es distribuidor y le asigna funciones a uno de sus clientes utiliza el ID de cliente devuelto por la opción Recuperar user.
Solicitud
GET https://admin.googleapis.com/admin/directory/v1/customer/customer_id/roleassignments
Respuesta
Una respuesta correcta devuelve un estado HTTP 200
correcto. Además del
código de estado, la respuesta devuelve todos los roles asignados en el dominio:
{
"kind": "admin\#directory\#roleAssignment",
"etag": "\"sxH3n22L0-77khHtQ7tiK6I21Yo/VdrrUEz7GyXqlr9I9JL0wGZn8yE\"",
"roleAssignmentId:"3894208461013211",
"assignedTo:"100662996240850794412",
"assigneeType:"user",
"scopeType:"CUSTOMER",
}
Enumera todas las asignaciones de funciones indirectas
Para obtener una lista paginada de todas las asignaciones de roles, incluidas aquellas indirectamente
a un usuario por los grupos a los que pertenece, usa el
roleAssignments.list()
.
La API puede mostrar resultados vacíos con un token de página. Debes continuar la paginación hasta que no se muestre ningún token de página.
Si eres administrador y obtienes asignaciones de roles en tu propio dominio, usa
my_customer
como el ID de clienteSi usted es distribuidor y le asigna funciones a uno de sus clientes utiliza el ID de cliente devuelto por la opción Recuperar user.
Reemplaza
USER_KEY
por un valor que identifique la usuario en la solicitud a la API. Para obtener más información, consultausers.get
.
Solicitud
GET https://admin.googleapis.com/admin/directory/v1/customer/customer_id/roleassignments?userKey=USER_KEY&includeIndirectRoleAssignments=true
Respuesta
Una respuesta correcta devuelve un estado HTTP 200
correcto. Además del
código de estado, la respuesta devuelve todos los roles asignados en el dominio
assigneeType
es user
o group
:
{
"kind": "admin\#directory\#roleAssignment",
"etag": "\"sxH3n22L0-77khHtQ7tiK6I21Yo/VdrrUEz7GyXqlr9I9JL0wGZn8yE\"",
"roleAssignmentId:"3894208461013211",
"assignedTo:"100662996240850794412",
"assigneeType:"group",
"scopeType:"CUSTOMER",
}
Crear una función
Para crear un rol nuevo, usa la siguiente solicitud POST
y agrega lo siguiente:
autorización descrita en Autorizar
de estado de Google.
Agrega privilegeName
y serviceId
para cada privilegio que se debe
otorgadas con este rol. Para conocer las propiedades de solicitud y respuesta, consulta la sección
Referencia.
Solicitud
POST https://admin.googleapis.com/admin/directory/v1/customer/customer_id/roles { "roleName": "My New Role", "rolePrivileges": [ { "privilegeName": "USERS_ALL", "serviceId": "00haapch16h1ysv" }, { "privilegeName": "GROUPS_ALL", "serviceId": "00haapch16h1ysv" } ] }
Respuesta
Una respuesta correcta devuelve un estado HTTP 200
correcto. Además del
estado, la respuesta devuelve las propiedades del nuevo rol:
{
"kind": "admin\#directory\#role",
"etag": "\"sxH3n22L0-77khHtQ7tiK6I21Yo/uX9tXw0qyijC9nUKgCs08wo8aEM\"",
"roleId": "3894208461013031",
"roleName": "My New Role",
"rolePrivileges": [
{
"privilegeName": "GROUPS_ALL",
"serviceId": "00haapch16h1ysv"
},
{
"privilegeName": "USERS_ALL",
"serviceId": "00haapch16h1ysv"
}
]
}
Crea una asignación de rol
Para asignar un rol, usa el siguiente método POST
y, además, incluye la autorización
descritos en
Autoriza solicitudes.
Para asignar el rol a un usuario, agrega un cuerpo JSON con el
user_id
del usuario. que puedes llegar desdeusers.get()
, elroleId
(como se describe en Obtener roles existentes) y elscope_type
.Para asignar el rol a una cuenta de servicio, agrega un cuerpo JSON con el
unique_id
de la cuenta de servicio (como se define en Identity and Access Management (IAM)), elroleId
(como se describe en Obtener roles existentes) y lascope_type
.Para asignar el rol a un grupo, agrega un cuerpo JSON con el
group_id
de la que puedes obtener delgroups.get()
, elroleId
(como se describe en Obtener roles existentes), y elscope_type
.
Solicitud
POST https://admin.googleapis.com/admin/directory/v1/customer/customer_id/roleassignments { "roleId": "3894208461012995", "assignedTo": "100662996240850794412", "scopeType": "CUSTOMER" }
Respuesta
Una respuesta correcta devuelve un estado HTTP 200
correcto. Además del
estado, la respuesta devuelve las propiedades de la nueva asignación de rol:
{
"kind": "admin\#directory\#roleAssignment",
"etag": "\"sxH3n22L0-77khHtQ7tiK6I21Yo/VdrrUEz7GyXqlr9I9JL0wGZn8yE\"",
"roleAssignmentId": "3894208461013211",
"roleId": "3894208461012995",
"assignedTo": "100662996240850794412",
"scopeType": "CUSTOMER"
}
Crea una asignación de rol con condiciones
Puedes otorgar roles para realizar acciones que cumplan con condiciones específicas. Actualmente, solo se admiten dos condiciones:
- Solo se aplica a grupos de seguridad
- No aplicable a grupos de seguridad
Si estableces condition
, solo tendrá efecto cuando el recurso se
a las que se accede cumple la condición. Si condition
está vacío, el rol (roleId
) es
se aplica al actor (assignedTo
) en el alcance (scopeType
) incondicionalmente.
Para asignar un rol a un usuario, usa el siguiente método POST e incluye autorización descrita en Autorizar solicitudes.
Agrega un cuerpo JSON con el user_id
del usuario, que puedes obtener desde
users.get(), roleId
como
descrita en Obtener roles existentes, y la condition
. El
dos cadenas de condición deben usarse literalmente, como se muestra a continuación, y estas
Funcionan únicamente con el Editor de grupos y el Lector de grupos.
funciones de administrador predefinidas.
Estas condiciones siguen
Sintaxis de condición de Cloud IAM.
Solicitud
Solo se aplica a grupos de seguridad
POST https://admin.googleapis.com/admin/directory/v1.1beta1/customer/customer_id/roleassignments { "roleId": "3894208461012995", "assignedTo": "100662996240850794412", "scopeType": "CUSTOMER", "condition": "api.getAttribute('cloudidentity.googleapis.com/groups.labels', []).hasAny(['groups.security']) && resource.type == 'cloudidentity.googleapis.com/Group'" }
No aplicable a grupos de seguridad
POST https://admin.googleapis.com/admin/directory/v1.1beta1/customer/customer_id/roleassignments { "roleId": "3894208461012995", "assignedTo": "100662996240850794412", "scopeType": "CUSTOMER", "condition": "!api.getAttribute('cloudidentity.googleapis.com/groups.labels', []).hasAny(['groups.security']) && resource.type == 'cloudidentity.googleapis.com/Group'" }
Respuesta
Una respuesta correcta devuelve un estado HTTP 200
correcto. Además del
estado, la respuesta devuelve las propiedades de la nueva asignación de rol:
{
"kind": "admin\#directory\#roleAssignment",
"etag": "\"sxH3n22L0-77khHtQ7tiK6I21Yo/VdrrUEz7GyXqlr9I9JL0wGZn8yE\"",
"roleAssignmentId": "3894208461013211",
"roleId": "3894208461012995",
"assignedTo": "100662996240850794412",
"scopeType": "CUSTOMER",
"condition": "!api.getAttribute('cloudidentity.googleapis.com/groups.labels',
[]).hasAny(['groups.security']) && resource.type ==
'cloudidentity.googleapis.com/Group'"
}