Soluciona problemas de acceso

El solucionador de problemas de políticas te ayuda a comprender por qué un usuario tiene acceso a un recurso o no tiene permiso para llamar a una API. Con un correo electrónico, un recurso y un permiso, el solucionador de problemas de políticas examinará todas las políticas de Identity and Access Management (IAM) que se aplican al recurso. Luego, revelará si las funciones del miembro incluyen el permiso sobre ese recurso y, si es así, qué políticas vinculan al miembro con esas funciones.

Puedes acceder al solucionador de problemas de políticas con Cloud Console, la herramienta de línea de comandos de gcloud o la API de REST. Para búsquedas simples, el uso de Cloud Console suele ser más rápido. Para situaciones más complejas, considera usar la herramienta gcloud o la API de REST.

Permisos necesarios

El solucionador de problemas de políticas analiza el acceso de una principal a un recurso según las políticas y funciones de IAM que tienes permiso para ver. Si no tienes permiso para ver la política que se aplica a un recurso o si no tienes permiso para ver una función personalizada, es posible que no puedas saber si una principal tiene acceso.

A fin de solucionar completamente problemas de acceso de una principal, necesitarás una función que incluya los siguientes permisos:

  • resourcemanager.projects.getIamPolicy
  • resourcemanager.folders.getIamPolicy
  • resourcemanager.organizations.getIamPolicy
  • iam.roles.get
  • iam.roles.list

Para obtener estos permisos y seguir el principio de privilegio mínimo, pídele a tu administrador que te otorgue la función de revisor de seguridad (roles/iam.securityReviewer) a nivel de la organización.

Como alternativa, el administrador puede otorgarte una función diferente con los permisos necesarios, como una función personalizada o una función predefinida con más permisos.

Soluciona problemas de acceso

Para solucionar este tipo de problemas, necesitarás la información que se presenta a continuación:

  • Principal: La dirección de correo electrónico que se debe verificar. La dirección de correo electrónico debe hacer referencia a un usuario o a una cuenta de servicio. No se admiten otros tipos de miembros.
  • Recurso: El nombre completo del recurso. Por ejemplo, para verificar el proyecto my-project, ingresa //cloudresourcemanager.googleapis.com/projects/my-project. Para otros tipos de recursos, consulta los ejemplos de nombres completos de recursos.
  • Permiso: El permiso que se debe verificar. Si usas Cloud Console, se muestra una lista de sugerencias a medida que escribes. Para obtener una lista completa de los permisos, consulta Referencia de permisos de IAM.

Console

Soluciona problemas de acceso

Para solucionar problemas de acceso, sigue estos pasos:

  1. Primero, en Cloud Console, ve a la página Solucionador de problemas de políticas.

    Ir al solucionador de problemas de políticas

  2. Ingresa un correo electrónico, un nombre de recurso y un permiso para verificar.

  3. Opcional: Para comprobar varios recursos y permisos, selecciona Agregar otro par y repite el paso anterior.

  4. Haz clic en Comprobar llamada a la API.

Comprende los resultados del solucionador de problemas de políticas

Los resultados del solucionador de problemas de políticas te indican si la principal tiene el permiso especificado en el recurso dado. También, enumeran las políticas de IAM que se aplican al recurso y las vinculaciones de función en esas políticas.

De forma predeterminada, los resultados se muestran en Vista compacta, que solo muestra las vinculaciones de funciones para las funciones que contienen el permiso especificado. Si estás solucionando varios problemas de permisos, usa la lista desplegable Ver por para alternar entre ellos.

Para inhabilitar la Vista compacta, haz clic en el botón de activar o desactivar la Vista compacta. La inhabilitación de la Vista compacta muestra todas las vinculaciones de funciones en las políticas que se aplican al recurso.

La página de resultados contiene la siguiente información:

  • Resumen de acceso: Un resumen breve del acceso de la principal Con esta información, puedes ver si la principal tiene el permiso en el recurso. En el siguiente ejemplo, my-user@example.com tiene el permiso de logging.logs.view en my-project:

  • Políticas y vinculaciones de función relevantes: Una lista de las políticas de IAM que se aplican al recurso dado y a las vinculaciones de funciones en cada política. Junto a cada vinculación de función hay un ícono que indica si la vinculación de la función otorga el permiso especificado en la principal. Haz clic en la vinculación de función para ver el texto sin procesar.

    En el siguiente ejemplo, la vinculación de la función Visor de registros otorga el permiso:

  • Texto sin procesar de las vinculaciones de funciones relevantes: El texto sin procesar de cada vinculación de función en la lista de vinculaciones de función relevantes. Para obtener más información sobre la estructura de las vinculaciones de funciones, consulta la sección sobre comprender las políticas.

    En cada vinculación de función, las líneas se destacan de la siguiente manera:

    • Verde: Las líneas se destacan en verde si contienen una función que incluye el permiso especificado, si hacen referencia a la principal especificada o si hacen referencia a un grupo que contiene la principal especificada.
    • Rojo: Las líneas se destacan en rojo si contienen otra función, hacen referencia a otra principal o hacen referencia a un grupo que no contiene la principal especificada.
    • Amarillo: Las líneas se destacan en amarillo si contienen una función cuyos detalles no tienes permiso para ver o un grupo cuya membresía no tienes permiso para ver.

gcloud

Primero, asegúrate de que tu entorno esté configurado para usar el solucionador de problemas de políticas.

Habilita la API del solucionador de problemas de políticas:

gcloud services enable policytroubleshooter.googleapis.com --project=project-id

Luego, configura tu proyecto:

gcloud config set project project-id

Después de completar la configuración, puedes usar el solucionador de problemas de políticas para verificar si un usuario tiene un permiso en un recurso. Ejecuta el siguiente comando:

gcloud policy-troubleshoot iam resource --principal-email=email \
    --permission=permission

Por ejemplo, con el siguiente comando, se verifica si foo@example.com tiene el permiso resourcemanager.projects.getIamPolicy en el proyecto my- project.

gcloud policy-troubleshoot iam //cloudresourcemanager.googleapis.com/projects/my-project \
    --permission=resourcemanager.projects.getIamPolicy --principal-email=foo@example.com

El resultado es YAML donde indica si el usuario tiene el permiso y una explicación de por qué. Debería verse algo similar a esto:

access: GRANTED
explainedPolicies:
- access: GRANTED
  bindingExplanations:
  - access: NOT_GRANTED
    memberships:
      serviceAccount:service-123@compute-system.iam.gserviceaccount.com: MEMBERSHIP_NOT_INCLUDED
    role: roles/compute.serviceAgent
    rolePermission: ROLE_PERMISSION_NOT_INCLUDED
  - access: GRANTED
    memberships:
      serviceAccount:service@my-project.iam.gserviceaccount.com: MEMBERSHIP_NOT_INCLUDED
      user:foo@example.com: MEMBERSHIP_INCLUDED
    role: roles/owner
    rolePermission: ROLE_PERMISSION_INCLUDED
  fullResourceName: //cloudresourcemanager.googleapis.com/projects/my-project
  policy:
    bindings:
    - members:
      - serviceAccount:service-123@compute-system.iam.gserviceaccount.com
      role: roles/compute.serviceAgent
    - members:
      - serviceAccount:foo@my-project.iam.gserviceaccount.com
      - user:foo@example.com
      role: roles/owner
    etag: BwWAOWEaIEg=
    version: 1
- access: UNKNOWN_INFO_DENIED
policy: {}

API de REST

El método iam.troubleshoot te indica la razón por la que un miembro tiene o no un permiso de IAM.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • email: La dirección de correo electrónico del miembro al que pertenecen los permisos con problemas que deseas solucionar.
  • resource: El recurso en el que se otorga el permiso.
  • permission: El permiso con los problemas que deseas solucionar.

Método HTTP y URL:

POST https://policytroubleshooter.googleapis.com/v1/iam:troubleshoot

Cuerpo JSON de la solicitud:

{
  "accessTuple": {
    "principal": "email",
    "fullResourceName": "resource",
    "permission": "permission"
  }
}

Para enviar tu solicitud, expande una de estas opciones:

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

{
  "access": "GRANTED",
  "explainedPolicies": [
    {
      "access": "GRANTED",
      "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project",
      "policy": {
        "version": 1,
        "etag": "BwWBUZjK9YQ=",
        "bindings": [
          {
            "role": "roles/owner",
            "members": [
              "user:foo@example.com"
            ]
          }
        ]
      },
      "bindingExplanations": [
        {
          "access": "GRANTED",
          "role": "roles/owner",
          "rolePermission": "ROLE_PERMISSION_INCLUDED",
          "rolePermissionRelevance": "HIGH",
          "memberships": {
            "key": "user:foo@example.com",
            "value": {
              "membership": "MEMBERSHIP_INCLUDED",
              "relevance": "HIGH",
            }
          },
        "relevance: HIGH",
        }
      ]
    },
    {
      "access": "UNKNOWN_INFO_DENIED",
      "policy": {}
    }
  ]
}

Soluciona problemas de membresías de grupos

Solo puedes solucionar problemas de acceso a un recurso otorgado por un Grupo de Google si tienes permiso para ver a sus miembros.

Si no tienes permiso, el grupo se destaca en amarillo en Cloud Console y una advertencia indica que no sabes si el grupo incluye la principal. Si usas la herramienta de gcloud o la API de REST, la respuesta contendrá UNKNOWN_INFO_DENIED o ACCESS_TO_INFO_DENIED.

Soluciona problemas de membresías de grupos

Los administradores de grupo y los administradores avanzados de Google Workspace suelen tener acceso para ver las membresías del grupo. Para permitir que un usuario que no es administrador avanzado ni administrador de grupo solucione problemas de acceso, crea una función personalizada de administrador de Google Workspace que contenga el privilegio groups.read (que se encuentra en Privilegios de la API de Administrador) y otórgasela al usuario. Esto le permitirá ver la membresía de todos los grupos de tu dominio y solucionar problemas de acceso de manera más eficaz.

Soluciona problemas de vinculaciones de funciones condicionales

Para solucionar problemas relacionados con las vinculaciones de funciones condicionales, el solucionador de problemas de políticas necesita contexto adicional sobre la solicitud. Por ejemplo, para solucionar problemas con las condiciones basadas en atributos de fecha y hora, el solucionador de problemas de políticas necesita el horario de la solicitud.

Para proporcionar este contexto adicional, puedes solucionar problemas directamente desde cualquier registro de auditoría de actividad del administrador o registro de auditoría de acceso a los datos. Cada entrada de registro de auditoría corresponde a una solicitud a una API de Google Cloud o a una acción que Google Cloud realiza en tu nombre. Cuando solucionas problemas desde un registro de auditoría, el solucionador de problemas de políticas obtiene automáticamente información adicional sobre la solicitud, como la fecha y hora, lo que le permite analizar las vinculaciones de funciones condicionales.

Esta función solo está disponible en Cloud Console.

Para solucionar problemas de vinculaciones de funciones condicionales, haz lo siguiente:

  1. En Cloud Console, ve a la página Explorador de registros.

    Ve al Explorador de registros.

  2. Si el título de la página es Visor de registros heredados, haz clic en la lista desplegable Actualizar y selecciona Actualizar al Explorador de registros nuevo.

  3. Para ver solo los registros de auditoría de actividad del administrador y acceso a los datos, ingresa la siguiente consulta en el compilador de consultas y, luego, haz clic en Ejecutar consulta:

    logName=("RESOURCE_TYPE/RESOURCE_ID/logs/cloudaudit.googleapis.com%2Factivity" OR "RESOURCE_TYPE/RESOURCE_ID/logs/cloudaudit.googleapis.com%2Fdata_access")
    

    Reemplaza los siguientes valores:

    • RESOURCE_TYPE: El tipo de recurso para el que creas una lista de registros de auditoría. Usa projects, folders o organizations.
    • RESOURCE_ID: El ID de tu recurso.
  4. Ubica la entrada de registro de auditoría que corresponda a la solicitud que deseas solucionar. Si quieres obtener información sobre cómo usar el explorador de registros para encontrar entradas de registro específicas, consulta Usa el explorador de registros.

  5. En la columna Resumen de la entrada de registro, haz clic en IAM y, luego, en Solucionar problemas de acceso.

    El solucionador de problemas de políticas usa la información de la entrada de registro para solucionar los problemas de acceso y, luego, muestra los resultados. El contexto adicional se encuentra directamente debajo del resumen de acceso. Para obtener más información sobre la página de resultados del solucionador de problemas de políticas, consulta Solución de problemas de acceso en esta página.

  6. Opcional: Para solucionar otros problemas de solicitudes relacionadas con vinculaciones de funciones condicionales, regresa a la página del explorador de registros y repite los pasos anteriores.

¿Qué sigue?