Soluciona problemas de políticas

Existen varios métodos que puedes utilizar para solucionar problemas de políticas de límite de acceso permitido, denegado y principales de Identity and Access Management (IAM).

Usa el solucionador de problemas de políticas

Si necesitas solucionar problemas de acceso para una principal específica, usa el solucionador de problemas de políticas de IAM.

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

Si deseas obtener información para usar el solucionador de problemas de políticas para solucionar problemas de políticas de permiso, denegación y de límite de acceso de las principales, consulta Soluciona problemas de permisos de IAM.

Visualiza todas las políticas de permiso y denegación que se aplican a un recurso

En Google Cloud, las siguientes políticas de permisos y denegación afectan el acceso a un recurso:

  • 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 los proyectos superiores, las carpetas y las organizaciones afectan el acceso a un recurso 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 unión de todas estas políticas se denomina política aplicable o política vigente del recurso.

En Google Cloud, puedes obtener una lista de todas las políticas de permiso y rechazo que afectan el acceso a un proyecto con el comando gcloud beta projects get-ancestors-iam-policy con la marca --include-deny. En conjunto, estas políticas conforman la política aplicable para el proyecto. Puedes investigar cada política para ver cómo afecta el acceso de la principal.

gcloud

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

  • PROJECT_ID: El ID del proyecto de Google Cloud Los ID de proyecto son strings alfanuméricas, como my-project.

Ejecuta el comando gcloud beta projects get-ancestors-iam-policy:

Linux, macOS o Cloud Shell

gcloud beta projects get-ancestors-iam-policy PROJECT_ID --include-deny --format=json

Windows (PowerShell)

gcloud beta projects get-ancestors-iam-policy PROJECT_ID --include-deny --format=json

Windows (cmd.exe)

gcloud beta projects get-ancestors-iam-policy PROJECT_ID --include-deny --format=json

La respuesta contiene las políticas de permiso y rechazo del proyecto. cualquier carpeta que sea principal del proyecto; y la organización. En el siguiente ejemplo, se muestran las políticas de permiso para la organización 1234567890123 y el proyecto my-project, así como una política de denegación para el proyecto my-project:

[
  {
    "id": "1234567890123",
    "policy": {
      "bindings": [
        {
          "members": [
            "group:cloud-admins@example.com"
          ],
          "role": "roles/iam.denyAdmin"
        },
        {
          "members": [
            "user:raha@example.com"
          ],
          "role": "roles/iam.serviceAccountAdmin"
        }
      ],
      "etag": "BwXW6Eab7TI=",
      "version": 1
    },
    "type": "organization"
  },
  {
    "id": "my-project",
    "policy": {
      "bindings": [
        {
          "members": [
            "group:cloud-admins@example.com"
          ],
          "role": "roles/owner"
        }
      ],
      "etag": "BwXXjOM7L6M=",
      "type": "project"
    }
  },
  {
    "id": "my-project",
    "policy": {
      "createTime": "2022-02-14T21:46:35.865279Z",
      "displayName": "My deny policy",
      "etag": "MTgyMzg2ODcwNTEyMjMxMTM3Mjg=",
      "kind": "DenyPolicy",
      "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F123456789012/denypolicies/my-deny-policy",
      "rules": [
        {
          "denyRule": {
            "deniedPermissions": [
              "iam.googleapis.com/serviceAccounts.create"
            ],
            "deniedPrincipals": [
              "principal://goog/subject/raha@example.com"
            ]
          },
          "description": "Prevent service account creation"
        }
      ],
      "uid": "c83e3dc3-d8a6-6f51-4018-814e9f200b05",
      "updateTime": "2022-02-14T21:46:35.865279Z"
    },
    "type": "project"
  }
]

En este ejemplo, al usuario raha@example.com se le otorga la función de administrador de cuenta de servicio (roles/iam.serviceAccountAdmin) en la organización, pero el proyecto tiene una política de denegación que impide que raha@example.com use el permisoiam.googleapis.com/serviceAccounts.create. Como resultado, si raha@example.com intenta crear una cuenta de servicio en el proyecto my-project, se rechazará la solicitud.

En algunos casos, es posible que solo necesites ver la política de permisos vigente de un recurso, por ejemplo, si tu organización no usa políticas de denegación. En estos casos, puedes usar los siguientes métodos para ver la política de permisos vigente:

  • Ver la política de permiso de IAM del recurso en la consola de Google Cloud. En la consola de Google Cloud, se muestra de forma automática la política vigente de cada recurso.

    Para obtener información sobre cómo ver la política de permiso de IAM de un recurso en la consola de Google Cloud, consulta Visualiza el acceso actual.

  • Usa la API de Cloud Asset para obtener la política de permiso vigente del recurso. Para obtener más información, consulta Visualiza políticas de IAM eficaces.

Si necesitas ubicar una vinculación de rol específica en una política de permiso, puedes buscar la política de permiso.

Cloud Asset Inventory te permite buscar políticas de permiso para las vinculaciones de roles que coinciden con los parámetros especificados. Puedes usar una variedad de parámetros de búsqueda, incluidos los siguientes:

  • Tipo de recurso
  • Tipo principal
  • Rol
  • Proyecto
  • Carpeta
  • Organización

Para obtener más información, consulta Busca políticas de permiso de IAM.