Analiza las políticas de la organización

En esta página, se incluye información para analizar la configuración de las políticas de la organización y ver qué recursos están cubiertos por cada política de la organización. Con el Analizador de políticas para la política de la organización, puedes crear una consulta de análisis para obtener información sobre las políticas de la organización personalizadas y predefinidas.

Una consulta de análisis se compone de un permiso y una restricción.

  • Constraint: Especifica el nombre del recurso de una restricción.
  • Alcance: Especifica una organización para delimitar el análisis. En el análisis, se incluyen todas las políticas de la organización con la restricción especificada definida en este permiso.

  • Para obtener más información sobre las políticas de la organización, consulta la Introducción al Servicio de políticas de la organización.

  • Para obtener más información sobre cómo crear restricciones personalizadas, consulta Crea y administra restricciones personalizadas.

  • Para obtener más información sobre las restricciones administradas, consulta Usa restricciones.

Antes de comenzar

Roles y permisos requeridos

Para obtener los permisos que necesitas para ejecutar un análisis de políticas de la organización, pídele a tu administrador que te otorgue los siguientes roles de IAM en el recurso de organización en el que deseas realizar el análisis:

Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

Estos roles predefinidos contienen los permisos necesarios para ejecutar un análisis de políticas de la organización. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:

Permisos necesarios

Se requieren los siguientes permisos para ejecutar un análisis de políticas de la organización:

  • Para realizar el análisis, sigue estos pasos:
    • cloudasset.assets.analyzeOrgPolicy
    • cloudasset.assets.searchAllResources
    • cloudasset.assets.searchAllIamPolicies
  • Para ver las restricciones personalizadas y administradas, haz lo siguiente: orgpolicy.customConstraints.get

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

Precios y cuota

El Analizador de políticas para la política de la organización a gran escala (más de 20 consultas por organización por día) y las visualizaciones de herencia solo están disponibles para los clientes con activaciones de Security Command Center a nivel de la organización.

La cuota del Analizador de políticas para la política de la organización se comparte entre todas las herramientas del Analizador de políticas. Para obtener más información, consulta Preguntas sobre facturación.

Analiza las políticas configuradas

Una política de la organización se basa en una restricción y en condiciones opcionales en las que se aplica esa restricción. Puedes usar el Analizador de políticas para mostrar una lista de políticas de la organización con una restricción en particular y los recursos a los que se adjuntan esas políticas.

Para cada política de la organización que se detecta en el alcance de la consulta, el Analizador de políticas devuelve una entrada de resultado. Una entrada de resultado contiene los siguientes campos:

  • consolidatedPolicy: Es el recurso al que se adjunta la política de la organización y la aplicación de la política vigente en ese recurso con respecto a las reglas de evaluación de la jerarquía.

  • project: Es el ID del recurso del proyecto al que pertenece esta política consolidada.

  • folders: Es el ID de los recursos de carpeta que son antecesores del recurso al que se adjunta la política de la organización.

  • organization: Es el ID del recurso de organización que es el antecesor del recurso al que se adjunta la política de la organización.

  • policyBundle: Es la política de la organización configurada completa adjunta al recurso anterior y las políticas de la organización definidas en sus ancestros en la jerarquía de recursos.

Si tus recursos están protegidos por un perímetro de servicio de los Controles del servicio de VPC, debes crear una regla de salida en el perímetro de tu recurso de organización que permita el acceso al servicio cloudasset.googleapis.com y al método google.cloud.asset.v1.AssetService.SearchAllResources. Si no tienes una regla de salida, la solicitud fallará y mostrará un error NETWORK_NOT_IN_SAME_SERVICE_PERIMETER. Para obtener más información, consulta Cómo depurar solicitudes bloqueadas por los Controles del servicio de VPC.

Console

  1. En la consola de Google Cloud , ve a la página Analizador de políticas.

    Ir al Analizador de políticas

  2. En la sección Analiza la política de la organización, busca el panel etiquetado como ¿Dónde se configuran las políticas de la organización específicas? y haz clic en Crear consulta en ese panel.

  3. En el cuadro Selecciona la organización de la consulta, selecciona la organización para la que deseas analizar las políticas de la organización.

  4. Selecciona el tipo de restricción que deseas analizar. Para una restricción predefinida o administrada, selecciona Restricción integrada. Para una restricción personalizada, selecciona Restricción personalizada.

  5. Ingresa el nombre de la restricción que deseas analizar. El prefijo del tipo de restricción que analizas ya está incluido. Por ejemplo, para la restricción predefinida de dominio, ingresa iam.allowedPolicyMemberDomains; para la restricción administrada de creación de cuentas de servicio, ingresa iam.managed.disableServiceAccountKeyCreation; y, para una restricción personalizada, ingresa su nombre, como disableGkeAutoUpgrade.

  6. Haz clic en Analizar y, luego, en Ejecutar consulta. La página de informes muestra los parámetros de consulta que ingresaste y una tabla de resultados de todos los recursos a los que se aplica directamente esta restricción.

  7. Para guardar esta búsqueda y volver a verla más tarde, haz clic en Copiar la URL de la búsqueda. Para ver esta consulta, navega a la URL generada.

  8. Para visualizar la herencia de la restricción que analizaste, selecciona al menos un recurso de la lista y, luego, haz clic en Ver herencia. También puedes ir directamente a la vista de visualización cuando crees tu consulta de análisis. Para ello, haz clic en Analizar y, luego, en Visualizar. Consulta Visualiza la herencia para obtener más información.

gcloud

Para obtener un análisis de cómo se aplica una restricción de política de la organización dentro de una organización, usa el comando gcloud asset analyze-org-policies:

gcloud asset analyze-org-policies \
    --constraint=CONSTRAINT_NAME  \
    --scope=organizations/ORGANIZATION_ID \
    --limit=LIMIT_POLICIES \
    --filter=FILTER_QUERY

Reemplaza lo siguiente:

  • CONSTRAINT_NAME: Es el nombre de la restricción de la política de la organización que deseas analizar. Para obtener una lista de las restricciones, consulta Restricciones de las políticas de la organización.

  • ORGANIZATION_ID: Es el ID de tu recurso de organización. Para obtener más información sobre cómo encontrar el ID de tu organización, consulta Crea y administra organizaciones.

  • LIMIT_POLICIES: Es la cantidad de entradas de resultados que deseas ver. Para ver entradas ilimitadas, ingresa unlimited.

  • FILTER_QUERY: Es una consulta de filtro para ver solo las políticas que coinciden con tu expresión de filtrado. El único campo disponible para filtrar es consolidated_policy.attached_resource. Por ejemplo, consolidated_policy.attached_resource="//cloudresourcemanager.googleapis.com/projects/1234567890" solo devolvería las políticas adjuntas al proyecto con el ID del proyecto 1234567890.

La respuesta en YAML es similar a la siguiente:

Ejemplo de respuesta en YAML

---
consolidatedPolicy:
  appliedResource: //cloudresourcemanager.googleapis.com/projects/opa-test-project-1-364621
  attachedResource: //cloudresourcemanager.googleapis.com/projects/opa-test-project-1-364621
  rules:
  - enforce: true
policyBundle:
- appliedResource: //cloudresourcemanager.googleapis.com/projects/opa-test-project-1-364621
  attachedResource: //cloudresourcemanager.googleapis.com/projects/opa-test-project-1-364621
  reset: true
- appliedResource: //cloudresourcemanager.googleapis.com/organizations/474566717491
  rules:
  - enforce: true
---
consolidatedPolicy:
  appliedResource: //cloudresourcemanager.googleapis.com/organizations/474566717491
  rules:
  - enforce: true
policyBundle:
- appliedResource: //cloudresourcemanager.googleapis.com/organizations/474566717491
  rules:
  - enforce: true

REST

Para obtener un análisis de cómo se aplica una restricción de política de la organización dentro de una organización, usa el método analyzeOrgPolicies de la API de Cloud Asset.

Método HTTP y URL:

GET https://cloudasset.googleapis.com/v1/organizations/ORGANIZATION_ID:analyzeOrgPolicies

Cuerpo JSON de la solicitud:

JSON_REQUEST="{
  'constraint': 'CONSTRAINT_NAME',
  'filter': 'FILTER_QUERY',
  'page_size': PAGE_SIZE,
  'page_token': PAGE_TOKEN
}"

Reemplaza lo siguiente:

  • ORGANIZATION_ID: Es el ID de tu recurso de organización. Para obtener más información sobre cómo encontrar el ID de tu organización, consulta Crea y administra organizaciones.

  • CONSTRAINT_NAME: Es el nombre de la restricción de la política de la organización que deseas analizar. Para obtener una lista de las restricciones, consulta Restricciones de las políticas de la organización.

  • FILTER_QUERY: Es una consulta de filtro para ver solo las políticas que coinciden con tu expresión de filtrado. El único campo disponible para filtrar es consolidated_policy.attached_resource. Por ejemplo, consolidated_policy.attached_resource="//cloudresourcemanager.googleapis.com/projects/1234567890" solo devolvería las políticas adjuntas al proyecto con el ID del proyecto 1234567890.

  • PAGE_SIZE: Es la cantidad de entradas de resultados por página que deseas ver. Para ver entradas ilimitadas, ingresa unlimited. Una solicitud realizada con esta marca establecida devuelve un valor nextPageToken si la cantidad total de entradas de resultados es mayor que PAGE_SIZE.

  • PAGE_TOKEN: Solo se debe establecer en las solicitudes posteriores a la primera que incluya la marca page_size. Puedes usar los valores de nextPageToken que recibiste de respuestas anteriores para devolver una página de resultados específica.

La respuesta JSON es similar a la siguiente:

Ejemplo de respuesta JSON

{
  "orgPolicyResults": [
    {
      "consolidatedPolicy": {
        "attachedResource": "//cloudresourcemanager.googleapis.com/folders/123456789012",
        "rules": [
          {
            "values": {
              "allowedValues": [
                "C0265whk2"
              ]
            }
          },
          {
            "values": {
              "allowedValues": [
                "C03kd36xr"
              ]
            }
          }
        ],
        "appliedResource": "//cloudresourcemanager.googleapis.com/folders/123456789012"
      },
      "policyBundle": [
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/folders/123456789012",
          "rules": [
            {
              "values": {
                "allowedValues": [
                  "C03kd36xr"
                ]
              }
            }
          ],
          "inheritFromParent": true,
          "appliedResource": "//cloudresourcemanager.googleapis.com/folders/123456789012"
        },
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/folders/234567890123",
          "rules": [
            {
              "values": {
                "allowedValues": [
                  "C0265whk2"
                ]
              }
            }
          ],
          "appliedResource": "//cloudresourcemanager.googleapis.com/folders/234567890123"
        }
      ]
    },
    {
      "consolidatedPolicy": {
        "attachedResource": "//cloudresourcemanager.googleapis.com/folders/234567890123",
        "rules": [
          {
            "values": {
              "allowedValues": [
                "C0265whk2"
              ]
            }
          }
        ],
        "appliedResource": "//cloudresourcemanager.googleapis.com/folders/234567890123"
      },
      "policyBundle": [
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/folders/234567890123",
          "rules": [
            {
              "values": {
                "allowedValues": [
                  "C0265whk2"
                ]
              }
            }
          ],
          "appliedResource": "//cloudresourcemanager.googleapis.com/folders/234567890123"
        }
      ]
    }
  ]
  "constraint": {
    "googleDefinedConstraint": {
      "name": "constraints/iam.allowedPolicyMemberDomains",
      "displayName": "Domain restricted sharing",
      "description": "This list constraint defines one or more Cloud Identity or Google Workspace customer IDs whose principals can be added to IAM policies. \u003cbr\u003eBy default, all user identities are allowed to be added to IAM policies. Only allowed values can be defined in this constraint, denied values are not supported. \u003cbr\u003eIf this constraint is active, only principals that belong to the allowed customer IDs can be added to IAM policies.",
      "constraintDefault": "ALLOW",
      "listConstraint": {}
    }
  }
}

Analiza los contenedores

En este contexto, un contenedor es un recurso de proyecto, carpeta u organización. Puedes usar el Analizador de políticas para devolver una lista de todos los contenedores que tienen políticas de la organización con una restricción particular aplicada. El Analizador de políticas también devuelve el nombre completo de cada contenedor, el contenedor principal en la jerarquía y las etiquetas heredadas o adjuntas al contenedor.

Por cada contenedor que se detecta en el alcance de la consulta, el Analizador de políticas devuelve una entrada de resultado. Una entrada de resultado contiene los siguientes campos:

  • consolidatedPolicy: Es el contenedor al que se adjunta la política de la organización y la aplicación de la política vigente en ese contenedor con respecto a las reglas de evaluación de jerarquía.

  • conditionEvaluation: Si las condiciones incluidas generan la aplicación de la política de la organización, evaluationValue es TRUE. Si las condiciones hacen que no se aplique la política de la organización, evaluationValue es FALSE. Si la condición no es compatible con uno o más de los recursos en los que se aplica la política de la organización, se devuelve la condición en sí.

  • effectiveTags: Todas las etiquetas que se adjuntan directamente al contenedor o que este hereda, y los elementos superiores del contenedor en la jerarquía.

  • folders: Es el ID de los recursos de carpeta que contienen el contenedor al que se adjunta la política de la organización.

  • fullResourceName: Es el nombre completo del contenedor.

  • organization: Es el ID del recurso de organización que es el antecesor del contenedor al que se adjunta la política de organización.

  • parent: Es el nombre completo del recurso principal de este contenedor.

  • policyBundle: La política de la organización configurada directamente en el contenedor, si existe, y las políticas de la organización definidas en los ancestros del contenedor en la jerarquía de recursos.

  • project: Es el ID del contenedor al que se adjunta la política de la organización, si se trata de un recurso del proyecto.

Si tus recursos están protegidos por un perímetro de servicio de los Controles del servicio de VPC, debes crear una regla de salida en el perímetro de tu recurso de organización que permita el acceso al servicio cloudasset.googleapis.com y al método google.cloud.asset.v1.AssetService.SearchAllResources. Si no tienes una regla de salida, la solicitud fallará y mostrará un error NETWORK_NOT_IN_SAME_SERVICE_PERIMETER. Para obtener más información, consulta Cómo depurar solicitudes bloqueadas por los Controles del servicio de VPC.

Console

  1. En la consola de Google Cloud , ve a la página Analizador de políticas.

    Ir al Analizador de políticas

  2. En la sección Analiza la política de la organización, busca el panel etiquetado como ¿Qué proyectos o carpetas se ven afectados por una restricción de la política de la organización? y haz clic en Crear consulta en ese panel.

  3. En el cuadro Selecciona la organización de la consulta, selecciona la organización para la que deseas analizar las políticas de la organización.

  4. Selecciona el tipo de restricción que deseas analizar. Para una restricción predefinida o administrada, selecciona Restricción integrada. Para una restricción personalizada, selecciona Restricción personalizada.

  5. Ingresa el nombre de la restricción que deseas analizar. El prefijo del tipo de restricción que analizas ya está incluido. Por ejemplo, para la restricción predefinida de dominio, ingresa iam.allowedPolicyMemberDomains; para la restricción administrada de creación de cuentas de servicio, ingresa iam.managed.disableServiceAccountKeyCreation; y, para una restricción personalizada, ingresa su nombre, como disableGkeAutoUpgrade.

  6. 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 contenedores en los que se aplica o hereda esta restricción.

  7. Para guardar esta búsqueda y volver a verla más tarde, haz clic en Copiar la URL de la búsqueda. Para ver esta consulta, navega a la URL generada.

  8. Para visualizar la herencia de la restricción que analizaste, selecciona al menos un contenedor de la lista y, luego, haz clic en Ver herencia. También puedes ir directamente a la vista de visualización cuando crees tu consulta de análisis. Para ello, haz clic en Analizar y, luego, en Visualizar. Consulta Visualiza la herencia para obtener más información.

gcloud

Para obtener un análisis de cómo se aplica una restricción de política de la organización en los contenedores dentro de una organización, usa el comando gcloud asset analyze-org-policy-governed-containers:

gcloud asset analyze-org-policy-governed-containers \
    --constraint=CONSTRAINT_NAME  \
    --scope=organizations/ORGANIZATION_ID \
    --limit=LIMIT_CONTAINERS \
    --filter=FILTER_QUERY

Reemplaza lo siguiente:

  • CONSTRAINT_NAME: Es el nombre de la restricción de la política de la organización que deseas analizar. Para obtener una lista de las restricciones, consulta Restricciones de las políticas de la organización.

  • ORGANIZATION_ID: Es el ID de tu recurso de organización. Para obtener más información sobre cómo encontrar el ID de tu organización, consulta Crea y administra organizaciones.

  • LIMIT_CONTAINERS: Es la cantidad de entradas de resultados que deseas ver. Para ver entradas ilimitadas, ingresa unlimited.

  • FILTER_QUERY: Una consulta de filtro para ver solo los contenedores que coinciden con tu expresión de filtrado El único campo disponible para filtrar es parent. Por ejemplo, parent="//cloudresourcemanager.googleapis.com/organizations/012345678901" solo devolvería los contenedores que eran elementos secundarios de la organización con el ID de organización 012345678901.

La respuesta en YAML es similar a la siguiente:

Ejemplo de respuesta en YAML

---
consolidatedPolicy:
  appliedResource: //cloudresourcemanager.googleapis.com/projects/donghe-project1
  attachedResource: //cloudresourcemanager.googleapis.com/projects/donghe-project1
  rules:
  - values:
      allowedValues:
      - projects/donghe-project1/zones/us-central1-a/instances/instance-1
fullResourceName: //cloudresourcemanager.googleapis.com/projects/donghe-project1
parent: //cloudresourcemanager.googleapis.com/folders/86513245445
policyBundle:
- appliedResource: //cloudresourcemanager.googleapis.com/projects/donghe-project1
  attachedResource: //cloudresourcemanager.googleapis.com/projects/donghe-project1
  inheritFromParent: true
  rules:
  - values:
      allowedValues:
      - projects/donghe-project1/zones/us-central1-a/instances/instance-1
---
consolidatedPolicy:
  appliedResource: //cloudresourcemanager.googleapis.com/projects/jeffreyai-prj01-on-ipa1
  attachedResource: //cloudresourcemanager.googleapis.com/projects/jeffreyai-prj01-on-ipa1
  rules:
  - denyAll: true
fullResourceName: //cloudresourcemanager.googleapis.com/projects/jeffreyai-prj01-on-ipa1
parent: //cloudresourcemanager.googleapis.com/organizations/474566717491
policyBundle:
- appliedResource: //cloudresourcemanager.googleapis.com/projects/jeffreyai-prj01-on-ipa1
  attachedResource: //cloudresourcemanager.googleapis.com/projects/jeffreyai-prj01-on-ipa1
  inheritFromParent: true
  rules:
  - denyAll: true
---
consolidatedPolicy:
  appliedResource: //cloudresourcemanager.googleapis.com/projects/opa-test-project-1-364621
  attachedResource: //cloudresourcemanager.googleapis.com/projects/opa-test-project-1-364621
  rules:
  - values:
      allowedValues:
      - projects/opa-test-project-1-364621/zones/us-central1-a/instances/instance-1
fullResourceName: //cloudresourcemanager.googleapis.com/projects/opa-test-project-1-364621
parent: //cloudresourcemanager.googleapis.com/folders/666681422980
policyBundle:
- appliedResource: //cloudresourcemanager.googleapis.com/projects/opa-test-project-1-364621
  attachedResource: //cloudresourcemanager.googleapis.com/projects/opa-test-project-1-364621
  rules:
  - values:
      allowedValues:
      - projects/opa-test-project-1-364621/zones/us-central1-a/instances/instance-1

REST

Para obtener un análisis de cómo se aplica una restricción de política de la organización en los contenedores dentro de una organización, usa el método analyzeOrgPolicyGovernedContainers de la API de Cloud Asset.

Método HTTP y URL:

GET https://cloudasset.googleapis.com/v1/organizations/ORGANIZATION_ID:analyzeOrgPolicyGovernedContainers

Cuerpo JSON de la solicitud:

JSON_REQUEST="{
  'constraint': 'CONSTRAINT_NAME',
  'filter': '"FILTER_QUERY"',
  'page_size': PAGE_SIZE,
  'page_token': PAGE_TOKEN
}"

Reemplaza lo siguiente:

  • ORGANIZATION_ID: Es el ID de tu recurso de organización. Para obtener más información sobre cómo encontrar el ID de tu organización, consulta Crea y administra organizaciones.

  • CONSTRAINT_NAME: Es el nombre de la restricción de la política de la organización que deseas analizar. Para obtener una lista de las restricciones, consulta Restricciones de las políticas de la organización.

  • FILTER_QUERY: Una consulta de filtro para ver solo los contenedores que coinciden con tu expresión de filtrado El único campo disponible para filtrar es parent. Por ejemplo, parent="//cloudresourcemanager.googleapis.com/organizations/012345678901" solo devolvería los contenedores que eran elementos secundarios de la organización con el ID de organización 012345678901.

  • PAGE_SIZE: Es la cantidad de páginas de entradas de resultados que deseas ver. Para ver entradas ilimitadas, ingresa unlimited. Una solicitud realizada con esta marca establecida devuelve un valor nextPageToken si la cantidad total de entradas de resultados es mayor que PAGE_SIZE.

  • PAGE_TOKEN: Solo se debe establecer en las solicitudes posteriores a la primera que incluya la marca page_size. Puedes usar los valores de nextPageToken que recibiste de respuestas anteriores para devolver una página de resultados específica.

La respuesta JSON es similar a la siguiente:

Ejemplo de respuesta JSON

{
  "governedContainers": [
    {
      "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/opa-test-project-2",
      "parent": "//cloudresourcemanager.googleapis.com/folders/513502730678",
      "consolidatedPolicy": {
        "attachedResource": "//cloudresourcemanager.googleapis.com/folders/513502730678",
        "rules": [
          {
            "enforce": false
          }
        ],
        "appliedResource": "//cloudresourcemanager.googleapis.com/folders/513502730678"
      },
      "policyBundle": [
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/folders/513502730678",
          "rules": [
            {
              "enforce": false
            }
          ],
          "appliedResource": "//cloudresourcemanager.googleapis.com/folders/513502730678"
        },
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/folders/666681422980",
          "rules": [
            {
              "enforce": true
            }
          ],
          "appliedResource": "//cloudresourcemanager.googleapis.com/folders/666681422980"
        }
      ]
    },
    {
      "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/opa-test-project-1",
      "parent": "//cloudresourcemanager.googleapis.com/folders/513502730678",
      "consolidatedPolicy": {
        "attachedResource": "//cloudresourcemanager.googleapis.com/folders/513502730678",
        "rules": [
          {
            "enforce": false
          }
        ],
        "appliedResource": "//cloudresourcemanager.googleapis.com/folders/513502730678"
      },
      "policyBundle": [
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/folders/513502730678",
          "rules": [
            {
              "enforce": false
            }
          ],
          "appliedResource": "//cloudresourcemanager.googleapis.com/folders/513502730678"
        },
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/folders/666681422980",
          "rules": [
            {
              "enforce": true
            }
          ],
          "appliedResource": "//cloudresourcemanager.googleapis.com/folders/666681422980"
        }
      ]
    }
  ]
  "constraint": {
    "googleDefinedConstraint": {
      "name": "constraints/compute.requireOsLogin",
      "displayName": "Require OS Login",
      "description": "This boolean constraint, when set to \u003ccode\u003etrue\u003c/code\u003e, enables OS Login on all newly created Projects. All VM instances created in new projects will have OS Login enabled. On new and existing projects, this constraint prevents metadata updates that disable OS Login at the project or instance level. \u003cbr\u003eBy default, the OS Login feature is disabled on Compute Engine projects.\u003cbr\u003eGKE instances in private clusters running node pool versions 1.20.5-gke.2000 and later support OS Login. GKE instances in public clusters do not currently support OS Login. If this constraint is applied to a Project running public clusters, GKE instances running in that Project may not function properly.",
      "constraintDefault": "ALLOW",
      "booleanConstraint": {}
    }
  }
}

Analiza los recursos

En este contexto, un activo es un recurso Google Cloud o una política de permisos de Identity and Access Management (IAM). Puedes usar el Analizador de políticas para devolver una lista de todos los recursos que tienen políticas de la organización con una restricción particular aplicada. Se admiten las restricciones personalizadas, las restricciones administradas y las siguientes restricciones predefinidas:

  • constraints/ainotebooks.accessMode
  • constraints/ainotebooks.disableFileDownloads
  • constraints/ainotebooks.disableRootAccess
  • constraints/ainotebooks.disableTerminal
  • constraints/ainotebooks.environmentOptions
  • constraints/ainotebooks.requireAutoUpgradeSchedule
  • constraints/ainotebooks.restrictVpcNetworks
  • constraints/compute.disableGuestAttributesAccess
  • constraints/compute.disableInstanceDataAccessApis
  • constraints/compute.disableNestedVirtualization
  • constraints/compute.disableSerialPortAccess
  • constraints/compute.disableSerialPortLogging
  • constraints/compute.disableVpcExternalIpv6
  • constraints/compute.requireOsLogin
  • constraints/compute.requireShieldedVm
  • constraints/compute.restrictLoadBalancerCreationForTypes
  • constraints/compute.restrictProtocolForwardingCreationForTypes
  • constraints/compute.restrictXpnProjectLienRemoval
  • constraints/compute.setNewProjectDefaultToZonalDNSOnly
  • constraints/compute.skipDefaultNetworkCreation
  • constraints/compute.trustedImageProjects
  • constraints/compute.vmCanIpForward
  • constraints/compute.vmExternalIpAccess
  • constraints/gcp.detailedAuditLoggingMode
  • constraints/gcp.resourceLocations
  • constraints/iam.allowedPolicyMemberDomains
  • constraints/iam.automaticIamGrantsForDefaultServiceAccounts
  • constraints/iam.disableServiceAccountCreation
  • constraints/iam.disableServiceAccountKeyCreation
  • constraints/iam.disableServiceAccountKeyUpload
  • constraints/iam.restrictCrossProjectServiceAccountLienRemoval
  • constraints/iam.serviceAccountKeyExpiryHours
  • constraints/resourcemanager.accessBoundaries
  • constraints/resourcemanager.allowedExportDestinations
  • constraints/sql.restrictAuthorizedNetworks
  • constraints/sql.restrictNoncompliantDiagnosticDataAccess
  • constraints/sql.restrictNoncompliantResourceCreation
  • constraints/sql.restrictPublicIp
  • constraints/storage.publicAccessPrevention
  • constraints/storage.restrictAuthTypes
  • constraints/storage.uniformBucketLevelAccess

El Analizador de políticas devuelve el nombre completo de cada activo, su elemento superior en la jerarquía y cualquier recurso de proyecto, carpeta y organización principal por encima del activo en la jerarquía.

Para cada recurso detectado en el alcance de la búsqueda, el Analizador de políticas devuelve una entrada de resultado.

Una entrada de resultado para un recurso contiene los siguientes campos:

  • consolidatedPolicy: Es el recurso al que se adjunta la política de la organización y la aplicación de la política vigente en ese recurso con respecto a las reglas de evaluación de la jerarquía.

  • conditionEvaluation: Si las condiciones incluidas generan la aplicación de la política de la organización, evaluationValue es TRUE. Si las condiciones hacen que no se aplique la política de la organización, evaluationValue es FALSE. Si la condición no es compatible con uno o más de los recursos en los que se aplica la política de la organización, se devuelve la condición en sí.

  • assetType: Es el tipo de recurso del activo.

  • effectiveTags: Todas las etiquetas que están directamente adjuntas al recurso al que se adjunta la política de la organización o que este hereda, y los recursos superiores del recurso en la jerarquía.

  • folders: Es el ID de los recursos de carpeta que contienen el recurso al que se adjunta la política de la organización.

  • fullResourceName: Es el nombre completo del recurso.

  • organization: Es el nombre del recurso relativo de la organización que contiene el recurso.

  • parent: Es el nombre completo del recurso principal del recurso.

  • project: Es el ID del proyecto que contiene el recurso.

  • policyBundle: Es la política de la organización configurada completa adjunta al recurso anterior y las políticas de la organización definidas en sus ancestros en la jerarquía de recursos.

Una entrada de resultado para una política de permisos contiene los siguientes campos:

  • consolidatedPolicy: Es el recurso al que se adjunta la política de la organización y la aplicación de la política vigente en ese recurso con respecto a las reglas de evaluación de la jerarquía.

  • assetType: Es el tipo de recurso al que se adjunta la política de permisos.

  • attachedResource: Es el nombre completo del recurso al que se adjunta la política de permisos.

  • folders: Es el nombre del recurso relativo de las carpetas que contienen la política de permisos.

  • organization: Es el nombre relativo del recurso de la organización que contiene la política de permisos.

  • policy: Es la política de permisos.

  • project: Es el nombre del recurso relativo del proyecto que contiene la política de permiso.

  • policyBundle: Es la política de la organización configurada completa adjunta al recurso anterior y las políticas de la organización definidas en sus ancestros en la jerarquía de recursos.

Si tus recursos están protegidos por un perímetro de servicio de los Controles del servicio de VPC, debes crear una regla de salida en el perímetro de tu recurso de organización que permita el acceso al servicio cloudasset.googleapis.com y al método google.cloud.asset.v1.AssetService.SearchAllResources. Si no tienes una regla de salida, la solicitud fallará y mostrará un error NETWORK_NOT_IN_SAME_SERVICE_PERIMETER. Para obtener más información, consulta Cómo depurar solicitudes bloqueadas por los Controles del servicio de VPC.

Console

  1. En la consola de Google Cloud , ve a la página Analizador de políticas.

    Ir al Analizador de políticas

  2. En la sección Analiza la política de la organización, busca el panel etiquetado como ¿Qué recursos se ven afectados por una restricción de la política de la organización? y haz clic en Crear consulta en ese panel.

  3. En el cuadro Selecciona la organización de la consulta, selecciona la organización para la que deseas analizar las políticas de la organización.

  4. Selecciona el tipo de restricción que deseas analizar. Para una restricción predefinida o administrada, selecciona Restricción integrada. Para una restricción personalizada, selecciona Restricción personalizada.

  5. Ingresa el nombre de la restricción que deseas analizar. El prefijo del tipo de restricción que analizas ya está incluido. Por ejemplo, para la restricción administrada de creación de cuentas de servicio, ingresa iam.managed.disableServiceAccountKeyCreation y, para una restricción personalizada, ingresa su nombre, como disableGkeAccess.storage.uniformBucketLevelAccess

  6. 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 activos en los que se aplica o hereda esta restricción.

  7. Para guardar esta búsqueda y volver a verla más tarde, haz clic en Copiar la URL de la búsqueda. Para ver esta consulta, navega a la URL generada.

  8. Para visualizar la herencia de la restricción que analizaste, selecciona al menos un activo de la lista y, luego, haz clic en Ver herencia. También puedes ir directamente a la vista de visualización cuando crees tu consulta de análisis. Para ello, haz clic en Analizar y, luego, en Visualizar. Consulta Visualiza la herencia para obtener más información.

gcloud

Para obtener un análisis de cómo se aplica una restricción de política de la organización en los activos de una organización, usa el comando gcloud asset analyze-org-policy-governed-assets:

gcloud asset analyze-org-policy-governed-assets \
    --constraint=CONSTRAINT_NAME  \
    --scope=organizations/ORGANIZATION_ID \
    --limit=LIMIT_ASSETS \
    --filter=FILTER_QUERY

Reemplaza lo siguiente:

  • CONSTRAINT_NAME: Es el nombre de la restricción de la política de la organización que deseas analizar. Para obtener una lista de las restricciones, consulta Restricciones de las políticas de la organización.

  • ORGANIZATION_ID: Es el ID de tu recurso de organización. Para obtener más información sobre cómo encontrar el ID de tu organización, consulta Crea y administra organizaciones.

  • LIMIT_ASSETS: Es la cantidad de entradas de resultados que deseas ver. Para ver entradas ilimitadas, ingresa unlimited.

  • FILTER_QUERY: Es una consulta de filtro para ver solo los recursos que coinciden con tu expresión de filtrado. Los campos disponibles para filtrar son governed_resource.folders, governed_resource.project, governed_iam_policy.folders y governed_iam_policy.project. Por ejemplo, governed_resource.project="projects/1234567890" solo devolvería los recursos adjuntos al proyecto con el ID del proyecto 1234567890.

La respuesta en YAML es similar a la siguiente:

Ejemplo de respuesta en YAML

---
consolidatedPolicy:
  appliedResource: //cloudresourcemanager.googleapis.com/projects/opa-test-project-2
  attachedResource: //cloudresourcemanager.googleapis.com/projects/opa-test-project-2
  rules:
  - enforce: false
governedResource:
  folders:
  - folders/513502730678
  - folders/666681422980
  fullResourceName: //container.googleapis.com/projects/opa-test-project-2/zones/us-central1-c/clusters/opa-test-project-2-cluster-1/nodePools/default-pool
  organization: organizations/474566717491
  parent: //container.googleapis.com/projects/opa-test-project-2/zones/us-central1-c/clusters/opa-test-project-2-cluster-1
  project: projects/892625391619
policyBundle:
- appliedResource: //cloudresourcemanager.googleapis.com/projects/opa-test-project-2
  attachedResource: //cloudresourcemanager.googleapis.com/projects/opa-test-project-2
  reset: true
- appliedResource: //cloudresourcemanager.googleapis.com/organizations/474566717491
  attachedResource: //cloudresourcemanager.googleapis.com/organizations/474566717491
  rules:
  - enforce: true
---
consolidatedPolicy:
  appliedResource: //cloudresourcemanager.googleapis.com/projects/project2-244918
  attachedResource: //cloudresourcemanager.googleapis.com/projects/project2-244918
  rules:
  - enforce: false
governedResource:
  folders:
  - folders/800636178739
  - folders/408342778736
  fullResourceName: //container.googleapis.com/projects/project2-244918/zones/us-central1-c/clusters/cluster-1/nodePools/default-pool
  organization: organizations/474566717491
  parent: //container.googleapis.com/projects/project2-244918/zones/us-central1-c/clusters/cluster-1
  project: projects/761097189269
policyBundle:
- appliedResource: //cloudresourcemanager.googleapis.com/projects/project2-244918
  attachedResource: //cloudresourcemanager.googleapis.com/projects/project2-244918
  rules:
  - enforce: false
- appliedResource: //cloudresourcemanager.googleapis.com/folders/408342778736
  attachedResource: //cloudresourcemanager.googleapis.com/folders/408342778736
  rules:
  - condition:
      description: cond-desc1
      expression: resource.matchTag("474566717491/env", "prod")
      title: cond-title1
    enforce: false
  - enforce: true
- appliedResource: //cloudresourcemanager.googleapis.com/organizations/474566717491
  attachedResource: //cloudresourcemanager.googleapis.com/organizations/474566717491
  rules:
  - enforce: true
---
consolidatedPolicy:
  appliedResource: //cloudresourcemanager.googleapis.com/organizations/474566717491
  attachedResource: //cloudresourcemanager.googleapis.com/organizations/474566717491
  rules:
  - enforce: true
governedResource:
  fullResourceName: //container.googleapis.com/projects/probe-per-rt-project/zones/us-west1-a/clusters/test-cluster-for-backup/nodePools/default-pool
  organization: organizations/474566717491
  parent: //container.googleapis.com/projects/probe-per-rt-project/zones/us-west1-a/clusters/test-cluster-for-backup
  project: projects/896190383908
policyBundle:
- appliedResource: //cloudresourcemanager.googleapis.com/organizations/474566717491
  attachedResource: //cloudresourcemanager.googleapis.com/organizations/474566717491
  rules:
  - enforce: true

REST

Para obtener un análisis de cómo se aplica una restricción de política de la organización en los activos de una organización, usa el método analyzeOrgPolicyGovernedAssets de la API de Cloud Asset.

Método HTTP y URL:

GET https://cloudasset.googleapis.com/v1/organizations/ORGANIZATION_ID:analyzeOrgPolicyGovernedAssets

Cuerpo JSON de la solicitud:

JSON_REQUEST="{
  'constraint': 'CONSTRAINT_NAME',
  'filter': 'FILTER_QUERY',
  'page_size': PAGE_SIZE,
  'page_token': PAGE_TOKEN
}"

Reemplaza lo siguiente:

  • ORGANIZATION_ID: Es el ID de tu recurso de organización. Para obtener más información sobre cómo encontrar el ID de tu organización, consulta Crea y administra organizaciones.

  • CONSTRAINT_NAME: Es el nombre de la restricción de la política de la organización que deseas analizar. Para obtener una lista de las restricciones, consulta Restricciones de las políticas de la organización.

  • FILTER_QUERY: Es una consulta de filtro para ver solo los recursos que coinciden con tu expresión de filtrado. Los campos disponibles para filtrar son governed_resource.folders, governed_resource.project, governed_iam_policy.folders y governed_iam_policy.project. Por ejemplo, governed_resource.project="projects/1234567890" solo devolvería los recursos adjuntos al proyecto con el ID del proyecto 1234567890.

  • PAGE_SIZE: Es la cantidad de páginas de entradas de resultados que deseas ver. Para ver entradas ilimitadas, ingresa unlimited. Una solicitud realizada con esta marca establecida devuelve un valor nextPageToken si la cantidad total de entradas de resultados es mayor que PAGE_SIZE.

  • PAGE_TOKEN: Solo se debe establecer en las solicitudes posteriores a la primera que incluya la marca page_size. Puedes usar los valores de nextPageToken que recibiste de respuestas anteriores para devolver una página de resultados específica.

La respuesta JSON es similar a la siguiente:

Ejemplo de respuesta JSON

{
  "governedAssets": [
    {
      "governedResource": {
        "fullResourceName": "//container.googleapis.com/projects/opa-test-project-2/zones/us-central1-c/clusters/opa-test-project-2-cluster-1/nodePools/default-pool",
        "parent": "//container.googleapis.com/projects/opa-test-project-2/zones/us-central1-c/clusters/opa-test-project-2-cluster-1",
        "project": "projects/892625391619",
        "folders": [
          "folders/513502730678",
          "folders/666681422980"
        ],
        "organization": "organizations/474566717491"
      },
      "consolidatedPolicy": {
        "attachedResource": "//cloudresourcemanager.googleapis.com/projects/opa-test-project-2",
        "rules": [
          {
            "enforce": false
          }
        ],
        "appliedResource": "//cloudresourcemanager.googleapis.com/projects/opa-test-project-2"
      },
      "policyBundle": [
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/projects/opa-test-project-2",
          "reset": true,
          "appliedResource": "//cloudresourcemanager.googleapis.com/projects/opa-test-project-2"
        },
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/organizations/474566717491",
          "rules": [
            {
              "enforce": true
            }
          ],
          "appliedResource": "//cloudresourcemanager.googleapis.com/organizations/474566717491"
        }
      ]
    },
    {
      "governedResource": {
        "fullResourceName": "//container.googleapis.com/projects/project2-244918/zones/us-central1-c/clusters/cluster-1/nodePools/default-pool",
        "parent": "//container.googleapis.com/projects/project2-244918/zones/us-central1-c/clusters/cluster-1",
        "project": "projects/761097189269",
        "folders": [
          "folders/800636178739",
          "folders/408342778736"
        ],
        "organization": "organizations/474566717491"
      },
      "consolidatedPolicy": {
        "attachedResource": "//cloudresourcemanager.googleapis.com/projects/project2-244918",
        "rules": [
          {
            "enforce": false
          }
        ],
        "appliedResource": "//cloudresourcemanager.googleapis.com/projects/project2-244918"
      },
      "policyBundle": [
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/projects/project2-244918",
          "rules": [
            {
              "enforce": false
            }
          ],
          "appliedResource": "//cloudresourcemanager.googleapis.com/projects/project2-244918"
        },
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/folders/408342778736",
          "rules": [
            {
              "enforce": false,
              "condition": {
                "expression": "resource.matchTag(\"474566717491/env\", \"prod\")",
                "title": "cond-title1",
                "description": "cond-desc1"
              }
            },
            {
              "enforce": true
            }
          ],
          "appliedResource": "//cloudresourcemanager.googleapis.com/folders/408342778736"
        },
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/organizations/474566717491",
          "rules": [
            {
              "enforce": true
            }
          ],
          "appliedResource": "//cloudresourcemanager.googleapis.com/organizations/474566717491"
        }
      ]
    }
  ]
  "constraint": {
    "customConstraint": {
      "name": "organizations/474566717491/customConstraints/custom.disableGkeAutoUpgrade",
      "resourceTypes": [
        "container.googleapis.com/NodePool"
      ],
      "methodTypes": [
        "CREATE",
        "UPDATE"
      ],
      "condition": "resource.management.autoUpgrade == false",
      "actionType": "ALLOW",
      "displayName": "Disable GKE auto upgrade",
      "description": "Only allow GKE NodePool resource create or updates if AutoUpgrade is not enabled"
    }
  }
}

Visualiza la herencia

Si tienes una activación a nivel de la organización del nivel Premium o Enterprise de Security Command Center, puedes visualizar la herencia de las políticas de la organización que analizaste con la consola de Google Cloud .

Para ver la visualización de la herencia, crea una consulta de análisis de políticas de la organización para políticas configuradas, contenedores o recursos. En la página Ejecutar análisis de consultas, haz clic en Analizar y, luego, selecciona Visualizar.

También puedes navegar a la URL de una búsqueda guardada, seleccionar los recursos que deseas destacar y, luego, hacer clic en Ver herencia.

En la página Herencia de recursos, se muestra una visualización de la jerarquía de recursos para los recursos seleccionados en tu consulta de análisis:

Visualización de la herencia de políticas de la organización en una jerarquía de recursos. Visualización de una política booleana no aplicada.

  1. Indica si el recurso es una organización, una carpeta o un proyecto.

  2. Un punto azul indica que el recurso está seleccionado en la búsqueda.

  3. Indica que el recurso anula la política de su recurso superior.

  4. Indica que el recurso restablece la política de la organización al valor predeterminado administrado por Google para esa política. Un recurso que restablece la política a la configuración predeterminada tiene una línea punteada que lo conecta a su recurso superior.

  5. Indica que la política del recurso se combina con la de su recurso superior.

  6. Indica que la política de la organización en este recurso aplica una restricción booleana o una restricción de lista con valores permitidos.

  7. Indica que la política de la organización en este recurso es una restricción de lista con valores denegados.

  8. Indica que la política de la organización en este recurso es una restricción booleana que no se aplica.

¿Qué sigue?