Solucionador de problemas de políticas te ayuda a saber si una entidad de seguridad puede acceder a un recurso. Dado un principal, un recurso y un permiso, Solucionador de problemas de políticas examina las políticas de permiso, las políticas de denegación y las políticas de límites de acceso de principales (PAB) que afectan al acceso del principal. A continuación, te indica si, según esas políticas, la entidad principal puede usar el permiso especificado para acceder al recurso. También se indican las políticas pertinentes y se explica cómo afectan al acceso de la cuenta principal.
Puedes acceder a la herramienta para solucionar problemas de políticas mediante laGoogle Cloud consola, la CLI de Google Cloud o la API REST. Para las consultas básicas, suele ser más rápido usar la consola Google Cloud . Para situaciones más complejas, considera la CLI de gcloud o la API REST.
Antes de empezar
-
Enable the Policy Troubleshooter API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles.
Permisos obligatorios
Para solucionar por completo los problemas de acceso de tus principales, necesitas los siguientes permisos.
Permisos para solucionar problemas de acceso de principales concretos
Solucionador de problemas de políticas analiza el acceso de un principal a un recurso en función de las políticas de permiso, las políticas de denegación, las políticas de límites de acceso de principales y los roles que tienes permiso para ver. Si no tienes permiso para ver una política que se aplica a un recurso o un rol personalizado, es posible que no puedas saber si una entidad principal tiene acceso.
Permisos para solucionar problemas de políticas de permitir y denegar
Para solucionar problemas de las políticas de permitir y denegar, necesitas permisos en la organización que contenga el recurso para el que quieres solucionar problemas. Estos permisos te permiten ver las políticas de permitir y denegar que controlan el acceso al recurso.
Para obtener los permisos que necesitas para solucionar problemas de acceso de una principal, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos en la organización que contiene el recurso cuyo acceso quieres solucionar:
-
Revisor de seguridad (
roles/iam.securityReviewer
) -
Solucionar problemas con las políticas de denegación:
Revisor de denegaciones (
roles/iam.denyReviewer
) -
Usa la CLI de Google Cloud para solucionar problemas:
Consumidor de uso de servicios (
roles/serviceusage.serviceUsageConsumer
)
Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.
También puedes conseguir los permisos necesarios a través de roles personalizados u otros roles predefinidos.
Si no tienes permiso para ver las políticas de permitir y denegar de un recurso, los resultados de acceso de esas políticas de permitir y denegar serán Unknown
.
Permisos para solucionar problemas de políticas de límites de acceso de principales
Para solucionar problemas de las políticas de límites de acceso de principales, necesitas permisos en la organización cuyo conjunto de principales incluya al principal. La forma de identificar esta organización depende del tipo de principal:
- Cuentas de Google y grupos de Google: la organización asociada al dominio de Google Workspace que incluye la entidad principal.
- Identidades federadas (identidades de grupos de identidades de Workforce o de grupos de identidades de carga de trabajo): la organización que contiene el grupo de identidades que incluye la principal.
- Cuentas de servicio: la organización que contiene el proyecto en el que se creó la cuenta de servicio
Estos permisos te permiten ver las políticas de límites de acceso de principales que controlan a qué puede acceder el principal.
Para obtener los permisos que necesitas para solucionar problemas de acceso de una entidad de seguridad, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos en la organización correspondiente:
-
Visor de la política Límites de Acceso de Principales (
roles/iam.principalAccessBoundaryViewer
) -
Solucionar problemas con las políticas de límite de acceso de principales vinculadas al conjunto de principales de un proyecto, una carpeta o una organización:
Administrador de la organización (
roles/resourcemanager.organizationAdmin
) -
Solucionar problemas de las políticas de límite de acceso de principales vinculadas a dominios de Google Workspace:
Administrador de IAM de grupo de Workspace (
roles/iam.workspacePoolAdmin
) -
Soluciona problemas de las políticas de límite de acceso de principales vinculadas a grupos de identidades de Workforce:
Administrador de grupos de Workforce de IAM (
roles/iam.workforcePoolAdmin
) -
Soluciona problemas de las políticas de límite de acceso de principales vinculadas a grupos de Workload Identity:
Administrador de grupos de Workload Identity de IAM (
roles/iam.workloadIdentityPoolAdmin
)
Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.
También puedes conseguir los permisos necesarios a través de roles personalizados u otros roles predefinidos.
Si no tienes permiso para ver las políticas de límites de acceso de principales que se aplican a un principal, los resultados de acceso de las políticas de límites de acceso de principales serán Unknown
.
Permisos para solucionar problemas de acceso de los miembros de un grupo
Si tus políticas de permitir y denegar incluyen grupos, necesitas el permiso de la API de administrador de Google Workspace groups.read
para solucionar problemas de acceso de miembros concretos de un grupo. Los superadministradores y los administradores de grupos tienen este permiso automáticamente. Para dar este permiso a un usuario que no sea superadministrador ni administrador de grupos, crea un rol de administrador de Google Workspace personalizado que contenga el privilegio groups.read
(situado en Privilegios de la API Admin) y asigna ese rol al usuario.
Si no tienes estos permisos, las vinculaciones de roles y las reglas de denegación que contengan grupos o dominios tendrán el resultado de acceso Desconocido, a menos que la vinculación de roles o la regla de denegación también incluyan de forma explícita la entidad.
Permisos para solucionar problemas de acceso de los miembros del dominio
Si tus políticas de permitir y denegar incluyen una cuenta de Google Workspace o un dominio de Cloud Identity, debes ser administrador del dominio para solucionar los problemas de acceso de los miembros del dominio.
Si no tienes estos permisos, las vinculaciones de roles y las reglas de denegación que contengan grupos o dominios tendrán el resultado de acceso Desconocido, a menos que la vinculación de roles o la regla de denegación también incluyan de forma explícita la entidad.
Solucionar problemas de acceso
Para solucionar problemas de acceso, necesitas la siguiente información:
- Principal: la dirección de correo que se va a comprobar. La dirección de correo debe hacer referencia a una cuenta de usuario o de servicio. No se admiten otros tipos de principales, como grupos, dominios, identidades de Workforce e identidades de carga de trabajo.
Recurso: el nombre completo del recurso al que quieres solucionar problemas de acceso. Por ejemplo, para solucionar problemas de acceso al proyecto
my-project
, introduce//cloudresourcemanager.googleapis.com/projects/my-project
. Para ver otros tipos de recursos, consulta los ejemplos de nombres de recursos completos.Permiso: el permiso que se va a comprobar. Si usas la Google Cloud consola, se mostrará una lista de sugerencias a medida que escribas.
Para solucionar un problema con un permiso, este debe ser aplicable al recurso de la solicitud. Es decir, debe ser posible usar ese permiso para acceder al recurso de alguna forma. Si el permiso no se puede aplicar al recurso, la solicitud no se completará. Por ejemplo, si intentas solucionar un problema con el permiso
compute.instances.get
de un clúster de Google Kubernetes Engine, la solicitud fallará porque el permisocompute.instance.get
no se puede usar para acceder a clústeres de Google Kubernetes Engine.Para ver una lista completa de los permisos, consulta la referencia de permisos.
Consola
Para solucionar problemas de acceso, sigue estos pasos:
En la Google Cloud consola, ve a la página Solucionador de problemas de políticas.
Introduce el correo del director cuyo acceso quieras comprobar.
Introduce el nombre completo del recurso que quieras comprobar.
Si no sabes el nombre completo del recurso, haz una de estas acciones:
- Si estás solucionando problemas de acceso a un proyecto, una carpeta o una organización, empieza a escribir para ver las opciones de autocompletar.
Si estás solucionando problemas de acceso a otro tipo de recurso, haz clic en Buscar para abrir el cuadro de diálogo de búsqueda de recursos y, a continuación, busca el recurso:
- En el cuadro Seleccionar ámbito, elige un proyecto, una carpeta o una organización en los que buscar.
- En el cuadro Tipo de recurso, selecciona los tipos de recursos que quieras buscar.
- En el cuadro Buscar recursos, introduce una parte del nombre del recurso.
- En la sección de resultados, selecciona el recurso que quieras consultar.
- Haz clic en Seleccionar para elegir el recurso y cerrar el cuadro de diálogo.
Introduce el permiso que quieres comprobar.
Si no sabes el nombre completo del permiso, empieza a escribir para ver las opciones de autocompletado.
Opcional: Para comprobar varios recursos y permisos, selecciona Añadir otro par y repite el paso anterior.
Haz clic en Comprobar acceso.
gcloud
Para saber por qué una principal tiene o no un permiso de IAM, usa el comando
gcloud beta policy-troubleshoot iam
.
Antes de usar los datos de los comandos que se indican a continuación, haz los siguientes cambios:
-
VERSION
: opcional. Versión del comando que se va a usar. Para solucionar problemas de acceso basados únicamente en políticas de permiso y denegación, no especifiques una versión. Para solucionar problemas de acceso basados en políticas de permiso, denegación y límites de acceso de principales, usa la versiónbeta
. EMAIL
: la dirección de correo del principal cuyos permisos quieres solucionar.RESOURCE
: el recurso en el que se concede el permiso.PERMISSION
: el permiso que quieres solucionar.
Ejecuta el comando 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 siguiente:
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 entidad tiene o no un permiso de gestión de identidades y accesos, usa el método iam.troubleshoot
de la API Policy Troubleshooter.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
-
VERSION
: la versión de la API que se va a usar en esta solicitud. Para solucionar problemas de acceso basados únicamente en políticas de permiso y denegación, usav3
. Para solucionar problemas de acceso basados en políticas de límites de acceso de principales, de permitir y de denegar, usav3beta
. EMAIL
: la dirección de correo del principal cuyos permisos quieres solucionar.RESOURCE
: el recurso en el que se concede el permiso.PERMISSION
: el permiso que quieres solucionar.PROJECT_ID
: el ID del proyecto que quieres usar para hacer la solicitud. Los IDs de proyecto son cadenas alfanuméricas, comomy-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, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
Interpretar los resultados de la herramienta para solucionar problemas
Consola
La página de resultados contiene la siguiente información:
- Detalles de la evaluación
- Detalles de la política, que contiene lo siguiente:
Detalles de la evaluación
La sección Detalles de la evaluación contiene un resumen del acceso que estás solucionando, incluidos el principal, el recurso y el permiso especificados. Si estás solucionando problemas con varios pares de permisos de recursos, puedes usar la lista Evaluación de acceso para cambiar de uno a otro.
Detalles de la política
La sección Detalles de la política contiene información sobre cómo afectan las políticas de permitir, denegar y límite de acceso principal al acceso del principal.
Las políticas de límites de acceso de principales relevantes incluyen todas las políticas de límites de acceso de principales que están vinculadas a un conjunto de principales que incluye al principal.
Entre las políticas de permitir y denegar relevantes se incluyen las siguientes:
- La política de permisos del recurso
- Las políticas de denegación del recurso, si las hay
- Las políticas de permiso del proyecto, la carpeta y la organización principales del recurso, si los tiene
- Las políticas de denegación del proyecto, la carpeta y la organización principales del recurso, si los hay
Las políticas de permitir y denegar de los proyectos, las carpetas y las organizaciones principales son relevantes debido a la herencia de políticas. Cuando adjuntas una política de permiso o denegación a un proyecto, una carpeta o una organización, esa política también se aplica a todos los recursos de ese proyecto, carpeta u organización.
Por ejemplo, si una política de denegación de una organización indica que una entidad de seguridad no puede usar un permiso específico, la entidad de seguridad no podrá usar ese permiso para ningún recurso de la organización. Esta regla se aplica aunque las carpetas y los proyectos de esa organización tengan políticas de denegación más permisivas o políticas de permiso que concedan el permiso a la principal.
Del mismo modo, si una política de permiso de un proyecto otorga a una entidad principal un permiso específico, la entidad principal tendrá ese permiso para cualquier recurso del proyecto, siempre que no se le deniegue.
La sección Detalles de la política contiene las siguientes secciones:
- Estado de acceso
- Política de límites de acceso de principales
- Política de denegación
- Política de permitir
Estado de acceso
En la sección Estado del acceso se resumen los resultados de cada tipo de política (políticas de límite de acceso de principales, políticas de denegación y políticas de permiso) y se indica el resultado general. El resultado indica si la entidad principal puede usar el permiso para acceder al recurso, de acuerdo con las políticas pertinentes.
Para que un usuario pueda usar el permiso de acceso al recurso, todos los tipos de política deben permitir el acceso. Para obtener más información, consulta la sección Evaluación de políticas.
Política de límites de acceso de principales
En la sección Política de límites de acceso de principales, puedes ver todas las políticas de límites de acceso de principales a las que está sujeta la entidad principal y los enlaces de políticas que vinculan estas políticas a la entidad principal.
En el panel Políticas se muestran todas las políticas vinculadas a un conjunto de principales que incluye el principal. Junto a cada política, hay un icono que indica cómo afecta esa política al acceso de la entidad principal.
Las políticas de límites de acceso de principales pueden afectar al acceso de un principal de las siguientes formas:
- El principal puede acceder al recurso: la política de límites de acceso de principales se aplica al principal y una de sus reglas contiene el recurso consultado.
- El principal no puede acceder al recurso: la política de límites de acceso de principales se aplica al principal, pero el recurso consultado no está en las reglas de esa política.
No se aplica: Las políticas de límites de acceso de principales no se aplican en las siguientes situaciones:
- Gestión de identidades y accesos no aplica el permiso especificado en la versión de aplicación de la política de límite de acceso de la entidad principal. Por lo tanto, la política de límites de acceso de principales no puede bloquear el acceso.
- Debido a una condición en el enlace de la política, la política o el enlace de límites de acceso de principales no se aplican al principal.
- Una política de límites de acceso de principales no tiene reglas.
Si no se aplica una política de límites de acceso de principales, no puede afectar a si el principal puede acceder al recurso.
Para ver las reglas y las vinculaciones asociadas a una política de límite de acceso de un principal, haz clic en el nombre de la política. En el panel situado junto al panel Políticas se muestran los detalles de la política.
Para ver las reglas de la política, haga clic en la pestaña Reglas de límite. En esta pestaña se muestra una tabla con las reglas de la política de límites de acceso de principales pertinentes.
Una regla de límite de acceso de principales es pertinente si influye en el resultado general de la consulta del solucionador de problemas de políticas. Por lo tanto, las reglas correspondientes varían en función de los resultados de Solucionador de problemas de políticas. Por ejemplo, ten en cuenta las siguientes situaciones:
- Solucionador de problemas de políticas indica que la entidad principal puede acceder al recurso. Por lo tanto, las reglas pertinentes son las que permiten que la entidad principal acceda al recurso.
- Solucionador de problemas de políticas indica que la entidad principal no puede acceder al recurso. Sin embargo, de acuerdo con las políticas de límites de acceso de principales pertinentes, el principal puede acceder al recurso. Por lo tanto, no hay reglas relevantes, ya que las políticas de límite de acceso de la principal no son el motivo por el que la principal no puede acceder al recurso.
- Solucionador de problemas de políticas indica que la entidad principal no puede acceder al recurso. Además, de acuerdo con las políticas de límites de acceso de principales pertinentes, el principal no puede acceder al recurso. Por lo tanto, las reglas relevantes son las que no permiten que la entidad principal acceda al recurso.
Para ver todas las reglas de límites de acceso de principales de una política, desmarca la casilla Mostrar solo reglas y enlaces relevantes.
La columna Resultados de la tabla de reglas de límite indica si la regla de límite de acceso del 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 la política, haga clic en la pestaña Vinculaciones. En esta pestaña se muestra una tabla con las vinculaciones de políticas pertinentes de la política de límite de acceso de la entidad de seguridad seleccionada.
Una vinculación de política es relevante si aplica de forma efectiva la política de límites de acceso de principales al principal consultado. Para que una vinculación de política aplique una política de límites de acceso de principales a un principal, se deben cumplir los siguientes requisitos:
- El conjunto de principales definido en la vinculación de políticas debe incluir el principal consultado.
- Todas las condiciones de la vinculación de la política deben dar como resultado
true
para la entidad de seguridad consultada.
Para ver todas las vinculaciones de políticas con conjuntos de principales que incluyan el principal consultado, independientemente de si el principal consultado cumple la condición de la vinculación, desmarca la casilla Mostrar solo las reglas y vinculaciones relevantes.
La columna Hallazgos de la tabla de enlaces indica si el enlace se aplica al principal consultado. Para ver más detalles sobre la vinculación de la política, haz clic en Ver detalles de la vinculación.
Política de denegación
En la sección Política de denegación, puede ver todas las políticas de denegación pertinentes, identificar las reglas de denegación que deniegan el acceso a la entidad de seguridad y saber por qué una regla de denegación deniega o no deniega el permiso a la entidad de seguridad.
En el panel Recursos con políticas de denegación se muestran todas las políticas de denegación pertinentes, organizadas por los recursos a los que están asociadas. Junto a cada política de denegación, se muestra una evaluación de acceso. Esta evaluación solo se aplica a esa política de denegación. No refleja ningún acceso de las 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 correspondientes en estas políticas de denegación, haz clic en una de ellas. Para ver todas las reglas de denegación de las políticas de denegación de un recurso, haz clic en un recurso. Las reglas de denegación se muestran en el panel Reglas de denegación. Este panel contiene una tabla con todas las reglas de denegación del principal o permiso consultado para el recurso o la política de denegación que hayas seleccionado.
La columna Acceso indica si la regla de denegación deniega el permiso a la entidad principal. Para ver más detalles sobre la regla de denegación, haz clic en Ver regla de denegación en la fila de esa regla.
Política de permitir
En la sección Política de permiso, puedes desplazarte por todas las políticas de permiso relevantes, identificar las vinculaciones de roles que conceden acceso a la entidad principal y comprender por qué una vinculación de roles otorga o no el permiso a la entidad principal.
En el panel Recursos se muestra el recurso especificado y sus elementos superiores. Junto a cada recurso, se muestra una evaluación del acceso. Esta evaluación solo se aplica a la política de permiso de ese recurso, no refleja ningún acceso de las políticas heredadas. Si no tienes permiso para ver la política de permisos de un recurso, este no se incluirá en la lista de recursos.
Para ver las vinculaciones de roles relevantes en la política de permiso de un recurso y comprobar si otorgan o no el permiso a la entidad principal, haz clic en el recurso. Las vinculaciones de roles de la política de permiso aparecen en el panel Vinculaciones de roles.
El panel Asignaciones de roles contiene una tabla de asignaciones de roles en la política de permiso del recurso seleccionado. De forma predeterminada, la tabla solo contiene enlaces de rol que incluyen un rol con el permiso especificado. Si el principal no tiene acceso, la tabla también muestra las vinculaciones de roles con roles personalizados editables. Para ver todos los enlaces de roles, desmarca la casilla Mostrar solo los enlaces relevantes.
La columna Acceso indica si la vinculación de roles otorga el permiso a la entidad principal. Para ver más detalles sobre la vinculación de roles, haz clic en Ver detalles de la vinculación en la fila de esa vinculación de roles.
gcloud
La respuesta contiene cuatro secciones principales: una descripción de la tupla de acceso de la solicitud, los resultados de la evaluación de la política de permiso, los resultados de la evaluación de la política de denegación y el estado de acceso general.
-
accessTuple
: descripción de la tupla de acceso de la solicitud, incluido el contexto de condición que hayas proporcionado. Esta sección también contiene un resumen de las etiquetas que se aplican al recurso. -
allowPolicyExplanation
: un resumen de si las políticas de permiso pertinentes conceden el permiso a la entidad de seguridad, seguido de una lista de políticas de permiso y sus vinculaciones de roles.En cada política de permiso, la respuesta muestra todos los enlaces de rol de la política y los evalúa según los siguientes criterios:
- Indica si la vinculación de rol incluye el permiso.
- Indica si la vinculación de roles incluye la cuenta principal.
- Si se cumplen las condiciones de la vinculación de roles (si las hay).
A continuación, la respuesta muestra el texto JSON completo de la política de permiso.
-
denyPolicyExplanation
: un resumen de si las políticas de denegación pertinentes deniegan el permiso a la entidad principal, seguido de una lista de recursos con políticas de denegación. En el caso de cada recurso, la respuesta muestra todas las políticas de denegación adjuntas al recurso.En cada política de denegación, la respuesta imprime los metadatos de la política, enumera las reglas de denegación de la política y, a continuación, evalúa cada regla según los siguientes criterios:
- Indica si la regla de denegación incluye el permiso.
- Si el permiso se incluye como excepción en la regla de denegación.
- Indica si la regla de denegación incluye la entidad principal.
- Indica si la entidad de seguridad figura como excepción en la regla de denegación.
- Si se cumplen las condiciones de la regla de denegación (si las hay).
-
overallAccessState
: indica si la entidad puede usar el permiso especificado para acceder al recurso especificado en función de las políticas de permiso, las políticas de denegación y las políticas de límites de acceso de la entidad pertinentes.Las políticas de límites de acceso de principales relevantes incluyen todas las políticas de límites de acceso de principales que están vinculadas a un conjunto de principales que incluye al principal.
Entre las políticas de permitir y denegar relevantes se incluyen las siguientes:
- La política de permisos del recurso
- Las políticas de denegación del recurso, si las hay
- Las políticas de permiso del proyecto, la carpeta y la organización principales del recurso, si los tiene
- Las políticas de denegación del proyecto, la carpeta y la organización principales del recurso, si los hay
Las políticas de permitir y denegar de los proyectos, las carpetas y las organizaciones principales son relevantes debido a la herencia de políticas. Cuando adjuntas una política de permiso o denegación a un proyecto, una carpeta o una organización, esa política también se aplica a todos los recursos de ese proyecto, carpeta u organización.
Por ejemplo, si una política de denegación de una organización indica que una entidad de seguridad no puede usar un permiso específico, la entidad de seguridad no podrá usar ese permiso para ningún recurso de la organización. Esta regla se aplica aunque las carpetas y los proyectos de esa organización tengan políticas de denegación más permisivas o políticas de permiso que concedan el permiso a la principal.
Del mismo modo, si una política de permiso de un proyecto otorga a una entidad principal un permiso específico, la entidad principal tendrá ese permiso para cualquier recurso del proyecto, siempre que no se le deniegue.
Para que un usuario pueda usar el permiso para acceder al recurso, todos los tipos de políticas deben permitir el acceso. Para obtener más información, consulta Evaluación de políticas.
pabPolicyExplanation
: un resumen de si las políticas de límites de acceso de principales pertinentes permiten que el principal acceda al recurso, seguido de las vinculaciones de políticas de límites de acceso de principales y las políticas de límites de acceso de principales pertinentes.
Las políticas de límites de acceso de principales pueden permitir el acceso, no permitirlo o no aplicarse. Las políticas de límites de acceso de principales no se aplican en las siguientes situaciones:
- Gestión de identidades y accesos no aplica el permiso especificado en la versión de aplicación de la política de límite de acceso de la entidad principal. Por lo tanto, la política de límites de acceso de principales no puede bloquear el acceso.
- Debido a una condición en el enlace de la política, la política o el enlace de límites de acceso de principales no se aplican al principal.
- Una política de límites de acceso de principales no tiene reglas.
Si no se aplica una política de límites de acceso de principales, no puede afectar a si el principal puede acceder al recurso.
La respuesta también muestra todas las vinculaciones de políticas que incluyen la entidad de seguridad y los detalles de la política de límite de acceso de la entidad de seguridad en cada una de esas vinculaciones de políticas:
-
En cada vinculación de la política de límites de acceso de principales, la respuesta indica si la vinculación de la política se aplica al principal y, a continuación, muestra el texto de la vinculación de la política. Una vinculación de políticas se aplica si el conjunto de cuentas principales definido en la vinculación incluye la cuenta principal consultada y si la condición de la vinculación de políticas se evalúa como
true
para la cuenta principal consultada. Si no se aplica la vinculación de la política, esta no podrá influir en si la entidad de seguridad puede acceder al recurso. -
En cada política de límites de acceso de principales, la respuesta muestra lo siguiente:
- Si la política permite o no el acceso, o si no se aplica.
- Versión de la política que se aplica. Este número de versión determina si IAM aplica esta política de límites de acceso de principales a los permisos consultados. Si el permiso no se aplica, la política no puede influir en si la entidad de seguridad puede acceder al recurso.
-
Las reglas de la política de límites de acceso de principales y si cada regla permite el acceso. En el caso de cada regla, la respuesta indica si el 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 los recursos de Resource Manager (proyectos, carpetas y organizaciones) se pueden incluir directamente en las reglas de límite de acceso de principales.
- Uno de los ancestros del recurso (es decir, un proyecto, una carpeta o una organización que se encuentre por encima del recurso en la jerarquía de recursos) se incluye en la regla.
Muchos objetos de la respuesta también tienen un campo relevance
. El valor de este campo indica en qué medida 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 gran impacto en el resultado. Es decir, al quitar el objeto, es probable que cambie el estado de acceso general. Por ejemplo, una vinculación de rol que conceda a la entidad principal el permiso especificado tendría este valor de relevancia.HEURISTIC_RELEVANCE_NORMAL
: indica que el objeto tiene un impacto limitado en el resultado. Es decir, es poco probable que la eliminación del objeto cambie el estado de acceso general. Por ejemplo, una regla de denegación que no contenga el permiso o la entidad principal tendría este valor de relevancia.
REST
La respuesta contiene cuatro secciones principales: el estado de acceso general, una descripción de la tupla de acceso de la solicitud, los resultados de la evaluación de la política de permiso y los resultados de la evaluación de la política de denegación.
-
overallAccessState
: indica si la entidad puede usar el permiso especificado para acceder al recurso especificado en función de las políticas de permiso, las políticas de denegación y las políticas de límites de acceso de la entidad pertinentes.Las políticas de límites de acceso de principales relevantes incluyen todas las políticas de límites de acceso de principales que están vinculadas a un conjunto de principales que incluye al principal.
Entre las políticas de permitir y denegar relevantes se incluyen las siguientes:
- La política de permisos del recurso
- Las políticas de denegación del recurso, si las hay
- Las políticas de permiso del proyecto, la carpeta y la organización principales del recurso, si los tiene
- Las políticas de denegación del proyecto, la carpeta y la organización principales del recurso, si los hay
Las políticas de permitir y denegar de los proyectos, las carpetas y las organizaciones principales son relevantes debido a la herencia de políticas. Cuando adjuntas una política de permiso o denegación a un proyecto, una carpeta o una organización, esa política también se aplica a todos los recursos de ese proyecto, carpeta u organización.
Por ejemplo, si una política de denegación de una organización indica que una entidad de seguridad no puede usar un permiso específico, la entidad de seguridad no podrá usar ese permiso para ningún recurso de la organización. Esta regla se aplica aunque las carpetas y los proyectos de esa organización tengan políticas de denegación más permisivas o políticas de permiso que concedan el permiso a la principal.
Del mismo modo, si una política de permiso de un proyecto otorga a una entidad principal un permiso específico, la entidad principal tendrá ese permiso para cualquier recurso del proyecto, siempre que no se le deniegue.
Para que un usuario pueda usar el permiso para acceder al recurso, todos los tipos de políticas deben permitir el acceso. Para obtener más información, consulta Evaluación de políticas.
-
accessTuple
: descripción de la tupla de acceso de la solicitud, incluido el contexto de condición que hayas proporcionado. Esta sección también contiene un resumen de las etiquetas que se aplican al recurso. -
allowPolicyExplanation
: un resumen de si las políticas de permiso pertinentes conceden el permiso a la entidad de seguridad, seguido de una lista de políticas de permiso y sus vinculaciones de roles.En cada política de permiso, la respuesta muestra todos los enlaces de rol de la política y los evalúa según los siguientes criterios:
- Indica si la vinculación de rol incluye el permiso.
- Indica si la vinculación de roles incluye la cuenta principal.
- Si se cumplen las condiciones de la vinculación de roles (si las hay).
A continuación, la respuesta muestra el texto JSON completo de la política de permiso.
-
denyPolicyExplanation
: un resumen de si las políticas de denegación pertinentes deniegan el permiso a la entidad principal, seguido de una lista de recursos con políticas de denegación. En el caso de cada recurso, la respuesta muestra todas las políticas de denegación adjuntas al recurso.En cada política de denegación, la respuesta imprime los metadatos de la política, enumera las reglas de denegación de la política y, a continuación, evalúa cada regla según los siguientes criterios:
- Indica si la regla de denegación incluye el permiso.
- Si el permiso se incluye como excepción en la regla de denegación.
- Indica si la regla de denegación incluye la entidad principal.
- Indica si la entidad de seguridad figura como excepción en la regla de denegación.
- Si se cumplen las condiciones de la regla de denegación (si las hay).
-
pabPolicyExplanation
: un resumen de si las políticas de límites de acceso de principales pertinentes permiten que el principal acceda al recurso, seguido de las vinculaciones de políticas de límites de acceso de principales y las políticas de límites de acceso de principales pertinentes.Las políticas de límites de acceso de principales pueden permitir el acceso, no permitirlo o no aplicarse. Las políticas de límites de acceso de principales no se aplican en las siguientes situaciones:
- Gestión de identidades y accesos no aplica el permiso especificado en la versión de aplicación de la política de límite de acceso de la entidad principal. Por lo tanto, la política de límites de acceso de principales no puede bloquear el acceso.
- Debido a una condición en el enlace de la política, la política o el enlace de límites de acceso de principales no se aplican al principal.
- Una política de límites de acceso de principales no tiene reglas.
Si no se aplica una política de límites de acceso de principales, no puede afectar a si el principal puede acceder al recurso.
La respuesta también muestra todas las vinculaciones de políticas que incluyen la entidad de seguridad y los detalles de la política de límite de acceso de la entidad de seguridad en cada una de esas vinculaciones de políticas:
-
En cada vinculación de la política de límites de acceso de principales, la respuesta indica si la vinculación de la política se aplica al principal y, a continuación, muestra el texto de la vinculación de la política. Una vinculación de políticas se aplica si el conjunto de cuentas principales definido en la vinculación incluye la cuenta principal consultada y si la condición de la vinculación de políticas se evalúa como
true
para la cuenta principal consultada. Si no se aplica la vinculación de la política, esta no podrá influir en si la entidad de seguridad puede acceder al recurso. -
En cada política de límites de acceso de principales, la respuesta muestra lo siguiente:
- Si la política permite o no el acceso, o si no se aplica.
- Versión de la política que se aplica. Este número de versión determina si IAM aplica esta política de límites de acceso de principales a los permisos consultados. Si el permiso no se aplica, la política no puede influir en si la entidad de seguridad puede acceder al recurso.
-
Las reglas de la política de límites de acceso de principales y si cada regla permite el acceso. En el caso de cada regla, la respuesta indica si el 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 los recursos de Resource Manager (proyectos, carpetas y organizaciones) se pueden incluir directamente en las reglas de límite de acceso de principales.
- Uno de los ancestros del recurso (es decir, un proyecto, una carpeta o una organización que se encuentre por encima del recurso en la jerarquía de recursos) se incluye en la regla.
Muchos objetos de la respuesta también tienen un campo relevance
. El valor de este campo indica en qué medida 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 gran impacto en el resultado. Es decir, al quitar el objeto, es probable que cambie el estado de acceso general. Por ejemplo, una vinculación de rol que conceda a la entidad principal el permiso especificado tendría este valor de relevancia.HEURISTIC_RELEVANCE_NORMAL
: indica que el objeto tiene un impacto limitado en el resultado. Es decir, es poco probable que la eliminación del objeto cambie el estado de acceso general. Por ejemplo, una regla de denegación que no contenga el permiso o la entidad principal tendría este valor de relevancia.
Solucionar problemas con las vinculaciones de roles condicionales
La herramienta de solución de problemas de políticas soluciona automáticamente los problemas de las vinculaciones de roles condicionales y las reglas de denegación en función de las etiquetas. También soluciona automáticamente los problemas de las vinculaciones de políticas de límites de acceso de principales con condiciones en función de los principales.
Para solucionar problemas con otros tipos de enlaces de roles condicionales o reglas de denegación condicionales, la herramienta para solucionar problemas de políticas necesita más contexto sobre la solicitud. Por ejemplo, para solucionar problemas relacionados con las condiciones basadas en atributos de fecha y hora, Solucionador de problemas de políticas necesita la hora de la solicitud.
En la CLI de gcloud y en la API REST, debes proporcionar este contexto adicional manualmente.
En la Google Cloud consola, puedes proporcionar este contexto adicional solucionando problemas directamente desde cualquier registro de auditoría de actividad de administrador o registro de auditoría de acceso a datos. Cada entrada del registro de auditoría corresponde a una solicitud a una APIGoogle Cloud o a una acción que Google Cloud lleva a cabo en tu nombre. Cuando solucionas problemas a partir de un registro de auditoría, la herramienta para solucionar problemas de políticas obtiene automáticamente información adicional sobre la solicitud, como la fecha y la hora, lo que le permite analizar las vinculaciones de roles condicionales y las reglas de denegación.
Consola
Para solucionar problemas con las vinculaciones de roles condicionales y las reglas de denegación, sigue estos pasos:
En la Google Cloud consola, ve a la página Explorador de registros.
Si el título de la página es Visor de registros antiguo, haga clic en la lista desplegable Actualizar y seleccione Actualizar al nuevo explorador de registros.
Para ver solo los registros de auditoría de actividad de administrador y de acceso a datos, introduce la siguiente consulta en el creador de consultas y, a continuación, 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")
Sustituye los siguientes valores:
RESOURCE_TYPE
: el tipo de recurso del que quieres obtener los registros de auditoría. Usaprojects
,folders
oorganizations
.RESOURCE_ID
: el ID de tu recurso.
Busca la entrada del registro de auditoría que corresponda a la solicitud para la que quieras solucionar problemas. Para saber cómo usar el Explorador de registros para encontrar entradas de registro específicas, consulta el artículo Usar el Explorador de registros.
En la columna Resumen de la entrada de registro, haga clic en IAM y, a continuación, en Solucionar problema de acceso.
La herramienta para solucionar problemas de políticas usa la información de la entrada del registro para solucionar problemas de acceso y, a continuación, te muestra los resultados. El contexto adicional se indica en los detalles de la evaluación, en Contexto de la condición. Para ver los detalles del contexto, haz clic en Ver contexto de la condición. Para obtener más información sobre la página de resultados de la herramienta para solucionar problemas de políticas, consulta el artículo Interpretar los resultados de la herramienta para solucionar problemas de esta página.
Opcional: Para solucionar problemas con otra solicitud que implique enlaces de roles condicionales y reglas de denegación, vuelve a la página Explorador de registros y repite los pasos anteriores.
gcloud
Para solucionar problemas relacionados con las vinculaciones de roles condicionales y las reglas de denegación, usa el comando
gcloud policy-troubleshoot iam
.
Antes de usar los datos de los comandos que se indican a continuación, haz los siguientes cambios:
-
EMAIL
: la dirección de correo del principal cuyos permisos quieres solucionar. -
RESOURCE
: el recurso en el que se concede el permiso. -
PERMISSION
: el permiso que quieres solucionar. -
DESTINATION_IP
: opcional. Dirección IP de destino de la solicitud que se va a usar al comprobar las vinculaciones de roles condicionales. Por ejemplo,198.1.1.1
. -
DESTINATION_PORT
: opcional. El puerto de destino de la solicitud que se usará al comprobar las vinculaciones de roles condicionales. Por ejemplo, `8080`. -
REQUEST_TIME
: opcional. Marca de tiempo de la solicitud que se va a usar al comprobar las vinculaciones de roles condicionales. Usa una marca de tiempo en formato RFC 3339, por ejemplo,2099-02-01T00:00:00Z
. -
RESOURCE_NAME
: opcional. El valor del nombre del recurso que se va a usar al comprobar las vinculaciones de roles condicionales. Para ver una lista de los formatos de nombres de recursos aceptados, consulta Formato del nombre de recurso. -
RESOURCE_SERVICE
: opcional. El valor del servicio de recursos que se debe usar al comprobar las vinculaciones de roles condicionales. Para ver una lista de los nombres de servicio aceptados, consulta Valores de servicio de recursos. -
RESOURCE_TYPE
: opcional. Para ver una lista de los tipos de recursos aceptados, consulta Valores de tipo de recurso.
Ejecuta el comando 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 entidad principal. En cada enlace de rol y regla de denegación con una condición, la respuesta incluye un campo conditionExplanation
que describe si la condición se evalúa como verdadera o falsa en función del contexto de la condición que hayas proporcionado.
Por ejemplo, a continuación se muestra una evaluación de una vinculación de rol con una condición que especifica el tipo de recurso y el servicio de recursos:
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 las vinculaciones de roles condicionales y las reglas de denegación, usa el método iam.troubleshoot
de la API Policy Troubleshooter.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
-
EMAIL
: la dirección de correo del principal cuyos permisos quieres solucionar. -
RESOURCE
: el recurso en el que se concede el permiso. -
PERMISSION
: el permiso que quieres solucionar. -
DESTINATION_IP
: opcional. Dirección IP de destino de la solicitud que se va a usar al comprobar las vinculaciones de roles condicionales. Por ejemplo,198.1.1.1
. -
DESTINATION_PORT
: opcional. El puerto de destino de la solicitud que se usará al comprobar las vinculaciones de roles condicionales. Por ejemplo, `8080`. -
REQUEST_TIME
: opcional. Marca de tiempo de la solicitud que se va a usar al comprobar las vinculaciones de roles condicionales. Usa una marca de tiempo en formato RFC 3339, por ejemplo,2099-02-01T00:00:00Z
. -
RESOURCE_NAME
: opcional. El valor del nombre del recurso que se va a usar al comprobar las vinculaciones de roles condicionales. Para ver una lista de los formatos de nombres de recursos aceptados, consulta Formato del nombre de recurso. -
RESOURCE_SERVICE
: opcional. El valor del servicio de recursos que se debe usar al comprobar las vinculaciones de roles condicionales. Para ver una lista de los nombres de servicio aceptados, consulta Valores de servicio de recursos. -
RESOURCE_TYPE
: opcional. Para ver una lista de los tipos de recursos aceptados, consulta Valores de tipo de recurso.
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, despliega una de estas opciones:
La respuesta contiene una explicación del acceso de la entidad principal. En cada enlace de rol y regla de denegación con una condición, la respuesta incluye un campo conditionExplanation
que describe si la condición se evalúa como verdadera o falsa en función del contexto de la condición que hayas proporcionado.
Por ejemplo, a continuación se muestra una evaluación de una vinculación de rol con una condición que especifica el tipo de recurso y el servicio de recursos:
... { "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 }] } } ...
Siguientes pasos
- Consulta la documentación de referencia sobre permisos o la documentación de referencia sobre roles predefinidos para determinar qué rol debes asignar a un usuario que no tiene permisos.
- Consulta información sobre las otras herramientas de Inteligencia de políticas, que te ayudan a entender y gestionar tus políticas para mejorar de forma proactiva tu configuración de seguridad.