Cómo visualizar las funciones otorgables en los recursos

Antes de otorgar una función de IAM a un usuario para un recurso, es posible que desees saber qué funciones están disponibles para otorgar en un recurso en particular.

Cómo comprender qué funciones son otorgables

Una función es otorgable en o sobre un recurso si contiene algún permiso para ese tipo de recurso. Por ejemplo, la función storage.admin otorga permisos a las API storage.buckets.get y storage.objects.get, de modo que es otorgable en los tipos de recursos de depósitos de almacenamiento y objetos de almacenamiento.

Las funciones también se pueden otorgar "por encima de" los tipos de recursos para los que se definen sus permisos. En otras palabras, las funciones para los recursos de nivel inferior se pueden otorgar en un recurso que sea más alto en la jerarquía de recursos de GCP. Por ejemplo, la función storage.admin también se puede otorgar en los niveles de organización o proyecto, además de los depósitos de almacenamiento.

Los permisos otorgados por una función solo afectan a los recursos en el nivel especificado o inferior; no afectan a los recursos de alto nivel o de pares. Además, cuando se otorga una función en un recurso, solo se otorgan los permisos aplicables al recurso dado, independientemente del nombre de la función, la descripción o de otros permisos que contenga. Por ejemplo, la asignación de la función resourcemanager.organizationAdmin (que otorga el permiso resourcemanager.projects.list) a un usuario en el nivel de proyecto solo le otorga permisos para ese proyecto específico. No le permitirá listar o administrar todos los proyectos de la organización. De manera similar, la asignación de la función compute.admin en una instancia específica de Compute Engine solo otorga permisos para esa instancia, no para otras en el proyecto.

Cómo listar las funciones otorgables

Console

  1. Abre la página IAM en GCP Console.

    Abrir la página IAM.

  2. Haz clic en el menú desplegable "Seleccionar un proyecto" en la parte superior de la página.
  3. Selecciona el proyecto o la organización para los que deseas ver las funciones.
  4. Haz clic en Agregar.
  5. Ingresa el correo electrónico o dominio del miembro en Miembros.

El menú desplegable Seleccionar una función muestra todas las funciones (incluidas las funciones personalizadas) que puedes otorgar al miembro en este recurso.

COMANDO DE GCLOUD

Usa el comando de gcloud iam list-grantable-roles para mostrar una lista de todas las funciones que se pueden aplicar a un recurso determinado.

gcloud iam list-grantable-roles [FULL-RESOURCE-NAME]

Según el recurso deseado, se puede mostrar una gran cantidad de funciones. Para limitar los resultados, puedes especificar una expresión de filtro.

El resultado se verá similar a lo siguiente:

description: Full control of all Compute Engine resources.
name: roles/compute.admin
title: Compute Admin
---
description: Full control of Compute Engine instance resources.
name: roles/compute.instanceAdmin
title: Compute Instance Admin

// Additional results here...

API de REST

QueryGrantableRoles muestra una lista de todas las funciones que se pueden otorgar en un recurso.

Solicitud:

POST https://iam.googleapis.com/v1/roles:queryGrantableRoles

Cuerpo:

{
    "fullResourceName": [FULL-RESOURCE-NAME]
}

Respuesta:

{
    "roles": [
        {
            "name": "roles/compute.admin",
            "title": "Compute Admin",
            "description": "Full control of all Compute Engine resources."
        },
        {
            "name": "roles/compute.instanceAdmin",
            "title": "Compute Instance Admin (beta)",
            "description": "Full control of Compute Engine instance resources."
        }
        // Additional results here...
    ]
}

C#

Antes de probar esta muestra, sigue las instrucciones de configuración para C# que se encuentran en la Guía de inicio rápido de Cloud IAM con bibliotecas cliente. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud IAM para C#.

var request = new QueryGrantableRolesRequest
{
    FullResourceName = fullResourceName
};
var response = service.Roles.QueryGrantableRoles(request).Execute();

foreach (var role in response.Roles)
{
    Console.WriteLine("Title: " + role.Title);
    Console.WriteLine("Name: " + role.Name);
    Console.WriteLine("Description: " + role.Description);
    Console.WriteLine();
}

Java

Antes de probar esta muestra, sigue las instrucciones de configuración para Java que se encuentran en la Guía de inicio rápido de Cloud IAM con bibliotecas cliente. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud IAM para Java.

QueryGrantableRolesRequest request = new QueryGrantableRolesRequest();
request.setFullResourceName(fullResourceName);

QueryGrantableRolesResponse response = service.roles().queryGrantableRoles(request).execute();

for (Role role : response.getRoles()) {
  System.out.println("Title: " + role.getTitle());
  System.out.println("Name: " + role.getName());
  System.out.println("Description: " + role.getDescription());
  System.out.println();
}

Python

Antes de probar esta muestra, sigue las instrucciones de configuración para Python que se encuentran en la Guía de inicio rápido de Cloud IAM con bibliotecas cliente. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud IAM para Python.

def view_grantable_roles(full_resource_name):
    roles = service.roles().queryGrantableRoles(body={
        'fullResourceName': full_resource_name
    }).execute()

    for role in roles['roles']:
        print('Title: ' + role['title'])
        print('Name: ' + role['name'])
        print('Description: ' + role['description'])
        print(' ')

En los ejemplos anteriores, el nombre completo del recurso es una URI sin esquema que consiste en un nombre de servicio de API compatible con DNS y una ruta de recursos.

Por ejemplo, para mostrar todas las funciones que se pueden conceder en un proyecto, usa lo siguiente:

//cloudresourcemanager.googleapis.com/projects/[PROJECT-ID]

Los recursos de nivel inferior tienen un nombre calificado completo más detallado. Por ejemplo, usa lo siguiente para mostrar todas las funciones que se pueden conceder en una instancia de Compute Engine:

//compute.googleapis.com/projects/[PROJECT-ID]/zones/[ZONE-NAME]/instances/[INSTANCE-ID]

Para obtener más información sobre cómo se construyen los nombres completos de los recursos, consulta el artículo Nombres de recursos y la documentación de referencia para el servicio API para el que deseas obtener funciones que se puedan otorgar.

Pasos siguientes

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Documentación de Cloud Identity and Access Management