Visualiza políticas de IAM efectivas

En este tema, se muestra cómo ver las políticas eficaces de Identity and Access Management (IAM) en un recurso determinado.

En IAM, la política vigente describe cómo se heredan todas las políticas superiores y principales de la jerarquía de recursos para un recurso.

Alcance y permisos

Cuando solicitas políticas de IAM vigentes, debes especificar un alcance. Puede ser una organización, una carpeta o un proyecto. Se muestran todas las políticas de IAM configuradas en ese alcance o bajo ese alcance. El alcance de la solicitud no tiene que ser el mismo que el proyecto habilitado para la API de Cloud Asset. Además, el proyecto habilitado y el alcance de la solicitud requieren permisos diferentes.

Tipos de políticas admitidas

Las políticas de IAM vigentes solo son compatibles con las políticas de permisos de IAM. No admite las siguientes formas de control de acceso:

Antes de comenzar

Antes de comenzar, completa los pasos que se indican a continuación.

  1. Habilitar la API de Cloud Asset Inventory para tu proyecto

    Habilitar la API de Cloud Asset Inventory

    Este proyecto no tiene que ser el mismo que el alcance de tus solicitudes. Obtén más información sobre la configuración de un proyecto cuando se habilita un servicio.

  2. Instala el SDK de Google Cloud.

  3. Opcional: Para llamar directamente a la API de Cloud Asset Inventory, confirma que tienes acceso al comando curl.

  4. Establece permisos.

    1. Configura permisos para la API de Cloud Asset.

    2. Habilita los siguientes permisos para el alcance de tu solicitud.

      • cloudasset.assets.analyzeIamPolicy

      • cloudasset.assets.searchAllResources

      • cloudasset.assets.searchAllIamPolicies

      Estos permisos están incluidos en las siguientes funciones predefinidas:

      • Propietario de Cloud Asset (roles/cloudasset.owner)

      • Visualizador de Cloud Asset (roles/cloudasset.viewer)

      Para obtener más información sobre los permisos y las funciones de la API de Cloud Asset, consulta Control de acceso.

Obtén políticas de IAM eficaces

gcloud

Para obtener las políticas de IAM eficaces en un recurso, puedes llamar a BatchGetEffectiveIamPolicies con el comando gcloud asset get-effective-iam-policy. Debes ejecutar la versión 399.0.0 de Google Cloud CLI o una más reciente.

gcloud asset get-effective-iam-policy \
    --scope=SCOPE \
    --names=ASSET_NAME_1,ASSET_NAME_2,...

Ingresa los siguientes valores:

  • SCOPE: El alcance puede ser un proyecto, una carpeta o una organización.

    Los valores permitidos son los siguientes:

    • projects/PROJECT_ID

    • projects/PROJECT_NUMBER

      Cómo encontrar un número de proyecto de Google Cloud

      Consola

      Para encontrar un número de proyecto de Google Cloud, completa los siguientes pasos:

      1. Ve a la página Panel en la consola de Google Cloud.

        Ir al panel

      2. Haz clic en el cuadro de cambio en la barra de menú.
      3. Elige tu organización en el cuadro Seleccionar una opción y, luego, busca el nombre del proyecto.
      4. Haz clic en el nombre del proyecto para cambiarlo. El número de proyecto se muestra en la tarjeta Información del proyecto.

      gcloud CLI

      Puedes recuperar el número de proyecto de Google Cloud con el siguiente comando:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"

    • folders/FOLDER_ID

      Cómo encontrar un ID de carpeta de Google Cloud

      Consola

      Para encontrar un ID de carpeta de Google Cloud, completa los siguientes pasos:

      1. Ve a la consola de Google Cloud.

        Ir a la consola de Google Cloud

      2. Haz clic en el cuadro de cambio en la barra de menú.
      3. Haz clic en el cuadro Seleccionar una opción y, luego, selecciona tu organización.
      4. Busca el nombre de la carpeta. El ID de la carpeta se muestra junto al nombre de la carpeta.

      gcloud CLI

      Puedes recuperar un ID de carpeta de Google Cloud que se encuentra a nivel de la organización con el siguiente comando:

      gcloud resource-manager folders list \
          --organization=$(gcloud organizations describe ORGANIZATION_NAME \
            --format="value(name.segment(1))") \
          --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
          --format="value(ID)"

      En el ejemplo anterior, TOP_LEVEL_FOLDER_NAME puede ser una coincidencia completa o parcial de strings. Quita la opción --format para ver más información sobre las carpetas encontradas.

      Para obtener el ID de una carpeta dentro de otra, enumera las subcarpetas:

      gcloud resource-manager folders list --folder=FOLDER_ID

    • organizations/ORGANIZATION_ID

      Cómo encontrar un ID de organización de Google Cloud

      Consola

      Para encontrar un ID de organización de Google Cloud, completa los siguientes pasos:

      1. Ve a la consola de Google Cloud.

        Ir a la consola de Google Cloud

      2. Haz clic en el cuadro de cambio en la barra de menú.
      3. Haz clic en el cuadro Seleccionar una opción y, luego, selecciona tu organización.
      4. Haga clic en la pestaña Todos. El ID de la organización se muestra junto al nombre de la organización.

      gcloud CLI

      Puedes recuperar el ID de una organización de Google Cloud con el siguiente comando:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"

  • ASSET_NAME: Es una lista separada por comas de los nombres completos de los elementos para los que se recuperarán las políticas de IAM vigentes.

    Puedes recuperar políticas para un máximo de 20 elementos en un lote.

Las siguientes muestras de código son ejemplos de comandos de la CLI de gcloud:

  • Para un ID de organización de 123456:

    gcloud asset get-effective-iam-policy \
        --scope=organizations/123456 \
        --names=//cloudresourcemanager.googleapis.com/organizations/123456
    
  • Para un ID de carpeta de 1234567, haz lo siguiente:

    gcloud asset get-effective-iam-policy \
        --scope=folders/1234567 \
        --names=//cloudresourcemanager.googleapis.com/folders/1234567
    
  • Para dos recursos de instancia de Cloud SQL en un proyecto llamado my-project:

    gcloud asset get-effective-iam-policy \
        --scope=projects/my-project \
        --names=//cloudsql.googleapis.com/projects/my-project/instances/instance1,//cloudsql.googleapis.com/projects/my-project/instances/instance2
    

REST

Para obtener políticas de IAM eficaces en un recurso con la API de Cloud Asset Inventory, usa el siguiente comando de curl:

curl -X POST \
     -H "X-HTTP-Method-Override: GET" \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json" \
     -d '{
          "names": [
            "ASSET_NAME_1",
            "ASSET_NAME_2",
            "..."
          ]
         }' \
     https://cloudasset.googleapis.com/v1/SCOPE/effectiveIamPolicies:batchGet

Ingresa los siguientes valores:

  • ASSET_NAME: Es una lista separada por comas de los nombres completos de los elementos para los que se recuperarán las políticas de IAM vigentes.

    Puedes recuperar políticas para un máximo de 20 elementos en un lote.

  • SCOPE: El alcance puede ser un proyecto, una carpeta o una organización.

    Los valores permitidos son los siguientes:

    • projects/PROJECT_ID

    • projects/PROJECT_NUMBER

      Cómo encontrar un número de proyecto de Google Cloud

      Consola

      Para encontrar un número de proyecto de Google Cloud, completa los siguientes pasos:

      1. Ve a la página Panel en la consola de Google Cloud.

        Ir al panel

      2. Haz clic en el cuadro de cambio en la barra de menú.
      3. Elige tu organización en el cuadro Seleccionar una opción y, luego, busca el nombre del proyecto.
      4. Haz clic en el nombre del proyecto para cambiarlo. El número de proyecto se muestra en la tarjeta Información del proyecto.

      gcloud CLI

      Puedes recuperar el número de proyecto de Google Cloud con el siguiente comando:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"

    • folders/FOLDER_ID

      Cómo encontrar un ID de carpeta de Google Cloud

      Consola

      Para encontrar un ID de carpeta de Google Cloud, completa los siguientes pasos:

      1. Ve a la consola de Google Cloud.

        Ir a la consola de Google Cloud

      2. Haz clic en el cuadro de cambio en la barra de menú.
      3. Haz clic en el cuadro Seleccionar una opción y, luego, selecciona tu organización.
      4. Busca el nombre de la carpeta. El ID de la carpeta se muestra junto al nombre de la carpeta.

      gcloud CLI

      Puedes recuperar un ID de carpeta de Google Cloud que se encuentra a nivel de la organización con el siguiente comando:

      gcloud resource-manager folders list \
          --organization=$(gcloud organizations describe ORGANIZATION_NAME \
            --format="value(name.segment(1))") \
          --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
          --format="value(ID)"

      En el ejemplo anterior, TOP_LEVEL_FOLDER_NAME puede ser una coincidencia completa o parcial de strings. Quita la opción --format para ver más información sobre las carpetas encontradas.

      Para obtener el ID de una carpeta dentro de otra, enumera las subcarpetas:

      gcloud resource-manager folders list --folder=FOLDER_ID

    • organizations/ORGANIZATION_ID

      Cómo encontrar un ID de organización de Google Cloud

      Consola

      Para encontrar un ID de organización de Google Cloud, completa los siguientes pasos:

      1. Ve a la consola de Google Cloud.

        Ir a la consola de Google Cloud

      2. Haz clic en el cuadro de cambio en la barra de menú.
      3. Haz clic en el cuadro Seleccionar una opción y, luego, selecciona tu organización.
      4. Haga clic en la pestaña Todos. El ID de la organización se muestra junto al nombre de la organización.

      gcloud CLI

      Puedes recuperar el ID de una organización de Google Cloud con el siguiente comando:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"