Soluciona problemas de permisos de IAM

El Solucionador de problemas de políticas te ayuda a comprender si una principal puede acceder a un recurso. Si se le da una principal, un recurso y un permiso, El Solucionador de problemas de políticas examina las políticas de permisos, de denegación y las políticas de límite de acceso (PAB) de las principales que afectan el acceso de la principal. Luego, indica si, en función de esas políticas, la principal puede usar el permiso especificado para acceder al recurso. También enumera los políticas y se explica cómo afectan el acceso de la principal.

Puedes acceder al Solucionador de problemas de políticas La consola de Google Cloud, Google Cloud CLI o la API de REST. Para la versión básica por lo que el uso de la consola de Google Cloud suele ser más rápido. Para aplicaciones considera usar gcloud CLI o la API de REST.

Antes de comenzar

  • Habilita la API de Policy Troubleshooter.

    Habilita la API

Permisos necesarios

Para solucionar todos los problemas de las principales necesitas lo siguiente permisos.

Permisos para solucionar problemas de acceso de principales individuales

El Solucionador de problemas de políticas analiza el acceso de una principal a un recurso en función de las políticas de permisos, de denegación y de límite de acceso a las principales, y roles que tienes permiso para ver. Si no tienes permiso para ver un política que se aplica a un recurso, o si no tienes permiso para ver una rol personalizado, quizás no puedas saber si una principal tiene acceso.

A fin de obtener los permisos que necesitas para solucionar problemas de acceso de una principal, solicita a tu administrador que te otorgue el los siguientes roles de IAM en la organización:

Si quieres obtener más información para otorgar roles, consulta Administra el acceso.

También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.

Permisos para solucionar problemas de acceso de miembros del grupo

Si tus políticas de permiso y denegación incluyen grupos, necesitas el Google Workspace El permiso de la API de Admin groups.read para solucionar problemas de acceso de grupo individual miembros. Los administradores avanzados y los administradores de grupos tienen este permiso automáticamente. Para otorgar este permiso a un usuario que no sea un administrador avanzado ni de grupo, crear un administrador de Google Workspace que contiene las groups.read (ubicado en Privilegios de la API de Administrador) y otorgárselo a del usuario.

Si no tienes estos permisos, las vinculaciones de roles y reglas de denegación que contienen grupos o dominios tienen un resultado de acceso de Desconocido, a menos que la vinculación de rol o de denegación también incluye la principal de forma explícita.

Permisos para solucionar problemas de acceso de miembros del dominio

Si tus políticas de permiso y denegación incluyen una cuenta de Google Workspace o dominio de Cloud Identity, debes ser administrador de dominio para solucionar problemas acceso para miembros individuales del dominio.

Si no tienes estos permisos, las vinculaciones de roles y reglas de denegación que contienen grupos o dominios tienen un resultado de acceso de Desconocido, a menos que la vinculación de rol o de denegación también incluye la principal de forma explícita.

Soluciona problemas de acceso

Para solucionar problemas de acceso, necesitas la siguiente informació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. Otros tipos de principales, incluidos los grupos, dominios, identidades de personal ni de cargas de trabajo.
  • 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 de la consola de Google Cloud, presenta una lista de sugerencias a medida que escribes.

    Para solucionar problemas con un permiso, el permiso debe ser aplicable a la recurso en la solicitud. En otras palabras, debe ser posible usar permiso para acceder al recurso de alguna manera. Si el permiso no está aplicable para el recurso, la solicitud falla. Por ejemplo, si intentas para solucionar problemas con el permiso compute.instances.get de un clúster de Google Kubernetes Engine, la solicitud falla porque No se puede usar el permiso compute.instance.get para acceder Clústeres de Google Kubernetes Engine.

    Para obtener una lista completa de los permisos, consulta los permisos referencia.

Console

Para solucionar problemas de acceso, sigue estos pasos:

  1. En la consola de Google Cloud, ve al Solucionador de problemas de políticas .

    Ir al solucionador de problemas de políticas

  2. Ingresa el correo electrónico de la principal cuyo acceso quieres verificar.

  3. Ingresa el nombre completo del recurso que quieres comprobar.

    Si no conoces el nombre completo del recurso, realiza una de las siguientes acciones:

    • Si estás solucionando problemas de acceso a un proyecto, una carpeta o una organización, comienza a escribir para ver las opciones de autocompletar.
    • Si quieres solucionar problemas de acceso a otro tipo de recurso, haz clic Explorar para abrir el diálogo de búsqueda de recursos y, luego, buscar recurso:

      1. En el cuadro Seleccionar alcance, selecciona un proyecto, una carpeta o organización en la que buscar.
      2. En el cuadro Tipo de recurso, selecciona los tipos de recursos que deseas buscar.
      3. En el cuadro Buscar recursos, ingresa una parte del recurso. de la fuente de datos.
      4. En la sección de resultados, selecciona el recurso que quieres verificar.
      5. Haz clic en Seleccionar para elegir el recurso y cerrar el diálogo.
  4. Ingresa el permiso que quieres verificar.

    Si no conoces el nombre completo del permiso, comienza a escribir para ver la función de autocompletar opciones de estado.

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

  6. Haz clic en Verificar acceso.

gcloud

Para averiguar por qué una principal tiene o no un permiso de IAM, usa el gcloud beta policy-troubleshoot iam kubectl.

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

  • VERSION: Opcional La versión del comando que se usará. Para solucionar problemas acceso basado solo en políticas de permiso y denegación, no especifiques una versión. Para solucionar problemas de acceso en función de las políticas de permiso, denegación y límite de acceso de las principales, usa la versión beta.
  • EMAIL: La dirección de correo electrónico del principal 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.

Ejecuta el gcloud beta policy-troubleshoot iam :

Linux, macOS o Cloud Shell

gcloud VERSION policy-intelligence troubleshoot-policy iam RESOURCE --principal-email=EMAIL \
    --permission=PERMISSION

Windows (PowerShell)

gcloud VERSION policy-intelligence troubleshoot-policy iam RESOURCE --principal-email=EMAIL `
    --permission=PERMISSION

Windows (cmd.exe)

gcloud VERSION policy-intelligence troubleshoot-policy iam RESOURCE --principal-email=EMAIL ^
    --permission=PERMISSION

Deberías recibir una respuesta similar a la que figura a continuación:

Respuesta

{
  "accessTuple": {
    "conditionContext": {
      "destination": {},
      "effectiveTags": [
        {
          "namespacedTagKey": "project-1/tag-key-1",
          "namespacedTagValue": "project-1/tag-key-1/tag-value-1",
          "tagKey": "tagKeys/123456789012",
          "tagKeyParentName": "projects/123456789012",
          "tagValue": "tagValues/123456789012"
        },
      ],
      "request": {},
      "resource": {}
    },
    "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/project-1",
    "permission": "bigtable.instances.create",
    "permissionFqdn": "bigtable.googleapis.com/instances.create",
    "principal": "service-account-3@project-1.iam.gserviceaccount.com"
  },
  "allowPolicyExplanation": {
    "allowAccessState": "ALLOW_ACCESS_STATE_NOT_GRANTED",
    "explainedPolicies": [
      {
        "allowAccessState": "ALLOW_ACCESS_STATE_NOT_GRANTED",
        "bindingExplanations": [
          {
            "allowAccessState": "ALLOW_ACCESS_STATE_NOT_GRANTED",
            "combinedMembership": {
              "membership": "MEMBERSHIP_NOT_MATCHED",
              "relevance": "HEURISTIC_RELEVANCE_NORMAL"
            },
            "condition": {
              "expression": "resource.type == \"cloudresourcemanager.googleapis.com/Project\"",
              "title": "Resource-based condition"
            },
            "conditionExplanation": {
              "evaluationStates": [
                {
                  "end": 62,
                  "value": false
                }
              ],
              "value": false
            },
            "memberships": {
              "serviceAccount:service-account-1@project-1.iam.gserviceaccount.com": {
                "membership": "MEMBERSHIP_NOT_MATCHED",
                "relevance": "HEURISTIC_RELEVANCE_NORMAL"
              }
            },
            "relevance": "HEURISTIC_RELEVANCE_NORMAL",
            "role": "roles/bigquery.admin",
            "rolePermission": "ROLE_PERMISSION_NOT_INCLUDED",
            "rolePermissionRelevance": "HEURISTIC_RELEVANCE_NORMAL"
          },
          {
            "allowAccessState": "ALLOW_ACCESS_STATE_NOT_GRANTED",
            "combinedMembership": {
              "membership": "MEMBERSHIP_NOT_MATCHED",
              "relevance": "HEURISTIC_RELEVANCE_NORMAL"
            },
            "condition": {
              "expression": "resource.matchTag(\"project-1/tag-key-1\", \"tag-value-1\")",
              "title": "Tag-based condition"
            },
            "conditionExplanation": {
              "evaluationStates": [
                {
                  "end": 73,
                  "value": true
                }
              ],
              "value": true
            },
            "memberships": {
              "serviceAccount:service-account-2@project-1.iam.gserviceaccount.com": {
                "membership": "MEMBERSHIP_NOT_MATCHED",
                "relevance": "HEURISTIC_RELEVANCE_NORMAL"
              }
            },
            "relevance": "HEURISTIC_RELEVANCE_NORMAL",
            "role": "roles/bigquery.admin",
            "rolePermission": "ROLE_PERMISSION_NOT_INCLUDED",
            "rolePermissionRelevance": "HEURISTIC_RELEVANCE_NORMAL"
          },
          {
            "allowAccessState": "ALLOW_ACCESS_STATE_NOT_GRANTED",
            "combinedMembership": {
              "membership": "MEMBERSHIP_NOT_MATCHED",
              "relevance": "HEURISTIC_RELEVANCE_NORMAL"
            },
            "memberships": {
              "user:user-2@example.com": {
                "membership": "MEMBERSHIP_NOT_MATCHED",
                "relevance": "HEURISTIC_RELEVANCE_NORMAL"
              }
            },
            "relevance": "HEURISTIC_RELEVANCE_NORMAL",
            "role": "roles/compute.admin",
            "rolePermission": "ROLE_PERMISSION_NOT_INCLUDED",
            "rolePermissionRelevance": "HEURISTIC_RELEVANCE_NORMAL"
          },
          {
            "allowAccessState": "ALLOW_ACCESS_STATE_NOT_GRANTED",
            "combinedMembership": {
              "membership": "MEMBERSHIP_NOT_MATCHED",
              "relevance": "HEURISTIC_RELEVANCE_NORMAL"
            },
            "memberships": {
              "user:user-1@example.com": {
                "membership": "MEMBERSHIP_NOT_MATCHED",
                "relevance": "HEURISTIC_RELEVANCE_NORMAL"
              },
              "user:user-3@example.com": {
                "membership": "MEMBERSHIP_NOT_MATCHED",
                "relevance": "HEURISTIC_RELEVANCE_NORMAL"
              }
            },
            "relevance": "HEURISTIC_RELEVANCE_NORMAL",
            "role": "roles/iam.serviceAccountTokenCreator",
            "rolePermission": "ROLE_PERMISSION_NOT_INCLUDED",
            "rolePermissionRelevance": "HEURISTIC_RELEVANCE_NORMAL"
          },
          {
            "allowAccessState": "ALLOW_ACCESS_STATE_NOT_GRANTED",
            "combinedMembership": {
              "membership": "MEMBERSHIP_NOT_MATCHED",
              "relevance": "HEURISTIC_RELEVANCE_NORMAL"
            },
            "memberships": {
              "user:user-2@example.com": {
                "membership": "MEMBERSHIP_NOT_MATCHED",
                "relevance": "HEURISTIC_RELEVANCE_NORMAL"
              },
              "user:user-1@example.com": {
                "membership": "MEMBERSHIP_NOT_MATCHED",
                "relevance": "HEURISTIC_RELEVANCE_NORMAL"
              }
            },
            "relevance": "HEURISTIC_RELEVANCE_HIGH",
            "role": "roles/owner",
            "rolePermission": "ROLE_PERMISSION_INCLUDED",
            "rolePermissionRelevance": "HEURISTIC_RELEVANCE_HIGH"
          },
          {
            "allowAccessState": "ALLOW_ACCESS_STATE_NOT_GRANTED",
            "combinedMembership": {
              "membership": "MEMBERSHIP_MATCHED",
              "relevance": "HEURISTIC_RELEVANCE_NORMAL"
            },
            "memberships": {
              "serviceAccount:service-account-3@project-1.iam.gserviceaccount.com": {
                "membership": "MEMBERSHIP_MATCHED",
                "relevance": "HEURISTIC_RELEVANCE_NORMAL"
              },
              "serviceAccount:service-account-4@project-1.iam.gserviceaccount.com": {
                "membership": "MEMBERSHIP_NOT_MATCHED",
                "relevance": "HEURISTIC_RELEVANCE_NORMAL"
              }
            },
            "relevance": "HEURISTIC_RELEVANCE_NORMAL",
            "role": "roles/resourcemanager.projectIamAdmin",
            "rolePermission": "ROLE_PERMISSION_NOT_INCLUDED",
            "rolePermissionRelevance": "HEURISTIC_RELEVANCE_NORMAL"
          },
          {
            "allowAccessState": "ALLOW_ACCESS_STATE_NOT_GRANTED",
            "combinedMembership": {
              "membership": "MEMBERSHIP_NOT_MATCHED",
              "relevance": "HEURISTIC_RELEVANCE_NORMAL"
            },
            "memberships": {
              "serviceAccount:service-account-4@project-1.iam.gserviceaccount.com": {
                "membership": "MEMBERSHIP_NOT_MATCHED",
                "relevance": "HEURISTIC_RELEVANCE_NORMAL"
              }
            },
            "relevance": "HEURISTIC_RELEVANCE_NORMAL",
            "role": "roles/resourcemanager.tagViewer",
            "rolePermission": "ROLE_PERMISSION_NOT_INCLUDED",
            "rolePermissionRelevance": "HEURISTIC_RELEVANCE_NORMAL"
          }
        ],
        "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/project-1",
        "policy": {
          "bindings": [
            {
              "condition": {
                "expression": "resource.type == \"cloudresourcemanager.googleapis.com/Project\"",
                "title": "Resource-based condition"
              },
              "members": [
                "serviceAccount:service-account-1@project-1.iam.gserviceaccount.com"
              ],
              "role": "roles/bigquery.admin"
            },
            {
              "condition": {
                "expression": "resource.matchTag(\"project-1/tag-key-1\", \"tag-value-1\")",
                "title": "Tag-based condition"
              },
              "members": [
                "serviceAccount:service-account-2@project-1.iam.gserviceaccount.com"
              ],
              "role": "roles/bigquery.admin"
            },
            {
              "members": [
                "user:user-2@example.com"
              ],
              "role": "roles/compute.admin"
            },
            {
              "members": [
                "user:user-1@example.com",
                "user:user-3@example.com"
              ],
              "role": "roles/iam.serviceAccountTokenCreator"
            },
            {
              "members": [
                "user:user-2@example.com",
                "user:user-1@example.com"
              ],
              "role": "roles/owner"
            },
            {
              "members": [
                "serviceAccount:service-account-3@project-1.iam.gserviceaccount.com",
                "serviceAccount:service-account-4@project-1.iam.gserviceaccount.com"
              ],
              "role": "roles/resourcemanager.projectIamAdmin"
            },
            {
              "members": [
                "serviceAccount:service-account-4@project-1.iam.gserviceaccount.com"
              ],
              "role": "roles/resourcemanager.tagViewer"
            }
          ],
          "etag": "BwYY6ttEMEY=",
          "version": 3
        },
        "relevance": "HEURISTIC_RELEVANCE_HIGH"
      },
    ],
    "relevance": "HEURISTIC_RELEVANCE_HIGH"
  },
  "denyPolicyExplanation": {
    "denyAccessState": "DENY_ACCESS_STATE_NOT_DENIED",
    "explainedResources": [
      {
        "denyAccessState": "DENY_ACCESS_STATE_NOT_DENIED",
        "explainedPolicies": [
          {
            "denyAccessState": "DENY_ACCESS_STATE_NOT_DENIED",
            "policy": {
              "createTime": "2024-04-09T23:28:24.103203Z",
              "displayName": "Troubleshooter v3 prober non-tag deny policy",
              "etag": "MTgyMzk3MDY4OTY4MDE0ODg4OTY=",
              "kind": "DenyPolicy",
              "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F546942305807/denypolicies/deny-policy-1",
              "rules": [
                {
                  "denyRule": {
                    "deniedPermissions": [
                      "bigquery.googleapis.com/datasets.create"
                    ],
                    "deniedPrincipals": [
                      "principal://iam.googleapis.com/projects/-/serviceAccounts/service-account-1@project-1.iam.gserviceaccount.com"
                    ]
                  }
                }
              ],
              "uid": "fab63b4d-ecfb-5f06-8a6d-602bf1be5062",
              "updateTime": "2024-05-20T23:29:38.428095Z"
            },
            "relevance": "HEURISTIC_RELEVANCE_HIGH",
            "ruleExplanations": [
              {
                "combinedDeniedPermission": {
                  "permissionMatchingState": "PERMISSION_PATTERN_NOT_MATCHED",
                  "relevance": "HEURISTIC_RELEVANCE_HIGH"
                },
                "combinedDeniedPrincipal": {
                  "membership": "MEMBERSHIP_NOT_MATCHED",
                  "relevance": "HEURISTIC_RELEVANCE_HIGH"
                },
                "combinedExceptionPermission": {
                  "permissionMatchingState": "PERMISSION_PATTERN_NOT_MATCHED",
                  "relevance": "HEURISTIC_RELEVANCE_NORMAL"
                },
                "combinedExceptionPrincipal": {
                  "membership": "MEMBERSHIP_NOT_MATCHED",
                  "relevance": "HEURISTIC_RELEVANCE_NORMAL"
                },
                "deniedPermissions": {
                  "bigquery.googleapis.com/datasets.create": {
                    "permissionMatchingState": "PERMISSION_PATTERN_NOT_MATCHED",
                    "relevance": "HEURISTIC_RELEVANCE_HIGH"
                  }
                },
                "deniedPrincipals": {
                  "principal://iam.googleapis.com/projects/-/serviceAccounts/service-account-1@project-1.iam.gserviceaccount.com": {
                    "membership": "MEMBERSHIP_NOT_MATCHED",
                    "relevance": "HEURISTIC_RELEVANCE_HIGH"
                  }
                },
                "denyAccessState": "DENY_ACCESS_STATE_NOT_DENIED",
                "relevance": "HEURISTIC_RELEVANCE_HIGH"
              }
            ]
          },
        ],
        "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/123456789012",
        "relevance": "HEURISTIC_RELEVANCE_HIGH"
      }
    ],
    "permissionDeniable": true,
    "relevance": "HEURISTIC_RELEVANCE_NORMAL"
  },
  "overallAccessState": "CANNOT_ACCESS",
  "pabPolicyExplanation": {
    "explainedBindingsAndPolicies": [
      {
        "bindingAndPolicyAccessState": "PAB_ACCESS_STATE_NOT_ENFORCED",
        "explainedPolicy": {
          "explainedRules": [
            {
              "combinedResourceInclusionState": "RESOURCE_INCLUSION_STATE_NOT_INCLUDED",
              "effect": "ALLOW",
              "explainedResources": [
                {
                  "relevance": "HEURISTIC_RELEVANCE_NORMAL",
                  "resource": "//cloudresourcemanager.googleapis.com/projects/project-2",
                  "resourceInclusionState": "RESOURCE_INCLUSION_STATE_NOT_INCLUDED"
                }
              ],
              "relevance": "HEURISTIC_RELEVANCE_NORMAL",
              "ruleAccessState": "PAB_ACCESS_STATE_NOT_ALLOWED"
            }
          ],
          "policy": {
            "createTime": "2024-04-09T17:40:51.627668Z",
            "details": {
              "enforcementVersion": "1",
              "rules": [
                {
                  "effect": "ALLOW",
                  "resources": [
                    "//cloudresourcemanager.googleapis.com/projects/project-2"
                  ]
                }
              ]
            },
            "displayName": "Troubleshooter v3 PAB Policy",
            "etag": "m64s4IgR80eDJDywuVA2DA==",
            "name": "organizations/123456789012/locations/global/principalAccessBoundaryPolicies/example-pab-policy",
            "uid": "puid_11875429267422576641",
            "updateTime": "2024-04-09T17:40:51.627668Z"
          },
          "policyAccessState": "PAB_ACCESS_STATE_NOT_ENFORCED",
          "policyVersion": {
            "enforcementState": "PAB_POLICY_ENFORCEMENT_STATE_NOT_ENFORCED",
            "version": 1
          },
          "relevance": "HEURISTIC_RELEVANCE_NORMAL"
        },
        "explainedPolicyBinding": {
          "conditionExplanation": {
            "evaluationStates": [
              {
                "end": 53,
                "value": true
              },
              {
                "end": 153,
                "start": 58,
                "value": false
              },
              {
                "end": 248,
                "start": 157,
                "value": false
              }
            ],
            "value": false
          },
          "policyBinding": {
            "condition": {
              "expression": "principal.type == 'iam.googleapis.com/ServiceAccount' && (principal.subject=='service-account-1@project-1.iam.gserviceaccount.com' || principal.subject=='service-account-2@project-1.iam.gserviceaccount.com')"
            },
            "createTime": "2024-04-09T17:51:13.504418Z",
            "displayName": "PAB Policy Binding on project-1 project",
            "etag": "W/\"hz9IKzHsIqvopqDRcVYDxQ==\"",
            "name": "projects/123456789012/locations/global/policyBindings/example-policy-binding",
            "policy": "organizations/123456789012/locations/global/principalAccessBoundaryPolicies/example-pab-policy",
            "policyKind": "PRINCIPAL_ACCESS_BOUNDARY",
            "policyUid": "puid_11875429267422576641",
            "target": {
              "principalSet": "//cloudresourcemanager.googleapis.com/projects/project-1"
            },
            "uid": "buid_1012746966204940289", 
            "updateTime": "2024-05-09T23:08:56.846355Z"
          },
          "policyBindingState": "POLICY_BINDING_STATE_NOT_ENFORCED",
          "relevance": "HEURISTIC_RELEVANCE_NORMAL"
        },
        "relevance": "HEURISTIC_RELEVANCE_NORMAL"
      }
    ],
    "principalAccessBoundaryAccessState": "PAB_ACCESS_STATE_NOT_ENFORCED",
    "relevance": "HEURISTIC_RELEVANCE_NORMAL"
  }
}

REST

Para saber por qué una principal tiene o no un permiso de IAM, usa las APIs del Solucionador de problemas de políticas iam.troubleshoot .

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

  • VERSION: Es la versión de la API que se usará para esta solicitud. Para solucionar problemas acceso basado solo en políticas de permiso y denegación, usa v3. Para solucionar problemas de acceso basados en las políticas de permiso, denegación y límite de acceso de las principales, usa v3beta.
  • EMAIL: La dirección de correo electrónico del principal 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.
  • PROJECT_ID: Es el ID del proyecto que deseas usar para realizar la solicitud. Los ID de proyecto son strings alfanuméricas, como my-project.

Método HTTP y URL:

POST https://policytroubleshooter.googleapis.com/VERSION/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:

Comprende los resultados del solucionador de problemas

Console

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

Detalles de la evaluación

La sección Detalles de la evaluación contiene un resumen del acceso que solución de problemas, incluida la principal, el recurso y el permiso especificados. Si estás solucionando problemas de múltiples pares de permisos de recursos, puedes usar Accede a la lista de evaluación para alternar entre ellas.

Detalles de la política

La sección Detalles de la política contiene detalles sobre cómo los permisos relevantes, rechazar y las políticas de límite de acceso a la principal afectan el acceso de la principal.

Las políticas relevantes de límite de acceso de las principales incluyen todas las políticas de límite de acceso de las principales que están vinculadas a un conjunto principal que la incluya.

Estas son algunas de las políticas de permiso y denegación relevantes:

  • La política de permiso del recurso
  • Las políticas de denegación del recurso, si las hay
  • Las políticas de permiso del proyecto superior, la carpeta y la organización del recurso, si las hay
  • Las políticas de denegación del proyecto superior, la carpeta y la organización del recurso, si las hay

Las políticas de permiso y denegación de proyectos, carpetas y organizaciones superiores son relevantes debido a la herencia de políticas. Cuando adjuntas una política de permiso o denegación a un proyecto, una organización o una carpeta, esa política también se aplica a todos los recursos dentro de ese proyecto, organización o carpeta.

Por ejemplo, si una política de denegación para una organización indica que una principal no puede usar un permiso específico, la principal no puede usar ese permiso en ningún recurso dentro de la organización. Esta regla se aplica incluso si las carpetas y proyectos dentro de esa organización tienen políticas de denegación más permisivas o políticas de permiso que otorgan permiso a la principal.

Del mismo modo, si una política de permisos para un proyecto le da a una principal un permiso específico, la principal tiene ese permiso para cualquier recurso dentro del proyecto, siempre que no se le deniegue ese permiso.

La sección Detalles de la política incluye las siguientes secciones:

Estado de acceso

En la sección Estado de acceso, se resumen los resultados de cada tipo de política. (políticas de límites de acceso principales, políticas de denegación y políticas de permisos), y establece la resultado general. El resultado indica si la principal puede usar el permiso para acceder al recurso, de acuerdo con las políticas relevantes.

Para que un usuario pueda usar el permiso para acceder al recurso, todas las políticas deben permitir el acceso. Para obtener más información, consulte Política evaluación.

Política de límite de acceso de las principales

En la sección Política de límite de acceso de las principales, puedes ver todas de las principales políticas de límite de acceso a las que está sujeta vinculaciones que vinculan estas políticas a la principal.

En el panel Políticas, se enumeran todas las políticas que están vinculadas a un conjunto de principales que incluye al principal. Junto a cada política hay un ícono que indica cómo política afecta el acceso de la principal.

Las políticas de límite de acceso de las principales pueden afectar el acceso de una principal en la de la siguiente manera:

  • La principal es apta para Acceder al recurso: La política de límite de acceso a la principal se aplica a la principal. y una de sus reglas contiene el recurso consultado.
  • La principal no es apta para acceder. recurso: La política de límite de acceso a la principal se aplica a la principal, pero el recurso consultado no está en las reglas de esa política.
  • No aplicada: Las políticas de límite de acceso a las principales no se aplican en las siguientes situaciones:

    • IAM no aplica el permiso especificado en el aplicación de la política de límite de acceso de las principales versión. Como resultado, la política de límite de acceso a la principal el acceso a los datos.
    • Debido a una condición en la vinculación de políticas, la vinculación o política de límite de acceso de las principales no se aplica principal.
    • Una política de límite de acceso de las principales no tiene reglas.

    Si no se aplica una política de límite de acceso a una principal, no puede afectar si la principal pueda acceder al recurso.

Para ver las reglas y vinculaciones asociadas con una política de límite de acceso de una principal, haz clic en el nombre de la política. El panel junto al panel Políticas muestra las en los detalles de la política.

Para ver las reglas en la política, haz clic en la pestaña Reglas de límite. Esta pestaña Se mostrará una tabla de las reglas relevantes de la política de límite de acceso de las principales.

Una regla de límite de acceso a la principal es relevante si la regla afecta el resultado general de la consulta del Solucionador de problemas de políticas. Como resultado, las reglas relevantes varían según los resultados del Solucionador de problemas de políticas. Por ejemplo: considera las siguientes situaciones:

  • El Solucionador de problemas de políticas indica que la principal puede acceder el recurso. Como resultado, las reglas relevantes son aquellas que establecen principal apta para acceder al recurso.
  • El Solucionador de problemas de políticas indica que la principal no puede acceder el recurso. Sin embargo, según las políticas de límite de acceso a las principales relevantes, la principal sea apta para acceder al recurso. Como resultado, no se relevante, porque las políticas de límite de acceso de las principales no son la razón por la que principal no puede acceder al recurso.
  • El Solucionador de problemas de políticas indica que la principal no puede acceder el recurso. Además, de acuerdo con el límite de acceso a la principal relevante políticas, la principal no es apta para acceder al recurso. Como resultado, Las reglas relevantes son aquellas que no hacen que la principal sea apta para acceder. el recurso.

Para ver todas las reglas de límite de acceso de las principales en una política, desmarca la casilla Mostrar solo los reglas y vinculaciones.

La columna Hallazgos en la tabla de reglas de límite indica si la regla de límite de acceso a la principal contiene el recurso consultado. Para ver más detalles sobre la regla, haz clic en Ver detalles de la regla.

Para ver las vinculaciones de políticas de la política, haz clic en la pestaña Vinculaciones. Esta pestaña muestra una tabla de las vinculaciones de políticas relevantes para las políticas política de límite de acceso de las principales.

Una vinculación de política es relevante si aplica de manera eficaz el límite de acceso a la principal. política a la principal consultada. Para que una vinculación de política aplique un política de límite de acceso a una principal, deben cumplirse las siguientes condiciones:

  • El conjunto de principales en la vinculación de la política debe incluir la principal consultada
  • Cualquier condición en la vinculación de la política debe evaluarse como true para la consulta principal.

Para ver todas las vinculaciones de políticas con conjuntos principales que incluyen los principal, sin importar si la principal consultada cumple la condición en la vinculación, desmarca la casilla de verificación Mostrar solo las reglas y vinculaciones relevantes.

La columna Hallazgos en la tabla de vinculaciones indica si la vinculación está se aplica para la principal consultada. Para ver más detalles sobre la política la vinculación, haz clic en Ver detalles de vinculación.

Política de denegación

En la sección Política de denegación, puedes ver todas las políticas de denegación relevantes. identificar reglas de denegación que nieguen el acceso a la principal y comprender por qué deniega o no el permiso de la principal.

El panel Recursos con políticas de denegación enumera todas las políticas de denegación relevantes. organizadas según los recursos a los que están conectados. Junto a cada política de denegación hay un la evaluación del acceso. Esta evaluación solo se aplica a esa política de denegación: no refleja ningún acceso de políticas heredadas. Si no tienes permiso para ver la política de denegación de un recurso, la lista de recursos no incluir ese recurso ni sus políticas de denegación.

Para ver las reglas de denegación relevantes en estas políticas, haz clic en una política de denegación. Para Ver todas las reglas de denegación en las políticas de denegación de un recurso, haz clic en un recurso. La solicitud de denegación aparecerán en el panel Reglas de denegación. Este panel contiene una tabla de todas reglas con la principal consultada o el permiso para el recurso o la política de denegación que hayas seleccionado.

En la columna Acceso, se indica si la regla de denegación niega a la principal el permiso. Para ver más detalles sobre la regla de denegación, haz clic en Ver regla de denegación en a la fila de la regla.

Política de permisos

En la sección Política de permisos, puedes navegar por todos los permisos políticas, identificarás las vinculaciones de roles que otorgan acceso a la principal comprender por qué una vinculación de rol otorga o no a la principal permiso.

En el panel Recursos, se enumera el recurso especificado y sus principales. Junto a cada recurso es una evaluación de acceso. Esta evaluación solo se aplica a las de la política de permisos del recurso, no refleja ningún acceso de los recursos políticas. Si no tienes permiso para ver el archivo de permisos, la lista de recursos no lo incluye.

Para ver las vinculaciones de roles relevantes en la política de permisos de un recurso y ver cómo otorga o no el permiso a la principal, haz clic en el recurso. Las vinculaciones de roles de la política de permisos aparecen en la sección Vinculaciones de roles del panel de control.

El panel Vinculaciones de roles contiene una tabla de vinculaciones de roles en la la política de permisos del recurso seleccionado. De forma predeterminada, la tabla solo contiene los roles vinculaciones que incluyen un rol con el permiso especificado. Si el botón principal no tiene acceso, la tabla también muestra las vinculaciones de roles con roles personalizados editables. Para ver todas las vinculaciones de roles, desmarca la casilla Mostrar solo Vinculaciones pertinentes.

En la columna Acceso, se indica si la vinculación del rol otorga a la principal la permiso. Para ver más detalles sobre la vinculación de rol, haz clic en Ver vinculación en la fila de vinculación de esa función.

gcloud

La respuesta contiene cuatro secciones principales: una descripción de la tupla de acceso en la solicitud, los resultados de la evaluación de la política de permisos, los resultados de como la evaluación de la política de denegación y el estado de acceso general.

  • accessTuple: Es una descripción de la tupla de acceso en la solicitud. incluido cualquier contexto de condición que proporcionaste. Esta sección también contiene un resumen de las etiquetas que se aplican al recurso.
  • allowPolicyExplanation: Es un resumen que indica si los permisos relevantes políticas otorgan el permiso a la principal, seguido de una lista de permisos de políticas y sus vinculaciones de roles.

    Para cada política de permiso, la respuesta enumera todas las vinculaciones de roles en la política y los evalúa según los siguientes criterios:

    • Indica si la vinculación de la función incluye el permiso.
    • Indica si la vinculación de la función incluye a la principal.
    • Si se cumplen las condiciones en la vinculación de función, si las hay.

    Luego, la respuesta imprime el texto JSON completo de la política de permiso.

  • denyPolicyExplanation: Es un resumen que indica si el rechazo relevante las políticas rechazan a la principal el permiso, seguida de una lista de recursos con políticas de denegación. Para cada recurso, la respuesta enumera todas las políticas de denegación. adjunta al recurso.

    Por cada política de denegación, la respuesta imprime los metadatos de la política, enumera de denegación en la política y, luego, evalúa cada regla según criterios:

    • Indica si la regla de denegación incluye el permiso.
    • Si el permiso aparece como una excepción en la regla de denegación.
    • Indica si la regla de denegación incluye la principal.
    • Si la principal aparece como una excepción en la regla de denegación.
    • Indica si se cumplen las condiciones de la regla de denegación, si las hay.
  • overallAccessState: Indica si la principal puede usar el elemento permiso especificado para acceder al recurso especificado según la configuración de políticas de permiso, de denegación y de límite de acceso de principales.

    Las políticas relevantes de límite de acceso de las principales incluyen todas las políticas de límite de acceso de las principales que están vinculadas a un conjunto principal que la incluya.

    Estas son algunas de las políticas de permiso y denegación relevantes:

    • La política de permiso del recurso
    • Las políticas de denegación del recurso, si las hay
    • Las políticas de permiso del proyecto superior, la carpeta y la organización del recurso, si las hay
    • Las políticas de denegación del proyecto superior, la carpeta y la organización del recurso, si las hay

    Las políticas de permiso y denegación de proyectos, carpetas y organizaciones superiores son relevantes debido a la herencia de políticas. Cuando adjuntas una política de permiso o denegación a un proyecto, una organización o una carpeta, esa política también se aplica a todos los recursos dentro de ese proyecto, organización o carpeta.

    Por ejemplo, si una política de denegación para una organización indica que una principal no puede usar un permiso específico, la principal no puede usar ese permiso en ningún recurso dentro de la organización. Esta regla se aplica incluso si las carpetas y proyectos dentro de esa organización tienen políticas de denegación más permisivas o políticas de permiso que otorgan permiso a la principal.

    Del mismo modo, si una política de permisos para un proyecto le da a una principal un permiso específico, la principal tiene ese permiso para cualquier recurso dentro del proyecto, siempre que no se le deniegue ese permiso.

    Para que un usuario pueda usar el permiso para acceder al recurso, tipos de políticas deben permitir el acceso. Para obtener más información, consulta Evaluación de políticas.

  • pabPolicyExplanation: Es un resumen que indica si Las políticas de límite de acceso de las principales permiten que la principal acceda al seguido de las vinculaciones de políticas de límite de acceso a la principal correspondientes y de las principales políticas de límite de acceso.

    Las políticas de límite de acceso de las principales pueden permitir el acceso, no permitir el acceso, aplicar o no aplicar las políticas. Las políticas de límite de acceso de las principales no se aplican las siguientes situaciones:

    • IAM no aplica el permiso especificado en el aplicación de la política de límite de acceso de las principales versión. Como resultado, la política de límite de acceso a la principal el acceso a los datos.
    • Debido a una condición en la vinculación de políticas, la vinculación o política de límite de acceso de las principales no se aplica principal.
    • Una política de límite de acceso de las principales no tiene reglas.

    Si no se aplica una política de límite de acceso a una principal, no puede afectar si la principal pueda acceder al recurso.

    La respuesta también enumera todas las vinculaciones de políticas que incluyen la principal. los detalles de la política de límite de acceso de las principales en cada una de esas políticas vinculaciones:

    • Para cada vinculación de política de límite de acceso a la principal, la respuesta muestra si la vinculación de la política se aplica a la principal, luego imprime el texto del la vinculación de la política. Se aplica una vinculación de política si la principal establecida en la vinculación incluye la principal consultada y, si la condición en la La vinculación de política se evalúa como true para la principal consultada. Si no se aplica la vinculación de política, la política no puede afectar si la principal pueda acceder al recurso.
    • Para cada política de límite de acceso de las principales, la respuesta imprime lo siguiente:

      • Si la política permite el acceso, no lo permite o no está permitido de manera forzosa.
      • La versión de aplicación de la política. Este número de versión determina si IAM aplica política de límite de acceso a la principal para el permiso consultado. Si el botón el permiso no se aplica de manera forzosa, la política no puede afectar el principal pueda acceder al recurso.
      • Las reglas en la política de límite de acceso de las principales y si cada regla permite el acceso. Para cada regla, la respuesta indica si recurso consultado se incluye en la regla.

        Un recurso se incluye en una regla si se cumple una de las siguientes condiciones:

        • El recurso aparece en la regla. Solo Resource Manager recursos (proyectos, carpetas y organizaciones) pueden ser directamente que se enumeran en las reglas de límite de acceso a las principales.
        • Uno de los elementos principales del recurso (es decir, un proyecto, una carpeta organización por encima del recurso en la sección resource jerarquía) aparece en la regla.

Muchos objetos en la respuesta también tienen un campo relevance. El valor de esta indica cuánto contribuye ese objeto al estado de acceso general. El campo relevance puede tener los siguientes valores:

  • HEURISTIC_RELEVANCE_HIGH: Indica que el objeto tiene un fuerte impacto en el resultado. En otras palabras, quitar el objeto probablemente cambiará la configuración el estado de acceso. Por ejemplo, una vinculación de rol que otorga a la principal el permiso especificado tendrían este valor de relevancia.

  • HEURISTIC_RELEVANCE_NORMAL: Indica que el objeto tiene un impacto limitado. en el resultado. En otras palabras, es poco probable que quitar el objeto cambie el estado de acceso general. Por ejemplo, una regla de denegación que no contiene el permiso o la principal tendría este valor de relevancia.

REST

La respuesta contiene cuatro secciones principales: el estado de acceso general, un descripción de la tupla de acceso en la solicitud, los resultados de la política de la política de denegación y los resultados de la evaluación.

  • overallAccessState: Indica si la principal puede usar el elemento permiso especificado para acceder al recurso especificado según la configuración de políticas de permiso, de denegación y de límite de acceso de principales.

    Las políticas relevantes de límite de acceso de las principales incluyen todas las políticas de límite de acceso de las principales que están vinculadas a un conjunto principal que la incluya.

    Estas son algunas de las políticas de permiso y denegación relevantes:

    • La política de permiso del recurso
    • Las políticas de denegación del recurso, si las hay
    • Las políticas de permiso del proyecto superior, la carpeta y la organización del recurso, si las hay
    • Las políticas de denegación del proyecto superior, la carpeta y la organización del recurso, si las hay

    Las políticas de permiso y denegación de proyectos, carpetas y organizaciones superiores son relevantes debido a la herencia de políticas. Cuando adjuntas una política de permiso o denegación a un proyecto, una organización o una carpeta, esa política también se aplica a todos los recursos dentro de ese proyecto, organización o carpeta.

    Por ejemplo, si una política de denegación para una organización indica que una principal no puede usar un permiso específico, la principal no puede usar ese permiso en ningún recurso dentro de la organización. Esta regla se aplica incluso si las carpetas y proyectos dentro de esa organización tienen políticas de denegación más permisivas o políticas de permiso que otorgan permiso a la principal.

    Del mismo modo, si una política de permisos para un proyecto le da a una principal un permiso específico, la principal tiene ese permiso para cualquier recurso dentro del proyecto, siempre que no se le deniegue ese permiso.

    Para que un usuario pueda usar el permiso para acceder al recurso, tipos de políticas deben permitir el acceso. Para obtener más información, consulta Evaluación de políticas.

  • accessTuple: Es una descripción de la tupla de acceso en la solicitud. incluido cualquier contexto de condición que proporcionaste. Esta sección también contiene un resumen de las etiquetas que se aplican al recurso.
  • allowPolicyExplanation: Es un resumen que indica si los permisos relevantes políticas otorgan el permiso a la principal, seguido de una lista de permisos de políticas y sus vinculaciones de roles.

    Para cada política de permiso, la respuesta enumera todas las vinculaciones de roles en la política y los evalúa según los siguientes criterios:

    • Indica si la vinculación de la función incluye el permiso.
    • Indica si la vinculación de la función incluye a la principal.
    • Si se cumplen las condiciones en la vinculación de función, si las hay.

    Luego, la respuesta imprime el texto JSON completo de la política de permiso.

  • denyPolicyExplanation: Es un resumen que indica si el rechazo relevante las políticas rechazan a la principal el permiso, seguida de una lista de recursos con políticas de denegación. Para cada recurso, la respuesta enumera todas las políticas de denegación. adjunta al recurso.

    Por cada política de denegación, la respuesta imprime los metadatos de la política, enumera de denegación en la política y, luego, evalúa cada regla según criterios:

    • Indica si la regla de denegación incluye el permiso.
    • Si el permiso aparece como una excepción en la regla de denegación.
    • Indica si la regla de denegación incluye la principal.
    • Si la principal aparece como una excepción en la regla de denegación.
    • Indica si se cumplen las condiciones de la regla de denegación, si las hay.
  • pabPolicyExplanation: Es un resumen que indica si Las políticas de límite de acceso de las principales permiten que la principal acceda al seguido de las vinculaciones de políticas de límite de acceso a la principal correspondientes y de las principales políticas de límite de acceso.

    Las políticas de límite de acceso de las principales pueden permitir el acceso, no permitir el acceso, aplicar o no aplicar las políticas. Las políticas de límite de acceso de las principales no se aplican las siguientes situaciones:

    • IAM no aplica el permiso especificado en el aplicación de la política de límite de acceso de las principales versión. Como resultado, la política de límite de acceso a la principal el acceso a los datos.
    • Debido a una condición en la vinculación de políticas, la vinculación o política de límite de acceso de las principales no se aplica principal.
    • Una política de límite de acceso de las principales no tiene reglas.

    Si no se aplica una política de límite de acceso a una principal, no puede afectar si la principal pueda acceder al recurso.

    La respuesta también enumera todas las vinculaciones de políticas que incluyen la principal. los detalles de la política de límite de acceso de las principales en cada una de esas políticas vinculaciones:

    • Para cada vinculación de política de límite de acceso a la principal, la respuesta muestra si la vinculación de la política se aplica a la principal, luego imprime el texto del la vinculación de la política. Se aplica una vinculación de política si la principal establecida en la vinculación incluye la principal consultada y, si la condición en la La vinculación de política se evalúa como true para la principal consultada. Si no se aplica la vinculación de política, la política no puede afectar si la principal pueda acceder al recurso.
    • Para cada política de límite de acceso de las principales, la respuesta imprime lo siguiente:

      • Si la política permite el acceso, no lo permite o no está permitido de manera forzosa.
      • La versión de aplicación de la política. Este número de versión determina si IAM aplica política de límite de acceso a la principal para el permiso consultado. Si el botón el permiso no se aplica de manera forzosa, la política no puede afectar el principal pueda acceder al recurso.
      • Las reglas en la política de límite de acceso de las principales y si cada regla permite el acceso. Para cada regla, la respuesta indica si recurso consultado se incluye en la regla.

        Un recurso se incluye en una regla si se cumple una de las siguientes condiciones:

        • El recurso aparece en la regla. Solo Resource Manager recursos (proyectos, carpetas y organizaciones) pueden ser directamente que se enumeran en las reglas de límite de acceso a las principales.
        • Uno de los elementos principales del recurso (es decir, un proyecto, una carpeta organización por encima del recurso en la sección resource jerarquía) aparece en la regla.

Muchos objetos en la respuesta también tienen un campo relevance. El valor de esta indica cuánto contribuye ese objeto al estado de acceso general. El campo relevance puede tener los siguientes valores:

  • HEURISTIC_RELEVANCE_HIGH: Indica que el objeto tiene un fuerte impacto en el resultado. En otras palabras, quitar el objeto probablemente cambiará la configuración el estado de acceso. Por ejemplo, una vinculación de rol que otorga a la principal el permiso especificado tendrían este valor de relevancia.

  • HEURISTIC_RELEVANCE_NORMAL: Indica que el objeto tiene un impacto limitado. en el resultado. En otras palabras, es poco probable que quitar el objeto cambie el estado de acceso general. Por ejemplo, una regla de denegación que no contiene el permiso o la principal tendría este valor de relevancia.

Soluciona problemas de vinculaciones de funciones condicionales

El Solucionador de problemas de políticas soluciona problemas automáticamente Vinculaciones de roles y reglas de denegación basadas en etiquetas. También automáticamente soluciona problemas de vinculación de políticas de límite de acceso a las principales con condiciones basadas en las principales.

Para solucionar problemas de otros tipos de vinculaciones de roles condicionales, o reglas de denegación condicionales, el Solucionador de problemas de políticas necesita el contexto de la solicitud. Por ejemplo, para solucionar problemas relacionados con de fecha/hora, el Solucionador de problemas de políticas necesita la hora para cada solicitud.

En gcloud CLI y la API de REST, proporcionas este contexto adicional manualmente.

En la consola de Google Cloud, puedes proporcionar este contexto adicional solucionar problemas directamente desde cualquier registro de auditoría de actividad del administrador Registro de auditoría de acceso a los datos. Cada entrada de registro de auditoría corresponde solicitud a una API de Google Cloud o una acción que Google Cloud realice en tu nombre. Cuando solucionas problemas en un registro de auditoría, El Solucionador de problemas de políticas obtiene información adicional automáticamente información detallada sobre la solicitud, como su fecha y hora, lo que permite El Solucionador de problemas de políticas analiza las vinculaciones de roles condicionales y las reglas de denegación.

Console

Para solucionar problemas de vinculaciones de roles condicionales y reglas de denegación, haz lo siguiente:

  1. En la consola de Google Cloud, 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 problemas de acceso y, luego, te muestra los resultados. El contexto adicional aparece en los detalles de la evaluación en Contexto de la condición. Para ver en los detalles del contexto, haz clic en Ver el contexto de la condición. Para obtener más información sobre el en la página de resultados del Solucionador de problemas de políticas, consulta Explicación Resultados del solucionador de problemas en esta página.

  6. Opcional: Para solucionar problemas con otra solicitud que involucra un rol condicional de acceso y reglas de denegación, vuelve a la página Explorador de registros y repite el pasos anteriores.

gcloud

Para solucionar problemas relacionados con vinculaciones de roles condicionales y reglas de denegación, usa el gcloud policy-troubleshoot iam kubectl.

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

  • EMAIL: La dirección de correo electrónico de la principal cuyo permisos en los que quieres solucionar problemas.
  • RESOURCE: Es el recurso en el que se encuentra el permiso. otorgada.
  • PERMISSION: El permiso que deseas y solucionar problemas.
  • DESTINATION_IP: Opcional La IP de destino de la solicitud dirección que se usará cuando se verifiquen las vinculaciones de roles condicionales. Por ejemplo, 198.1.1.1.
  • DESTINATION_PORT: Opcional El destino de la solicitud puerto que se usará cuando se verifiquen las vinculaciones de roles condicionales. Por ejemplo, “8080”.
  • REQUEST_TIME: Opcional La marca de tiempo de la solicitud que se usará cuando verifiques las vinculaciones de roles condicionales. Usa una marca de tiempo en RFC 3339, por ejemplo, 2099-02-01T00:00:00Z.
  • RESOURCE_NAME: Opcional El valor del nombre del recurso en usar cuando verifiques las vinculaciones de roles condicionales. Para obtener una lista de recursos aceptados de nombres de recursos, consulta Nombre de recurso .
  • RESOURCE_SERVICE: Opcional El servicio de recursos de salida que se debe usar cuando se verifican las vinculaciones de roles condicionales. Para obtener una lista de nombres de servicios, consulta Recursos del servicio.
  • RESOURCE_TYPE: Opcional Para obtener una lista de tipos de recursos, consulta Tipo de recurso de salida.

Ejecuta el gcloud policy-troubleshoot iam :

Linux, macOS o Cloud Shell

gcloud policy-intelligence troubleshoot-policy iam RESOURCE --principal-email=EMAIL \
    --permission=PERMISSION --destination-ip=DESTINATION_IP \
    --destination-port=DESTINATION_PORT --request-time=REQUEST_TIME \
    --resource-name=RESOURCE_NAME --resource-service=RESOURCE_SERVICE \
    --resource-type=RESOURCE_TYPE

Windows (PowerShell)

gcloud policy-intelligence troubleshoot-policy iam RESOURCE --principal-email=EMAIL `
    --permission=PERMISSION --destination-ip=DESTINATION_IP `
    --destination-port=DESTINATION_PORT --request-time=REQUEST_TIME `
    --resource-name=RESOURCE_NAME --resource-service=RESOURCE_SERVICE `
    --resource-type=RESOURCE_TYPE

Windows (cmd.exe)

gcloud policy-intelligence troubleshoot-policy iam RESOURCE --principal-email=EMAIL ^
    --permission=PERMISSION --destination-ip=DESTINATION_IP ^
    --destination-port=DESTINATION_PORT --request-time=REQUEST_TIME ^
    --resource-name=RESOURCE_NAME --resource-service=RESOURCE_SERVICE ^
    --resource-type=RESOURCE_TYPE

La respuesta contiene una explicación del acceso de la principal. Para cada función de vinculación y denegación con una condición, la respuesta incluye un conditionExplanation que describe si la condición evalúa como verdadero o falso según el contexto de la condición que proporcionaste.

Por ejemplo, la siguiente es una evaluación de una vinculación de rol con una condición que especifica la tipo de recurso y servicio de recurso:

Respuesta

...
{
  "allowAccessState": "ALLOW_ACCESS_STATE_GRANTED",
  "combinedMembership": {
    "membership": "MEMBERSHIP_MATCHED",
    "relevance": "HEURISTIC_RELEVANCE_HIGH"
  },
  "condition": {
    "expression": " resource.type \u003d\u003d \"compute.googleapis.com/Instance\" \u0026\u0026 resource.service \u003d\u003d \"compute.googleapis.com\"",
    "title": "Compute instances only",
    "description": "Condition that limits permissions to only Compute instances"
  },
  "conditionExplanation": {
    "evaluationStates": [{
      "end": 51,
      "start": 1,
      "value": true
    }, {
      "end": 99,
      "start": 55,
      "value": true
    }],
    "value": true,
  },
  "memberships": {
    "user:my-user@example.com": {
      "membership": "MEMBERSHIP_MATCHED",
      "relevance": "HEURISTIC_RELEVANCE_HIGH"
    }
  },
  "relevance": "HEURISTIC_RELEVANCE_HIGH",
  "role": "roles/compute.viewer",
  "rolePermission": "ROLE_PERMISSION_INCLUDED",
  "rolePermissionRelevance": "HEURISTIC_RELEVANCE_HIGH"
}
...

REST

Para solucionar problemas relacionados con vinculaciones de roles condicionales y reglas de denegación, usa las APIs del Solucionador de problemas de políticas iam.troubleshoot .

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

  • EMAIL: La dirección de correo electrónico de la principal cuyo permisos en los que quieres solucionar problemas.
  • RESOURCE: Es el recurso en el que se encuentra el permiso. otorgada.
  • PERMISSION: El permiso que deseas y solucionar problemas.
  • DESTINATION_IP: Opcional La IP de destino de la solicitud dirección que se usará cuando se verifiquen las vinculaciones de roles condicionales. Por ejemplo, 198.1.1.1.
  • DESTINATION_PORT: Opcional El destino de la solicitud puerto que se usará cuando se verifiquen las vinculaciones de roles condicionales. Por ejemplo, “8080”.
  • REQUEST_TIME: Opcional La marca de tiempo de la solicitud que se usará cuando verifiques las vinculaciones de roles condicionales. Usa una marca de tiempo en RFC 3339, por ejemplo, 2099-02-01T00:00:00Z.
  • RESOURCE_NAME: Opcional El valor del nombre del recurso en usar cuando verifiques las vinculaciones de roles condicionales. Para obtener una lista de recursos aceptados de nombres de recursos, consulta Nombre de recurso .
  • RESOURCE_SERVICE: Opcional El servicio de recursos de salida que se debe usar cuando se verifican las vinculaciones de roles condicionales. Para obtener una lista de nombres de servicios, consulta Recursos del servicio.
  • RESOURCE_TYPE: Opcional Para obtener una lista de tipos de recursos, consulta Tipo de recurso de salida.

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

{
  "accessTuple": {
    "principal": "EMAIL",
    "fullResourceName": "RESOURCE",
    "permission": "PERMISSION",
    "conditionContext": {
      "destination": {
        "ip": DESTINATION_IP,
        "port": DESTINATION_PORT
      },
      "request": {
        "receiveTime": REQUEST_TIME
      },
      "resource": {
        "name": RESOURCE_NAME,
        "service": RESOURCE_SERVICE,
        "type": RESOURCE_TYPE
      }
    }
  }
}

Para enviar tu solicitud, expande una de estas opciones:

La respuesta contiene una explicación del acceso de la principal. Para cada función de vinculación y denegación con una condición, la respuesta incluye un conditionExplanation que describe si la condición evalúa como verdadero o falso según el contexto de la condición que proporcionaste.

Por ejemplo, la siguiente es una evaluación de una vinculación de rol con una condición que especifica la tipo de recurso y servicio de recurso:

...
{
  "allowAccessState": "ALLOW_ACCESS_STATE_GRANTED",
  "role": "roles/compute.viewer",
  "rolePermission": "ROLE_PERMISSION_INCLUDED",
  "rolePermissionRelevance": "HEURISTIC_RELEVANCE_HIGH",
  "combinedMembership": {
    "membership": "MEMBERSHIP_MATCHED",
    "relevance": "HEURISTIC_RELEVANCE_HIGH"
  },
  "memberships": {
    "user:my-user@example.com": {
      "membership": "MEMBERSHIP_MATCHED",
      "relevance": "HEURISTIC_RELEVANCE_HIGH"
    }
  },
  "relevance": "HEURISTIC_RELEVANCE_HIGH",
  "condition": {
    "expression": " resource.type \u003d\u003d \"compute.googleapis.com/Instance\" \u0026\u0026 resource.service \u003d\u003d \"compute.googleapis.com\"",
    "title": "Compute instances only",
    "description": "Condition that limits permissions to only Compute instances"
  },
  "conditionExplanation": {
    "value": true,
    "evaluationStates": [{
      "start": 1,
      "end": 51,
      "value": true
    }, {
      "start": 55,
      "end": 99,
      "value": true
    }]
  }
}
...

¿Qué sigue?