Analiza las políticas de IAM

En esta página, se muestra cómo usar el Analizador de políticas para descubrir qué principales (usuarios, cuentas de servicio, grupos y dominios) tienen qué acceso a qué recursos de Google Cloud.

En los ejemplos de esta página, se muestra cómo ejecutar una consulta de análisis de políticas y ver los resultados de inmediato. Si quieres exportar los resultados para su análisis posterior, puedes usar AnalyzeIamPolicyLongrunning a fin de escribir los resultados de las consultas en BigQuery o Cloud Storage.

Antes de comenzar

  • Habilita Cloud Asset API.

    Habilita la API

    Debes habilitar la API en el proyecto o la organización que usarás para enviar la consulta. No es necesario que sea el mismo recurso al que describiste tu consulta.

  • Opcional: Comprende cómo funciona el Analizador de políticas.

Funciones y permisos requeridos

Se requieren las siguientes funciones y permisos para analizar las políticas de permisos.

Funciones de IAM obligatorias

A fin de obtener los permisos que necesitas para analizar una política de permiso, pídele al administrador que te otorgue las siguientes funciones de IAM en el proyecto, la carpeta o la organización que definirás en la consulta:

  • Visualizador de Cloud Asset (roles/cloudasset.viewer)
  • Para analizar políticas con funciones de IAM personalizadas, haz lo siguiente: Visualizador de funciones (roles/iam.roleViewer).
  • Para usar la CLI de Google Cloud a fin de analizar las políticas, usa: consumidor de servicios (roles/serviceusage.serviceUsageConsumer)

Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso.

Estas funciones predefinidas contienen los permisos necesarios para analizar una política de permisos. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:

Permisos necesarios

  • cloudasset.assets.analyzeIamPolicy
  • cloudasset.assets.searchAllResources
  • cloudasset.assets.searchAllIamPolicies
  • Para analizar políticas con funciones personalizadas de IAM, haz lo siguiente: iam.roles.get
  • Usa la CLI de Google Cloud para analizar políticas: serviceusage.services.use

También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.

Permisos necesarios de Google Workspace

Si deseas expandir grupos en los resultados de la consulta para ver si una principal tiene ciertas funciones o permisos como resultado de su membresía en un grupo de Google Workspace, necesitas el permiso groups.read de Google Workspace. Este permiso se incluye en la función de administrador de grupos de lectores y en funciones más potentes, como las funciones de administrador de grupos o administrador avanzado. Para obtener información sobre cómo otorgar estas funciones, consulta Asigna funciones de administrador específicas.

Determina qué principales pueden acceder a un recurso

Puedes usar el Analizador de políticas para verificar qué principales tienen ciertas funciones o permisos en un recurso específico de tu proyecto, organización o carpeta. Para obtener esta información, crea una consulta que incluya el recurso cuyo acceso deseas analizar y una o más funciones o permisos que desees comprobar.

Console

  1. En Console, ve a la página Analizador de políticas.

    Ir a la página de Analizador de políticas

  2. En la sección Crea una consulta a partir de una plantilla, haz clic en Crear consulta personalizada.

  3. En el campo Seleccionar el alcance de la consulta, selecciona el proyecto, la carpeta o la organización a los que deseas limitar el alcance de la consulta. El Analizador de políticas analizará el acceso a ese proyecto, carpeta u organización, así como cualquier recurso dentro de ese proyecto, organización o carpeta.

  4. Elige el recurso que deseas verificar y la función o el permiso que deseas verificar:

    1. En el campo Parámetro 1, selecciona Recurso en el menú desplegable.
    2. En el campo Recurso, ingresa el nombre completo del recurso del que deseas analizar el acceso. Si no conoces el nombre completo del recurso, comienza a escribir su nombre visible y, luego, selecciónalo en la lista de recursos proporcionados.
    3. Haz clic en Agregar selector.
    4. En el campo Parámetro 2, selecciona Función o Permiso.
    5. En el campo Selecciona una función o Selecciona un permiso, selecciona la función o el permiso que deseas verificar.
    6. Opcional: Para comprobar las funciones y los permisos adicionales, continúa agregando selectores de Función y Permiso hasta que aparezcan todas las funciones y los permisos que deseas verificar.
  5. Opcional: Haz clic en Continuar y selecciona las opciones avanzadas que quieras habilitar para esta consulta.

  6. En el panel Consulta personalizada, haz clic en Ejecutar consulta. La página de informes muestra los parámetros de búsqueda que ingresaste y una tabla de resultados de todas las principales con las funciones o permisos indicados en el recurso especificado.

gcloud

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

  • RESOURCE_TYPE: El tipo de recurso en el que deseas establecer el alcance de la búsqueda. Solo se analizarán las políticas de IAM permitidas para este recurso y sus descendientes. Usa los valores project, folder o organization.
  • RESOURCE_ID: Es el ID del proyecto, la carpeta o la organización de Google Cloud en el que deseas establecer el alcance de la búsqueda. Solo se analizarán las políticas de IAM permitidas para este recurso y sus descendientes. Los ID de proyecto son strings alfanuméricas, como my-project. Los ID de carpeta y organización son numéricos, como 123456789012.
  • FULL_RESOURCE_NAME: El nombre completo del recurso para el que deseas analizar el acceso. Para obtener una lista de los formatos de nombres de recursos completos, consulta Formato de nombres de recursos.
  • PERMISSIONS: Una lista separada por comas de los permisos que deseas verificar, por ejemplo, compute.instances.get,compute.instances.start Si enumeras varios permisos, el Analizador de políticas verificará cualquiera de los permisos enumerados.

Ejecuta el comando gcloud asset analiza-iam-policy:

Linux, macOS o Cloud Shell

gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID \
    --full-resource-name=FULL_RESOURCE_NAME \
    --permissions='PERMISSIONS'

Windows (PowerShell)

gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID `
    --full-resource-name=FULL_RESOURCE_NAME `
    --permissions='PERMISSIONS'

Windows (cmd.exe)

gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID ^
    --full-resource-name=FULL_RESOURCE_NAME ^
    --permissions='PERMISSIONS'

Recibirá una respuesta YAML con resultados del análisis. Cada resultado de análisis enumera un conjunto de accesos, identidades y recursos relevantes para tu consulta, seguido de la vinculación de función de IAM relacionada. Si la vinculación de función es condicional, el resultado del análisis también incluye el resultado de la evaluación de la condición. Si no se pudo evaluar la condición, el resultado será CONDITIONAL.

Las principales que tienen cualquiera de los permisos especificados en el recurso especificado se enumeran en los campos identities de la respuesta. En el siguiente ejemplo, se muestra un solo resultado de análisis con el campo identities destacado.

...
---
ACLs:
- accesses:
  - permission: compute.instances.get
  - permission: compute.instances.start
  identities:
  - name: user:my-user@example.com
  resources:
  - fullResourceName: //cloudresourcemanager.googleapis.com/projects/my-project
policy:
  attachedResource: //cloudresourcemanager.googleapis.com/projects/my-project
  binding:
    members:
    - user: my-user@example.com
    role: roles/compute.admin
---
...

REST

Para determinar qué principales tienen ciertos permisos en un recurso, usa el método analyzeIamPolicy de la API de Cloud Asset Inventory.

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

  • RESOURCE_TYPE: El tipo de recurso en el que deseas establecer el alcance de la búsqueda. Solo se analizarán las políticas de IAM permitidas para este recurso y sus descendientes. Usa los valores projects, folders o organizations.
  • RESOURCE_ID: Es el ID del proyecto, la carpeta o la organización de Google Cloud en el que deseas establecer el alcance de la búsqueda. Solo se analizarán las políticas de IAM permitidas para este recurso y sus descendientes. Los ID de proyecto son strings alfanuméricas, como my-project. Los ID de carpeta y organización son numéricos, como 123456789012.
  • FULL_RESOURCE_NAME: El nombre completo del recurso para el que deseas analizar el acceso. Para obtener una lista de los formatos de nombres de recursos completos, consulta Formato de nombres de recursos.
  • PERMISSION_1, PERMISSION_2... PERMISSION_N: Los permisos que deseas verificar, por ejemplo, compute.instances.get. Si enumeras varios permisos, el Analizador de políticas verificará cualquiera de los permisos enumerados.

HTTP method and URL:

POST https://cloudasset.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID:analyzeIamPolicy

Cuerpo JSON de la solicitud:

{
  "analysisQuery": {
    "resourceSelector": {
      "fullResourceName": "FULL_RESOURCE_NAME"
    },
    "accessSelector": {
      "permissions": [
        "PERMISSION_1",
        "PERMISSION_2",
        "PERMISSION_N"
      ]
    }
  }
}

Para enviar tu solicitud, expande una de estas opciones:

Recibes una respuesta JSON con resultados de análisis. En cada resultado de análisis, se describe una vinculación de función de IAM relevante y, luego, se enumeran los recursos, los accesos y las principales de esa vinculación. Si la vinculación de función es condicional, el resultado del análisis también incluye el resultado de la evaluación de la condición. Si no se pudo evaluar la condición, el resultado aparecerá como CONDITIONAL.

Las principales que tienen cualquiera de los permisos especificados en el recurso especificado se enumeran en los campos identities de la respuesta. En el siguiente ejemplo, se muestra un solo resultado de análisis con el campo identities destacado.

...
{
  "attachedResourceFullName": "//cloudresourcemanager.googleapis.com/projects/my-project",
  "iamBinding": {
    "role": "roles/compute.admin",
    "members": [
      "user:my-user@example.com"
    ]
  },
  "accessControlLists": [
    {
      "resources": [
        {
          "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project"
        }
      ],
      "accesses": [
        {
          "permission": "compute.instances.get"
        },
        {
          "permission": "compute.instances.start"
        }
      ]
    }
  ],
  "identityList": {
    "identities": [
      {
        "name": "user:my-user@example.com"
      }
    ]
  },
  "fullyExplored": true
},
...

Determina qué principales tienen determinadas funciones o permisos

Puedes usar el Analizador de políticas para verificar qué principales tienen funciones o permisos específicos en cualquier recurso de Google Cloud de tu organización. Para obtener esta información, crea una consulta que incluya una o más funciones o permisos que se deben verificar, pero que no especifique un recurso.

Console

  1. En Console, ve a la página Analizador de políticas.

    Ir a la página de Analizador de políticas

  2. En la sección Crea una consulta a partir de una plantilla, haz clic en Crear consulta personalizada.

  3. En el campo Seleccionar el alcance de la consulta, selecciona el proyecto, la carpeta o la organización a los que deseas limitar el alcance de la consulta. El Analizador de políticas analizará el acceso a ese proyecto, carpeta u organización, así como cualquier recurso dentro de ese proyecto, organización o carpeta.

  4. En el campo Parámetro 1, selecciona Función o Permiso.

  5. En el campo Selecciona una función o Selecciona un permiso, selecciona la función o el permiso que deseas verificar.

  6. Opcional: Para verificar las funciones y los permisos adicionales, haz lo siguiente:

    1. Haz clic en Agregar selector.
    2. En el campo Parámetro 2, selecciona Función o Permiso.
    3. En el campo Selecciona una función o Selecciona un permiso, selecciona la función o el permiso que deseas verificar.
    4. Sigue agregando selectores de Función y Permiso hasta que se muestren todas las funciones y los permisos que deseas verificar.
  7. Opcional: Haz clic en Continuar y selecciona las opciones avanzadas que quieras habilitar para esta consulta.

  8. En el panel Consulta personalizada, haz clic en Ejecutar consulta. En la página de informes, se muestran los parámetros de búsqueda que ingresaste y una tabla de resultados de todas las principales con las funciones o permisos especificados en cualquier recurso dentro del alcance.

gcloud

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

  • RESOURCE_TYPE: El tipo de recurso en el que deseas establecer el alcance de la búsqueda. Solo se analizarán las políticas de IAM permitidas para este recurso y sus descendientes. Usa los valores project, folder o organization.
  • RESOURCE_ID: Es el ID del proyecto, la carpeta o la organización de Google Cloud en el que deseas establecer el alcance de la búsqueda. Solo se analizarán las políticas de IAM permitidas para este recurso y sus descendientes. Los ID de proyecto son strings alfanuméricas, como my-project. Los ID de carpeta y organización son numéricos, como 123456789012.
  • ROLES: Una lista separada por comas de los permisos que deseas verificar, por ejemplo, compute.instances.get,compute.instances.start Si enumeras varias funciones, el Analizador de políticas verificará cualquiera de las funciones enumeradas.
  • PERMISSIONS: Una lista separada por comas de los permisos que deseas verificar, por ejemplo, compute.instances.get,compute.instances.start Si enumeras varios permisos, el Analizador de políticas verificará cualquiera de los permisos enumerados.

Ejecuta el comando gcloud asset analiza-iam-policy:

Linux, macOS o Cloud Shell

gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID \
    --roles='ROLES' \
    --permissions='PERMISSIONS'

Windows (PowerShell)

gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID `
    --roles='ROLES' `
    --permissions='PERMISSIONS'

Windows (cmd.exe)

gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID ^
    --roles='ROLES' ^
    --permissions='PERMISSIONS'

Recibes una respuesta JSON con resultados de análisis. En cada resultado de análisis, se describe una vinculación de función de IAM relevante y, luego, se enumeran los recursos, los accesos y las principales de esa vinculación. Si la vinculación de función es condicional, el resultado del análisis también incluye el resultado de la evaluación de la condición. Si no se pudo evaluar la condición, el resultado aparecerá como CONDITIONAL.

Las principales que tienen cualquiera de las funciones o permisos especificados se enumeran en los campos identities de la respuesta. En el siguiente ejemplo, se muestra un solo resultado de análisis con el campo identities destacado.

...
---
ACLs:
- accesses:
  - permission: compute.instances.get
  - permission: compute.instances.start
  - role: roles/compute.admin
  identities:
  - name: user:my-user@example.com
  resources:
  - fullResourceName: //cloudresourcemanager.googleapis.com/projects/my-project
policy:
  attachedResource: //cloudresourcemanager.googleapis.com/projects/my-project
  binding:
    members:
    - user: my-user@example.com
    role: roles/compute.admin
---
...

REST

Para determinar qué principales tienen ciertas funciones o permisos, usa el método analyzeIamPolicy de la API de Cloud Asset Inventory.

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

  • RESOURCE_TYPE: El tipo de recurso en el que deseas establecer el alcance de la búsqueda. Solo se analizarán las políticas de IAM permitidas para este recurso y sus descendientes. Usa los valores projects, folders o organizations.
  • RESOURCE_ID: Es el ID del proyecto, la carpeta o la organización de Google Cloud en el que deseas establecer el alcance de la búsqueda. Solo se analizarán las políticas de IAM permitidas para este recurso y sus descendientes. Los ID de proyecto son strings alfanuméricas, como my-project. Los ID de carpeta y organización son numéricos, como 123456789012.
  • ROLE_1, ROLE_2... ROLE_N: Las funciones que deseas verificar, por ejemplo, roles/compute.admin. Si enumeras varias funciones, el Analizador de políticas verificará cualquiera de las funciones enumeradas.
  • PERMISSION_1, PERMISSION_2... PERMISSION_N: Los permisos que deseas verificar, por ejemplo, compute.instances.get. Si enumeras varios permisos, el Analizador de políticas verificará cualquiera de los permisos enumerados.

HTTP method and URL:

POST https://cloudasset.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID:analyzeIamPolicy

Cuerpo JSON de la solicitud:

{
  "analysisQuery": {
    "accessSelector": {
      "roles": [
        "ROLE_1",
        "ROLE_2",
        "ROLE_N"
      ],
      "permissions": [
        "PERMISSION_1",
        "PERMISSION_2",
        "PERMISSION_N"
      ]
    }
  }
}

Para enviar tu solicitud, expande una de estas opciones:

Recibes una respuesta JSON con resultados de análisis. En cada resultado de análisis, se describe una vinculación de función de IAM relevante y, luego, se enumeran los recursos, los accesos y las principales de esa vinculación. Si la vinculación de función es condicional, el resultado del análisis también incluye el resultado de la evaluación de la condición. Si no se pudo evaluar la condición, el resultado aparecerá como CONDITIONAL.

Las principales que tienen cualquiera de las funciones o permisos especificados se enumeran en los campos identities de la respuesta. En el siguiente ejemplo, se muestra un solo resultado de análisis con el campo identities destacado.

...
{
  "attachedResourceFullName": "//cloudresourcemanager.googleapis.com/projects/my-project",
  "iamBinding": {
    "role": "roles/compute.admin",
    "members": [
      "user:my-user@example.com"
    ]
  },
  "accessControlLists": [
    {
      "resources": [
        {
          "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project"
        }
      ],
      "accesses": [
        {
          "permission": "compute.instances.get"
        },
        {
          "role": "roles/compute.admin"
        }
      ]
    }
  ],
  "identityList": {
    "identities": [
      {
        "name": "user:my-user@example.com"
      }
    ]
  },
  "fullyExplored": true
},
...

Determina el acceso que tiene una principal en un recurso

Puedes usar el Analizador de políticas para verificar qué funciones o permisos tiene una principal en un recurso en tu organización. Para obtener esta información, crea una consulta que incluya la principal cuyo acceso deseas analizar y el recurso para el que deseas analizar el acceso.

Console

  1. En Console, ve a la página Analizador de políticas.

    Ir a la página de Analizador de políticas

  2. En la sección Crea una consulta a partir de una plantilla, haz clic en Crear consulta personalizada.

  3. En el campo Seleccionar el alcance de la consulta, selecciona el proyecto, la carpeta o la organización a los que deseas limitar el alcance de la consulta. El Analizador de políticas analizará el acceso a ese proyecto, carpeta u organización, así como cualquier recurso dentro de ese proyecto, organización o carpeta.

  4. Elige el recurso y la principal que deseas verificar:

    1. En el campo Parámetro 1, selecciona Recurso en el menú desplegable.
    2. En el campo Recurso, ingresa el nombre completo del recurso del que deseas analizar el acceso. Si no conoces el nombre completo del recurso, comienza a escribir su nombre visible y, luego, selecciónalo en la lista de recursos proporcionados.
    3. Haz clic en Agregar selector.
    4. En el campo Parámetro 2, selecciona Principal en el menú desplegable.
    5. En el campo Principal, comienza a escribir el nombre de un usuario, una cuenta de servicio o un grupo. Luego, en la lista de principales que se proporciona, selecciona el usuario, la cuenta de servicio o el grupo cuyo acceso deseas analizar.
  5. Opcional: Haz clic en Continuar y selecciona las opciones avanzadas que quieras habilitar para esta consulta.

  6. En el panel Consulta personalizada, haz clic en Ejecutar consulta. La página de informes muestra los parámetros de búsqueda que ingresaste y una tabla de resultados de todas las funciones que la principal especificada tiene en el recurso especificado.

gcloud

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

  • RESOURCE_TYPE: El tipo de recurso en el que deseas establecer el alcance de la búsqueda. Solo se analizarán las políticas de IAM permitidas para este recurso y sus descendientes. Usa los valores project, folder o organization.
  • RESOURCE_ID: Es el ID del proyecto, la carpeta o la organización de Google Cloud en el que deseas establecer el alcance de la búsqueda. Solo se analizarán las políticas de IAM permitidas para este recurso y sus descendientes. Los ID de proyecto son strings alfanuméricas, como my-project. Los ID de carpeta y organización son numéricos, como 123456789012.
  • FULL_RESOURCE_NAME: El nombre completo del recurso para el que deseas analizar el acceso. Para obtener una lista de los formatos de nombres de recursos completos, consulta Formato de nombres de recursos.
  • PRINCIPAL: La principal cuyo acceso deseas analizar, con el formato PRINCIPAL_TYPE:ID (por ejemplo, user:my-user@example.com). Para obtener una lista completa de los tipos principales, consulta Identificadores principales.

Ejecuta el comando gcloud asset analiza-iam-policy:

Linux, macOS o Cloud Shell

gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID \
    --full-resource-name=FULL_RESOURCE_NAME \
    --identity=PRINCIPAL

Windows (PowerShell)

gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID `
    --full-resource-name=FULL_RESOURCE_NAME `
    --identity=PRINCIPAL

Windows (cmd.exe)

gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID ^
    --full-resource-name=FULL_RESOURCE_NAME ^
    --identity=PRINCIPAL

Recibirá una respuesta YAML con resultados del análisis. Cada resultado de análisis enumera un conjunto de accesos, identidades y recursos relevantes para tu consulta, seguido de la vinculación de función de IAM relacionada. Si la vinculación de función es condicional, el resultado del análisis también incluye el resultado de la evaluación de la condición. Si no se pudo evaluar la condición, el resultado será CONDITIONAL.

Las funciones que la principal tiene en el recurso especificado se enumeran en los campos accesses de la respuesta. En el siguiente ejemplo, se muestra un solo resultado de análisis con el campo accesses destacado.

...
---
ACLs:
- accesses:
  - roles/iam.serviceAccountUser
  identities:
  - name: user:my-user@example.com
  resources:
  - fullResourceName: //cloudresourcemanager.googleapis.com/projects/my-project
policy:
  attachedResource: //cloudresourcemanager.googleapis.com/projects/my-project
  binding:
    members:
    - user: my-user@example.com
    role: roles/iam.serviceAccountUser
---
...

REST

Para determinar qué acceso tiene una principal en un recurso, usa el método analyzeIamPolicy de la API de Cloud Asset Inventory.

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

  • RESOURCE_TYPE: El tipo de recurso en el que deseas establecer el alcance de la búsqueda. Solo se analizarán las políticas de IAM permitidas para este recurso y sus descendientes. Usa los valores projects, folders o organizations.
  • RESOURCE_ID: Es el ID del proyecto, la carpeta o la organización de Google Cloud en el que deseas establecer el alcance de la búsqueda. Solo se analizarán las políticas de IAM permitidas para este recurso y sus descendientes. Los ID de proyecto son strings alfanuméricas, como my-project. Los ID de carpeta y organización son numéricos, como 123456789012.
  • FULL_RESOURCE_NAME: El nombre completo del recurso para el que deseas analizar el acceso. Para obtener una lista de los formatos de nombres de recursos completos, consulta Formato de nombres de recursos.
  • PRINCIPAL: La principal cuyo acceso deseas analizar, con el formato PRINCIPAL_TYPE:ID (por ejemplo, user:my-user@example.com). Para obtener una lista completa de los tipos principales, consulta Identificadores principales.

HTTP method and URL:

POST https://cloudasset.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID:analyzeIamPolicy

Cuerpo JSON de la solicitud:

{
  "analysisQuery": {
    "resourceSelector": {
      "fullResourceName": "FULL_RESOURCE_NAME"
    },
    "identitySelector": {
      "identity": "PRINCIPAL"
    }
  }
}

Para enviar tu solicitud, expande una de estas opciones:

Recibes una respuesta JSON con resultados de análisis. En cada resultado de análisis, se describe una vinculación de función de IAM relevante y, luego, se enumeran los recursos, los accesos y las principales de esa vinculación. Si la vinculación de función es condicional, el resultado del análisis también incluye el resultado de la evaluación de la condición. Si no se pudo evaluar la condición, el resultado aparecerá como CONDITIONAL.

Las funciones que la principal tiene en el recurso especificado se enumeran en los campos accesses de la respuesta. En el siguiente ejemplo, se muestra un solo resultado de análisis con el campo accesses destacado.

...
{
  "attachedResourceFullName": "//cloudresourcemanager.googleapis.com/projects/my-project",
  "iamBinding": {
    "role": "roles/iam.serviceAccountUser",
    "members": [
      "user:my-user@example.com"
    ]
  },
  "accessControlLists": [
    {
      "resources": [
        {
          "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project"
        }
      ],
      "accesses": [
        {
          "roles": "iam.serviceAccountUser"
        }
      ]
    }
  ],
  "identityList": {
    "identities": [
      {
        "name": "user:my-user@example.com"
      }
    ]
  },
  "fullyExplored": true
},
...

Determina a qué recursos puede acceder una principal

Puedes usar el Analizador de políticas para verificar qué recursos de la organización tiene funciones o permisos una principal. Para obtener esta información, crea una consulta que incluya la principal cuyo acceso deseas analizar y uno o más permisos o funciones que desees comprobar.

Console

  1. En Console, ve a la página Analizador de políticas.

    Ir a la página de Analizador de políticas

  2. En la sección Crea una consulta a partir de una plantilla, haz clic en Crear consulta personalizada.

  3. En el campo Seleccionar el alcance de la consulta, selecciona el proyecto, la carpeta o la organización a los que deseas limitar el alcance de la consulta. El Analizador de políticas analizará el acceso a ese proyecto, carpeta u organización, así como cualquier recurso dentro de ese proyecto, organización o carpeta.

  4. Elige la principal que deseas verificar y la función o el permiso que deseas comprobar:

    1. En el campo Parámetro 1, selecciona Principal en el menú desplegable.
    2. En el campo Principal, comienza a escribir el nombre de un usuario, una cuenta de servicio o un grupo. Luego, en la lista de principales que se proporciona, selecciona el usuario, la cuenta de servicio o el grupo cuyo acceso deseas analizar.
    3. Haz clic en Agregar selector.
    4. En el campo Parámetro 2, selecciona Función o Permiso.
    5. En el campo Selecciona una función o Selecciona un permiso, selecciona la función o el permiso que deseas verificar.
    6. Opcional: Para comprobar las funciones y los permisos adicionales, continúa agregando selectores de Función y Permiso hasta que aparezcan todas las funciones y los permisos que deseas verificar.
  5. Opcional: Haz clic en Continuar y selecciona las opciones avanzadas que quieras habilitar para esta consulta.

  6. En el panel Consulta personalizada, haz clic en Ejecutar consulta. La página de informes muestra los parámetros de búsqueda que ingresaste y una tabla de resultados de todos los recursos en los que la principal especificada tiene las funciones o los permisos ingresados.

gcloud

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

  • RESOURCE_TYPE: El tipo de recurso en el que deseas establecer el alcance de la búsqueda. Solo se analizarán las políticas de IAM permitidas para este recurso y sus descendientes. Usa los valores project, folder o organization.
  • RESOURCE_ID: Es el ID del proyecto, la carpeta o la organización de Google Cloud en el que deseas establecer el alcance de la búsqueda. Solo se analizarán las políticas de IAM permitidas para este recurso y sus descendientes. Los ID de proyecto son strings alfanuméricas, como my-project. Los ID de carpeta y organización son numéricos, como 123456789012.
  • PRINCIPAL: La principal cuyo acceso deseas analizar, con el formato PRINCIPAL_TYPE:ID (por ejemplo, user:my-user@example.com). Para obtener una lista completa de los tipos principales, consulta Identificadores principales.
  • PERMISSIONS: Una lista separada por comas de los permisos que deseas verificar, por ejemplo, compute.instances.get,compute.instances.start Si enumeras varios permisos, el Analizador de políticas verificará cualquiera de los permisos enumerados.

Ejecuta el comando gcloud asset analiza-iam-policy:

Linux, macOS o Cloud Shell

gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID \
    --identity=PRINCIPAL \
    --permissions='PERMISSIONS'

Windows (PowerShell)

gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID `
    --identity=PRINCIPAL `
    --permissions='PERMISSIONS'

Windows (cmd.exe)

gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID ^
    --identity=PRINCIPAL ^
    --permissions='PERMISSIONS'

Recibirá una respuesta YAML con resultados del análisis. Cada resultado de análisis enumera un conjunto de accesos, identidades y recursos relevantes para tu consulta, seguido de la vinculación de función de IAM relacionada. Si la vinculación de función es condicional, el resultado del análisis también incluye el resultado de la evaluación de la condición. Si no se pudo evaluar la condición, el resultado será CONDITIONAL.

Los recursos en los que la principal especificada tiene uno de los permisos especificados se enumeran en los campos resources de la respuesta. En el siguiente ejemplo, se muestra un solo resultado de análisis con el campo resources destacado.

...
---
ACLs:
- accesses:
  - permission: compute.instances.get
  - permission: compute.instances.start
  identities:
  - name: user:my-user@example.com
  resources:
  - fullResourceName: //compute.googleapis.com/projects/my-project/global/images/my-image
policy:
  attachedResource: //compute.googleapis.com/projects/my-project/global/images/my-image
  binding:
    members:
    - user: my-user@example.com
    role: roles/compute.admin
---
...

REST

Para determinar a qué recursos puede acceder una principal, usa el método analyzeIamPolicy de la API de Cloud Asset Inventory.

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

  • RESOURCE_TYPE: El tipo de recurso en el que deseas establecer el alcance de la búsqueda. Solo se analizarán las políticas de IAM permitidas para este recurso y sus descendientes. Usa los valores projects, folders o organizations.
  • RESOURCE_ID: Es el ID del proyecto, la carpeta o la organización de Google Cloud en el que deseas establecer el alcance de la búsqueda. Solo se analizarán las políticas de IAM permitidas para este recurso y sus descendientes. Los ID de proyecto son strings alfanuméricas, como my-project. Los ID de carpeta y organización son numéricos, como 123456789012.
  • PRINCIPAL: La principal cuyo acceso deseas analizar, con el formato PRINCIPAL_TYPE:ID (por ejemplo, user:my-user@example.com). Para obtener una lista completa de los tipos principales, consulta Identificadores principales.
  • PERMISSION_1, PERMISSION_2... PERMISSION_N: Los permisos que deseas verificar, por ejemplo, compute.instances.get. Si enumeras varios permisos, el Analizador de políticas verificará cualquiera de los permisos enumerados.

HTTP method and URL:

POST https://cloudasset.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID:analyzeIamPolicy

Cuerpo JSON de la solicitud:

{
  "analysisQuery": {
    "identitySelector": {
      "identity": "PRINCIPAL"
    },
    "accessSelector": {
      "permissions": [
        "PERMISSION_1",
        "PERMISSION_2",
        "PERMISSION_N"
      ]
    }
  }
}

Para enviar tu solicitud, expande una de estas opciones:

Recibes una respuesta JSON con resultados de análisis. En cada resultado de análisis, se describe una vinculación de función de IAM relevante y, luego, se enumeran los recursos, los accesos y las principales de esa vinculación. Si la vinculación de función es condicional, el resultado del análisis también incluye el resultado de la evaluación de la condición. Si no se pudo evaluar la condición, el resultado aparecerá como CONDITIONAL.

Los recursos en los que la principal especificada tiene uno de los permisos especificados se enumeran en los campos resources de la respuesta. En el siguiente ejemplo, se muestra un solo resultado de análisis con el campo resources destacado.

...
{
  "attachedResourceFullName": "//compute.googleapis.com/projects/my-project/global/images/my-image",
  "iamBinding": {
    "role": "roles/compute.admin",
    "members": [
      "user:my-user@example.com"
    ]
  },
  "accessControlLists": [
    {
      "resources": [
        {
          "fullResourceName": "//compute.googleapis.com/projects/my-project/global/images/my-image"
        }
      ],
      "accesses": [
        {
          "permission": "compute.instances.get"
        },
        {
          "permission": "compute.instances.start"
        }
      ]
    }
  ],
  "identityList": {
    "identities": [
      {
        "name": "user:my-user@example.com"
      }
    ]
  },
  "fullyExplored": true
},
...

Cómo determinar el acceso en un momento específico

Si se le proporciona el contexto suficiente, el Analizador de políticas puede analizar vinculaciones de funciones condicionales de IAM que solo otorgan acceso en momentos específicos. Estas condiciones se denominan condiciones de fecha y hora. Para que el analizador de políticas analice con precisión las vinculaciones de funciones con condiciones de fecha y hora, debes definir la hora de acceso en la solicitud.

gcloud

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

  • RESOURCE_TYPE: El tipo de recurso en el que deseas establecer el alcance de la búsqueda. Solo se analizarán las políticas de IAM permitidas para este recurso y sus descendientes. Usa los valores project, folder o organization.
  • RESOURCE_ID: Es el ID del proyecto, la carpeta o la organización de Google Cloud en el que deseas establecer el alcance de la búsqueda. Solo se analizarán las políticas de IAM permitidas para este recurso y sus descendientes. Los ID de proyecto son strings alfanuméricas, como my-project. Los ID de carpeta y organización son numéricos, como 123456789012.
  • PERMISSIONS: Opcional. Una lista separada por comas de los permisos que deseas verificar, por ejemplo, compute.instances.get,compute.instances.start Si enumeras varios permisos, el Analizador de políticas verificará cualquiera de los permisos enumerados.
  • FULL_RESOURCE_NAME: Opcional. El nombre completo del recurso para el que deseas analizar el acceso. Para obtener una lista de los formatos de nombres de recursos completos, consulta Formato de nombres de recursos.
  • PERMISSIONS: Opcional. Una lista separada por comas de los permisos que deseas verificar, por ejemplo, compute.instances.get,compute.instances.start Si enumeras varios permisos, el Analizador de políticas verificará cualquiera de los permisos enumerados.
  • ACCESS_TIME: Es la hora que deseas verificar. Esta hora debe ser posterior a la fecha actual. Usa una marca de tiempo en formato RFC 3339, por ejemplo, 2099-02-01T00:00:00Z.

Ejecuta el comando gcloud asset analiza-iam-policy:

Linux, macOS o Cloud Shell

gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID \
    --identity=PRINCIPAL \
    --full-resource-name=FULL_RESOURCE_NAME \
    --permissions='PERMISSIONS' \
    --access-time=ACCESS_TIME

Windows (PowerShell)

gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID `
    --identity=PRINCIPAL `
    --full-resource-name=FULL_RESOURCE_NAME `
    --permissions='PERMISSIONS' `
    --access-time=ACCESS_TIME

Windows (cmd.exe)

gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID ^
    --identity=PRINCIPAL ^
    --full-resource-name=FULL_RESOURCE_NAME ^
    --permissions='PERMISSIONS' ^
    --access-time=ACCESS_TIME

Recibirá una respuesta YAML con resultados del análisis. Cada resultado de análisis enumera un conjunto de accesos, identidades y recursos relevantes para tu consulta, seguido de la vinculación de función de IAM relacionada. Si la vinculación de función es condicional, el resultado del análisis también incluye el resultado de la evaluación de la condición. Si no se pudo evaluar la condición, el resultado será CONDITIONAL.

Cuando incluyes la hora de acceso en la solicitud, el Analizador de políticas puede evaluar las condiciones de fecha y hora. Si la condición se establece como falsa, esa función no se incluye en la respuesta. Si la condición se evalúa como verdadera, el resultado de la evaluación de la condición se muestra como TRUE.

...
---
ACLs:
- accesses:
  - permission: compute.instances.get
  - permission: compute.instances.start
  conditionEvaluationValue: 'TRUE'
  identities:
  - name: user:my-user@example.com
  resources:
  - fullResourceName: //cloudresourcemanager.googleapis.com/projects/my-project
policy:
  attachedResource: //cloudresourcemanager.googleapis.com/projects/my-project
  binding:
    condition:
      expression: request.time.getHours("America/Los_Angeles") >= 5
      title: No access before 5am PST
    members:
    - user: my-user@example.com
    role: roles/compute.admin
---
...

REST

Para determinar qué principales tendrán ciertos permisos en un recurso en un momento específico, usa el método analyzeIamPolicy de la API de Cloud Asset Inventory.

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

  • RESOURCE_TYPE: El tipo de recurso en el que deseas establecer el alcance de la búsqueda. Solo se analizarán las políticas de IAM permitidas para este recurso y sus descendientes. Usa los valores projects, folders o organizations.
  • RESOURCE_ID: Es el ID del proyecto, la carpeta o la organización de Google Cloud en el que deseas establecer el alcance de la búsqueda. Solo se analizarán las políticas de IAM permitidas para este recurso y sus descendientes. Los ID de proyecto son strings alfanuméricas, como my-project. Los ID de carpeta y organización son numéricos, como 123456789012.
  • PERMISSION_1, PERMISSION_2... PERMISSION_N: Opcional. Los permisos que deseas verificar, por ejemplo, compute.instances.get Si enumeras varios permisos, el Analizador de políticas verificará cualquiera de los permisos enumerados.
  • FULL_RESOURCE_NAME: Opcional. El nombre completo del recurso para el que deseas analizar el acceso. Para obtener una lista de los formatos de nombres de recursos completos, consulta Formato de nombres de recursos.
  • PERMISSION_1, PERMISSION_2... PERMISSION_N: Opcional. Los permisos que deseas verificar, por ejemplo, compute.instances.get Si enumeras varios permisos, el Analizador de políticas verificará cualquiera de los permisos enumerados.
  • ACCESS_TIME: Es la hora que deseas verificar. Esta hora debe ser posterior a la fecha actual. Usa una marca de tiempo en formato RFC 3339, por ejemplo, 2099-02-01T00:00:00Z.

HTTP method and URL:

POST https://cloudasset.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID:analyzeIamPolicy

Cuerpo JSON de la solicitud:

{
  "analysisQuery": {
    "identitySelector": {
      "identity": "PRINCIPAL"
    },
    "resourceSelector": {
      "fullResourceName": "FULL_RESOURCE_NAME"
    },
    "accessSelector": {
      "permissions": [
        "PERMISSION_1",
        "PERMISSION_2",
        "PERMISSION_N"
      ]
    },
    "conditionContext": {
      "accessTime": "ACCESS_TIME"
    }
  }
}

Para enviar tu solicitud, expande una de estas opciones:

Recibes una respuesta JSON con resultados de análisis. En cada resultado de análisis, se describe una vinculación de función de IAM relevante y, luego, se enumeran los recursos, los accesos y las principales de esa vinculación. Si la vinculación de función es condicional, el resultado del análisis también incluye el resultado de la evaluación de la condición. Si no se pudo evaluar la condición, el resultado aparecerá como CONDITIONAL.

Cuando incluyes la hora de acceso en la solicitud, el Analizador de políticas puede evaluar las condiciones de fecha y hora. Si la condición se establece como falsa, esa función no se incluye en la respuesta. Si la condición se evalúa como verdadera, el valor de evaluación de la condición en la respuesta del análisis es TRUE.

...
{
  "attachedResourceFullName": "//cloudresourcemanager.googleapis.com/projects/my-project",
  "iamBinding": {
    "role": "roles/compute.admin",
    "members": [
      "user:my-user@example.com"
    ],
    "condition": {
      "expression": "request.time.getHours(\"America/Los_Angeles\") \u003e= 5",
      "title": "No access before 5am PST"
    }
  },
  "accessControlLists": [
    {
      "resources": [
        {
          "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project"
        }
      ],
      "accesses": [
        {
          "permission": "compute.instances.get"
        },
        {
          "permission": "compute.instances.start"
        }
      ],
      "conditionEvaluation": {
        "evaluationValue": "TRUE"
      }
    }
  ],
  "identityList": {
    "identities": [
      {
        "name": "user:my-user@example.com"
      }
    ]
  },
  "fullyExplored": true
},
...

Habilitar opciones

Puedes habilitar las siguientes opciones para recibir resultados de consultas más detallados.

Console

Opción Descripción
Enumerar los recursos dentro de los recursos que coinciden con tu consulta Si habilitas esta opción, los resultados de la consulta enumeran hasta 1,000 recursos descendientes relevantes para cualquier recurso superior (proyectos, carpetas y organizaciones) en los resultados de la consulta.
Permite enumerar los usuarios individuales dentro de los grupos

Si habilitas esta opción, cualquier grupo en los resultados de la consulta se expandirá en miembros individuales. Si tienes suficientes permisos de grupo, los grupos anidados también se expandirán. La expansión se limita a un máximo de 1,000 miembros por grupo.

Esta opción solo está disponible si no especificas una principal en tu consulta.

Permite enumerar los permisos dentro de las funciones

Si habilitas esta opción, los resultados de la consulta mostrarán todos los permisos dentro de cada función además de la función en sí.

Esta opción solo está disponible si no especificas ningún permiso o rol en la consulta.

gcloud

En esta sección, se describen varias marcas comunes que puedes agregar cuando usas la CLI de gcloud para analizar las políticas de permiso. Para obtener una lista completa de las opciones, consulta Marcas opcionales.

Marca Descripción
--analyze-service-account-impersonation

Si esta opción está habilitada, el Analizador de políticas ejecuta consultas de análisis adicionales a fin de determinar quién puede actuar en nombre de las cuentas de servicio que tienen el acceso especificado a los recursos especificados. El Analizador de políticas ejecuta una consulta por cada cuenta de servicio en los resultados de las consultas. Estas consultas analizan quién tiene cualquiera de los siguientes permisos en la cuenta de servicio:

  • iam.serviceAccounts.actAs
  • iam.serviceAccounts.getAccessToken
  • iam.serviceAccounts.getOpenIdToken
  • iam.serviceAccounts.implicitDelegation
  • iam.serviceAccounts.signBlob
  • iam.serviceAccounts.signJwt

Esta operación es muy costosa, ya que ejecuta automáticamente muchas consultas. Te recomendamos que exportes a BigQuery o exportes a Cloud Storage con analyze-iam-policy-longrunning en lugar de analyze-iam-policy.

--expand-groups

Si habilitas esta opción, cualquier grupo en los resultados de la consulta se expandirá en miembros individuales. Si tienes suficientes permisos de grupo, los grupos anidados también se expandirán. La expansión se limita a un máximo de 1,000 miembros por grupo.

Esta opción solo será efectiva si no especificas una principal en tu consulta.

--expand-resources Si habilitas esta opción, los resultados de la consulta enumeran hasta 1,000 recursos descendientes relevantes para cualquier recurso superior (proyectos, carpetas y organizaciones) en los resultados de la consulta.
--expand-roles

Si habilitas esta opción, los resultados de la consulta mostrarán todos los permisos dentro de cada función además de la función en sí.

Esta opción solo está disponible si no especificas ningún permiso o rol en la consulta.

--output-group-edges Si habilitas esta opción, los resultados de la consulta mostrarán las relaciones de membresía relevantes entre grupos.
--output-resource-edges Si habilitas esta opción, los resultados de la consulta mostrarán las relaciones superiores y secundarias relevantes entre los recursos.

REST

Para habilitar cualquier opción, primero agrega un campo options a tu consulta de análisis. Por ejemplo:

{
  "analysisQuery": {
    "resourceSelector": {
      "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project"
    },
    "accessSelector": {
      "permissions": [
        "iam.roles.get",
        "iam.roles.list"
      ]
   },
   "options": {
     OPTIONS
   }
  }
}

Reemplaza OPTIONS por las opciones que deseas habilitar, en el formato "OPTION": true. En la siguiente tabla, se describen las opciones disponibles:

Opción Descripción
analyzeServiceAccountImpersonation

Si esta opción está habilitada, el Analizador de políticas ejecuta consultas de análisis adicionales a fin de determinar quién puede actuar en nombre de las cuentas de servicio que tienen el acceso especificado a los recursos especificados. El Analizador de políticas ejecuta una consulta por cada cuenta de servicio en los resultados de las consultas. Estas consultas analizan quién tiene cualquiera de los siguientes permisos en la cuenta de servicio:

  • iam.serviceAccounts.actAs
  • iam.serviceAccounts.getAccessToken
  • iam.serviceAccounts.getOpenIdToken
  • iam.serviceAccounts.implicitDelegation
  • iam.serviceAccounts.signBlob
  • iam.serviceAccounts.signJwt

Esta operación es muy costosa, ya que ejecuta automáticamente muchas consultas. Te recomendamos que exportes a BigQuery o exportes a Cloud Storage con AnalyzeIamPolicyLongrunning en lugar de AnalyzeIamPolicy.

expandGroups

Si habilitas esta opción, cualquier grupo en los resultados de la consulta se expandirá en miembros individuales. Si tienes suficientes permisos de grupo, los grupos anidados también se expandirán. La expansión se limita a un máximo de 1,000 miembros por grupo.

Esta opción solo será efectiva si no especificas una principal en tu consulta.

expandResources Si habilitas esta opción, los resultados de la consulta enumeran hasta 1,000 recursos descendientes relevantes para cualquier recurso superior (proyectos, carpetas y organizaciones) en los resultados de la consulta.
expandRoles

Si habilitas esta opción, los resultados de la consulta mostrarán todos los permisos dentro de cada función además de la función en sí.

Esta opción solo está disponible si no especificas ningún permiso o rol en la consulta.

outputGroupEdges Si habilitas esta opción, los resultados de la consulta mostrarán las relaciones de membresía relevantes entre grupos.
outputResourceEdges Si habilitas esta opción, los resultados de la consulta mostrarán las relaciones superiores y secundarias relevantes entre los recursos.

¿Qué sigue?