Ver las políticas de gestión de identidades y accesos vigentes

En Gestión de identidades y accesos, las políticas efectivas describen cómo se heredan todas las políticas de los elementos superiores y antecesores de un recurso en la jerarquía de recursos.

Solo se admiten políticas de permiso para la recuperación a través de Cloud Asset Inventory. No se admiten las siguientes formas de control de acceso:

Antes de empezar

  1. Habilita la API Cloud Asset Inventory en el proyecto desde el que ejecutas los comandos de Cloud Asset Inventory.

    Habilitar la API Cloud Asset Inventory

  2. Asegúrate de que tu cuenta tiene el rol correcto para llamar a la API Cloud Asset Inventory. Para ver los permisos individuales de cada tipo de llamada, consulta la sección Permisos.

Ver las políticas vigentes en los recursos

gcloud

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

Proporciona los siguientes valores:

  • SCOPE_PATH: usa uno de los siguientes valores:

    Los valores permitidos son:

    • projects/PROJECT_ID, donde PROJECT_ID es el ID del proyecto de nivel superior desde el que se deben comprobar las políticas de gestión de identidades y accesos efectivas.
    • projects/PROJECT_NUMBER, donde PROJECT_NUMBER es el número del proyecto de nivel superior desde el que se deben comprobar las políticas de gestión de identidades y accesos efectivas.

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

      Google Cloud consola

      Para encontrar un número de proyecto de Google Cloud , sigue estos pasos:

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

        Ir a Bienvenida

      2. En la barra de menús, haz clic en el cuadro de lista del selector.
      3. Selecciona tu organización en el cuadro de lista y, a continuación, busca el nombre de tu proyecto. El nombre, el número y el ID del proyecto se muestran cerca del encabezado Bienvenido.

        Se muestran hasta 4000 recursos. Si no ves el proyecto que buscas, ve a la página Gestionar recursos y filtra la lista por el nombre de ese proyecto.

      CLI de gcloud

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

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"
    • folders/FOLDER_ID, donde FOLDER_ID es el ID de la carpeta de nivel superior desde la que se deben comprobar las políticas de gestión de identidades y accesos efectivas.

      Cómo encontrar el ID de una Google Cloud carpeta

      Google Cloud consola

      Para encontrar el ID de una carpeta de Google Cloud , sigue estos pasos:

      1. Ve a la Google Cloud consola.

        Ve a la Google Cloud consola

      2. En la barra de menús, haz clic en el cuadro de lista del selector.
      3. Selecciona tu organización en el cuadro de lista.
      4. Busca el nombre de la carpeta. El ID de la carpeta se muestra junto al nombre de la carpeta.

      CLI de gcloud

      Puedes obtener el ID de una Google Cloud carpeta que se encuentre a nivel de 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)"

      Donde TOP_LEVEL_FOLDER_NAME es una coincidencia parcial o completa de la cadena del nombre de la carpeta. Quita la marca --format para ver más información sobre las carpetas encontradas.

      El comando anterior no devuelve los IDs de las subcarpetas de las carpetas. Para ello, ejecuta el siguiente comando con el ID de una carpeta de nivel superior:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organizations/ORGANIZATION_ID, donde ORGANIZATION_ID es el ID de la organización de nivel superior desde la que se deben comprobar las políticas de gestión de identidades y accesos efectivas.

      Cómo encontrar el ID de una Google Cloud organización

      Google Cloud consola

      Para encontrar el ID de una organización de Google Cloud , sigue estos pasos:

      1. Ve a la Google Cloud consola.

        Ve a la Google Cloud consola

      2. En la barra de menús, haz clic en el cuadro de lista del selector.
      3. Selecciona tu organización en el cuadro de lista.
      4. Haz clic en la pestaña Todas. El ID de la organización se muestra junto al nombre de la organización.

      CLI de gcloud

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

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • ASSET_NAME_#: lista separada por comas de nombres completos de recursos.

Puedes recuperar las políticas de un máximo de 20 recursos en un lote.

Consulta la referencia de la CLI de gcloud para ver todas las opciones.

Ejemplo

Ejecuta el siguiente comando para ver las políticas de IAM efectivas de la instancia de Compute Engine my-instance que se han heredado de la organización con el ID my-organization-id.

Cómo encontrar el ID de una Google Cloud organización

Google Cloud consola

Para encontrar el ID de una organización de Google Cloud , sigue estos pasos:

  1. Ve a la Google Cloud consola.

    Ve a la Google Cloud consola

  2. En la barra de menús, haz clic en el cuadro de lista del selector.
  3. Selecciona tu organización en el cuadro de lista.
  4. Haz clic en la pestaña Todas. El ID de la organización se muestra junto al nombre de la organización.

CLI de gcloud

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

gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
gcloud asset get-effective-iam-policy \
    --scope=organizations/my-organization-id \
    --names=//compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/my-instance

Respuesta de ejemplo

policyResults:
- fullResourceName: //compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/my-instance
  policies:
  - attachedResource: //cloudresourcemanager.googleapis.com/projects/my-project
    policy:
      bindings:
      - members:
        - user:alex@example.com
        - user:bola@example.com
        role: roles/cloudkms.admin
      - members:
        - serviceAccount:000000000000-compute@developer.gserviceaccount.com
        role: roles/editor
  - attachedResource: //cloudresourcemanager.googleapis.com/folders/000000000000
    policy:
      bindings:
      - members:
        - user:cruz@example.com
        role: roles/resourcemanager.folderAdmin
      - members:
        - user:dani@example.com
        role: roles/resourcemanager.folderEditor
  - attachedResource: //cloudresourcemanager.googleapis.com/organizations/0000000000000
    policy:
      bindings:
      - members:
        - user:hao@example.com
        role: organizations/0000000000000/roles/CustomProjectAdmin
      - members:
        - serviceAccount:000000000000@cloudservices.gserviceaccount.com
        - user:ira@example.com
        - user:jie@example.com
        role: roles/accesscontextmanager.policyAdmin

REST

Método HTTP y URL:

POST https://cloudasset.googleapis.com/v1/SCOPE_PATH/effectiveIamPolicies:batchGet

Cuerpo JSON de la solicitud:

{
  "names": [
    "ASSET_NAME_1",
    "ASSET_NAME_2",
    "..."
  ]
}

Proporciona los siguientes valores:

  • SCOPE_PATH: usa uno de los siguientes valores:

    Los valores permitidos son:

    • projects/PROJECT_ID, donde PROJECT_ID es el ID del proyecto de nivel superior desde el que se deben comprobar las políticas de gestión de identidades y accesos efectivas.
    • projects/PROJECT_NUMBER, donde PROJECT_NUMBER es el número del proyecto de nivel superior desde el que se deben comprobar las políticas de gestión de identidades y accesos efectivas.

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

      Google Cloud consola

      Para encontrar un número de proyecto de Google Cloud , sigue estos pasos:

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

        Ir a Bienvenida

      2. En la barra de menús, haz clic en el cuadro de lista del selector.
      3. Selecciona tu organización en el cuadro de lista y, a continuación, busca el nombre de tu proyecto. El nombre, el número y el ID del proyecto se muestran cerca del encabezado Bienvenido.

        Se muestran hasta 4000 recursos. Si no ves el proyecto que buscas, ve a la página Gestionar recursos y filtra la lista por el nombre de ese proyecto.

      CLI de gcloud

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

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"
    • folders/FOLDER_ID, donde FOLDER_ID es el ID de la carpeta de nivel superior desde la que se deben comprobar las políticas de gestión de identidades y accesos efectivas.

      Cómo encontrar el ID de una Google Cloud carpeta

      Google Cloud consola

      Para encontrar el ID de una carpeta de Google Cloud , sigue estos pasos:

      1. Ve a la Google Cloud consola.

        Ve a la Google Cloud consola

      2. En la barra de menús, haz clic en el cuadro de lista del selector.
      3. Selecciona tu organización en el cuadro de lista.
      4. Busca el nombre de la carpeta. El ID de la carpeta se muestra junto al nombre de la carpeta.

      CLI de gcloud

      Puedes obtener el ID de una Google Cloud carpeta que se encuentre a nivel de 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)"

      Donde TOP_LEVEL_FOLDER_NAME es una coincidencia parcial o completa de la cadena del nombre de la carpeta. Quita la marca --format para ver más información sobre las carpetas encontradas.

      El comando anterior no devuelve los IDs de las subcarpetas de las carpetas. Para ello, ejecuta el siguiente comando con el ID de una carpeta de nivel superior:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organizations/ORGANIZATION_ID, donde ORGANIZATION_ID es el ID de la organización de nivel superior desde la que se deben comprobar las políticas de gestión de identidades y accesos efectivas.

      Cómo encontrar el ID de una Google Cloud organización

      Google Cloud consola

      Para encontrar el ID de una organización de Google Cloud , sigue estos pasos:

      1. Ve a la Google Cloud consola.

        Ve a la Google Cloud consola

      2. En la barra de menús, haz clic en el cuadro de lista del selector.
      3. Selecciona tu organización en el cuadro de lista.
      4. Haz clic en la pestaña Todas. El ID de la organización se muestra junto al nombre de la organización.

      CLI de gcloud

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

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • ASSET_NAME_#: array de nombres completos de recursos.

Puedes recuperar las políticas de un máximo de 20 recursos en un lote.

Consulta la referencia de REST para ver todas las opciones.

Ejemplos de comandos

Ejecuta uno de los siguientes comandos para ver las políticas de gestión de identidades y accesos efectivas de la instancia de my-instanceCompute Engine que se han heredado de la organización con el ID my-organization-id.

Cómo encontrar el ID de una Google Cloud organización

Google Cloud consola

Para encontrar el ID de una organización de Google Cloud , sigue estos pasos:

  1. Ve a la Google Cloud consola.

    Ve a la Google Cloud consola

  2. En la barra de menús, haz clic en el cuadro de lista del selector.
  3. Selecciona tu organización en el cuadro de lista.
  4. Haz clic en la pestaña Todas. El ID de la organización se muestra junto al nombre de la organización.

CLI de gcloud

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

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

curl (Linux, macOS o Cloud Shell)

curl -X POST \
     -H "X-HTTP-Method-Override: GET" \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json; charset=utf-8" \
     -d '{
            "names": [
              "//compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/my-instance"
            ]
          }' \
     https://cloudasset.googleapis.com/v1/organizations/my-organization-id/effectiveIamPolicies:batchGet

PowerShell (Windows)

$cred = gcloud auth print-access-token

$headers = @{ 
  "X-HTTP-Method-Override" = "GET";
  "Authorization" = "Bearer $cred"
}


$body = @"
{
  "names": [
    "//compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/my-instance"
  ]
}
"@

Invoke-WebRequest `
  -Method POST `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Body $body `
  -Uri "https://cloudasset.googleapis.com/v1/organizations/my-organization-id/effectiveIamPolicies:batchGet" | Select-Object -Expand Content

Respuesta de ejemplo

{
  "policyResults": [
    {
      "fullResourceName": "//compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/instance-1",
      "policies": [
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/projects/my-project",
          "policy": {
            "bindings": [
              {
                "role": "roles/cloudkms.admin",
                "members": [
                  "user:alex@example.com",
                  "user:bola@example.com"
                ]
              },
              {
                "role": "roles/editor",
                "members": [
                  "serviceAccount:000000000000-compute@developer.gserviceaccount.com"
                ]
              }
            ]
          }
        },
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/folders/000000000000",
          "policy": {
            "bindings": [
              {
                "role": "roles/resourcemanager.folderAdmin",
                "members": [
                  "user:cruz@example.com"
                ]
              },
              {
                "role": "roles/resourcemanager.folderEditor",
                "members": [
                  "user:dani@example.com"
                ]
              }
            ]
          }
        },
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/organizations/000000000000",
          "policy": {
            "bindings": [
              {
                "role": "organizations/1060291660910/roles/CustomProjectAdmin",
                "members": [
                  "user:hao@example.com"
                ]
              },
              {
                "role": "roles/accesscontextmanager.policyAdmin",
                "members": [
                  "serviceAccount:000000000000@cloudservices.gserviceaccount.com",
                  "user:ira@example.com",
                  "user:jie@example.com"
                ]
              }
            ]
          }
        }
      ]
    }
  ]
}