Analizar políticas de organización

En esta página se explica cómo analizar la configuración de las políticas de tu organización para ver qué recursos están cubiertos por cada política. Con Policy Analyzer para políticas 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 ámbito y una restricción.

  • Constraint: especifica el nombre del recurso de una restricción.
  • Ámbito: especifica una organización para acotar 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 ámbito.

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

  • Para obtener más información sobre cómo crear restricciones personalizadas, consulta el artículo Crear y gestionar restricciones personalizadas.

  • Para obtener más información sobre las restricciones gestionadas, consulta Usar restricciones.

Antes de empezar

Roles y permisos necesarios

Para obtener los permisos que necesitas para ejecutar un análisis de políticas de la organización, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos en el recurso de la organización en el que quieras realizar el análisis:

Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar 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 se necesitan, despliega la sección Permisos necesarios:

Permisos obligatorios

Para ejecutar un análisis de políticas de la organización, se necesitan los siguientes permisos:

  • Para llevar a cabo el análisis, sigue estos pasos:
    • cloudasset.assets.analyzeOrgPolicy
    • cloudasset.assets.searchAllResources
    • cloudasset.assets.searchAllIamPolicies
  • Para ver las restricciones personalizadas y gestionadas, sigue estos pasos: orgpolicy.customConstraints.get

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

Precios y cuotas

Policy Analyzer para la política de la organización a gran escala (más de 20 consultas por organización al día) y las visualizaciones de herencia solo están disponibles para los clientes que hayan activado Security Command Center a nivel de organización.

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

Analizar las políticas configuradas

Una política de organización se compone de una restricción y de condiciones opcionales en las que se aplica esa restricción. Puedes usar Analizador de políticas para obtener una lista de políticas de la organización con una restricción concreta y los recursos a los que están asociadas esas políticas.

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

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

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

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

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

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

Si tus recursos están protegidos por un perímetro de servicio de Controles de Servicio de VPC, debes crear una regla de salida en el perímetro del recurso de tu 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 se producirá un error NETWORK_NOT_IN_SAME_SERVICE_PERIMETER. Para obtener más información, consulta Depurar solicitudes bloqueadas por Controles de Servicio de VPC.

Consola

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

    Ir a Analizador de políticas

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

  3. En el cuadro Seleccionar organización de la consulta, elige la organización de la que quieras analizar las políticas.

  4. Selecciona el tipo de restricción que quieras analizar. Para una restricción predefinida o gestionada, selecciona Restricción integrada. Para añadir una restricción personalizada, selecciona Restricción personalizada.

  5. Introduce el nombre de la restricción que quieras analizar. El prefijo del tipo de restricción que estás analizando ya está incluido. Por ejemplo, para la restricción de dominio predefinida, introduce iam.allowedPolicyMemberDomains; para la restricción gestionada de creación de cuentas de servicio, introduce iam.managed.disableServiceAccountKeyCreation; y, para una restricción personalizada, introduce su nombre, como disableGkeAutoUpgrade.

  6. Haz clic en Analizar y, a continuación, en Ejecutar consulta. En la página del informe se muestran los parámetros de consulta que has introducido y una tabla de resultados con todos los recursos a los que se aplica directamente esta restricción.

  7. Puedes guardar esta consulta para verla de nuevo más adelante haciendo clic en Copiar URL de la consulta. Para ver esta consulta, ve a la URL generada.

  8. Para visualizar la herencia de la restricción que has analizado, selecciona al menos un recurso de la lista y, a continuación, haz clic en Ver herencia. También puedes ir directamente a la vista de visualización cuando crees tu consulta de análisis haciendo clic en Analizar y, a continuación, en Visualizar. Consulta Visualizar 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 organización en 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

Haz los cambios siguientes:

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

  • ORGANIZATION_ID: 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 el artículo Crear y gestionar organizaciones.

  • LIMIT_POLICIES: el número de entradas de resultados que quieres ver. Para ver un número ilimitado de entradas, introduce unlimited.

  • FILTER_QUERY: una consulta de filtro para ver solo las políticas que coincidan con tu expresión de filtro. 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 asociadas al proyecto con el ID de proyecto 1234567890.

La respuesta YAML es similar a la siguiente:

Ejemplo de respuesta 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 organización en una organización, usa el método analyzeOrgPolicies de la API 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
}"

Haz los cambios siguientes:

  • ORGANIZATION_ID: 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 el artículo Crear y gestionar organizaciones.

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

  • FILTER_QUERY: una consulta de filtro para ver solo las políticas que coincidan con tu expresión de filtro. 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 asociadas al proyecto con el ID de proyecto 1234567890.

  • PAGE_SIZE: el número de entradas de resultados por página que quieres ver. Para ver un número ilimitado de entradas, introduce unlimited. Si se hace una solicitud con esta marca, se devuelve el valor nextPageToken si el número total de entradas de resultados es superior a PAGE_SIZE.

  • PAGE_TOKEN: solo se puede definir en las solicitudes posteriores a la primera solicitud que incluya la marca page_size. Puede usar los valores de nextPageToken recibidos en respuestas anteriores para devolver una página de resultados concreta.

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": {}
    }
  }
}

Analizar contenedores

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

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

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

  • conditionEvaluation: si las condiciones incluidas dan como resultado 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 organización, evaluationValue es FALSE. Si la condición no es compatible con uno o varios de los recursos en los que se aplica la política de organización, se devuelve la propia condición.

  • effectiveTags: todas las etiquetas que están asociadas directamente al contenedor o que este hereda, así como las etiquetas de los contenedores superiores en la jerarquía.

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

  • fullResourceName: el nombre completo del contenedor.

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

  • parent: el nombre completo del recurso superior 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: el ID del contenedor al que está adjunta la política de la organización, si se trata de un recurso de proyecto.

Si tus recursos están protegidos por un perímetro de servicio de Controles de Servicio de VPC, debes crear una regla de salida en el perímetro del recurso de tu 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 se producirá un error NETWORK_NOT_IN_SAME_SERVICE_PERIMETER. Para obtener más información, consulta Depurar solicitudes bloqueadas por Controles de Servicio de VPC.

Consola

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

    Ir a Analizador de políticas

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

  3. En el cuadro Seleccionar organización de la consulta, elige la organización de la que quieras analizar las políticas.

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

  5. Introduce el nombre de la restricción que quieras analizar. El prefijo del tipo de restricción que estás analizando ya está incluido. Por ejemplo, para la restricción de dominio predefinida, introduce iam.allowedPolicyMemberDomains; para la restricción gestionada de creación de cuentas de servicio, introduce iam.managed.disableServiceAccountKeyCreation; y, para una restricción personalizada, introduce su nombre, como disableGkeAutoUpgrade.

  6. Haz clic en Realizar una consulta. En la página del informe se muestran los parámetros de consulta que ha introducido y una tabla de resultados con todos los contenedores en los que se aplica o se hereda esta restricción.

  7. Puedes guardar esta consulta para verla de nuevo más adelante haciendo clic en Copiar URL de la consulta. Para ver esta consulta, ve a la URL generada.

  8. Para visualizar la herencia de la restricción que ha analizado, seleccione al menos un contenedor de la lista y, a continuación, haga clic en Ver herencia. También puedes ir directamente a la vista de visualización cuando crees tu consulta de análisis haciendo clic en Analizar y, a continuación, en Visualizar. Consulta Visualizar 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 organización a los contenedores 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

Haz los cambios siguientes:

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

  • ORGANIZATION_ID: 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 el artículo Crear y gestionar organizaciones.

  • LIMIT_CONTAINERS: el número de entradas de resultados que quieres ver. Para ver un número ilimitado de entradas, introduce unlimited.

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

La respuesta YAML es similar a la siguiente:

Ejemplo de respuesta 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 organización a los contenedores de una organización, usa el método analyzeOrgPolicyGovernedContainers de la API 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
}"

Haz los cambios siguientes:

  • ORGANIZATION_ID: 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 el artículo Crear y gestionar organizaciones.

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

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

  • PAGE_SIZE: el número de páginas de entradas de resultados que quieres ver. Para ver un número ilimitado de entradas, introduce unlimited. Si se hace una solicitud con esta marca, se devuelve el valor nextPageToken si el número total de entradas de resultados es superior a PAGE_SIZE.

  • PAGE_TOKEN: solo se puede definir en las solicitudes posteriores a la primera solicitud que incluya la marca page_size. Puede usar los valores de nextPageToken recibidos en respuestas anteriores para devolver una página de resultados concreta.

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": {}
    }
  }
}

Analizar recursos

En este contexto, un recurso es un Google Cloud recurso o una política de permisos de gestión de identidades y accesos (IAM). Puede usar Policy Analyzer para obtener una lista de todos los recursos que tengan políticas de la organización con una restricción concreta aplicada. Se admiten las restricciones personalizadas, las restricciones gestionadas 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

Analizador de políticas devuelve el nombre completo de cada recurso, el elemento superior del recurso en la jerarquía y cualquier recurso de proyecto, carpeta y organización antecesor del recurso en la jerarquía.

Por cada recurso que se detecte en el ámbito de la consulta, el Analizador de Políticas devuelve una entrada de resultado.

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

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

  • conditionEvaluation: si las condiciones incluidas dan como resultado 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 organización, evaluationValue es FALSE. Si la condición no es compatible con uno o varios de los recursos en los que se aplica la política de organización, se devuelve la propia condición.

  • assetType: el tipo de recurso del activo.

  • effectiveTags: todas las etiquetas que están asociadas directamente al recurso al que se ha adjuntado la política de la organización o que ha heredado, así como los recursos de nivel superior del recurso en la jerarquía.

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

  • fullResourceName: nombre completo del recurso.

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

  • parent: nombre completo del recurso superior del recurso.

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

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

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

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

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

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

  • folders: el nombre de recurso relativo de las carpetas que contengan la política de permiso.

  • organization: nombre de recurso relativo de la organización que contiene la política de permiso.

  • policy: la política de permitir.

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

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

Si tus recursos están protegidos por un perímetro de servicio de Controles de Servicio de VPC, debes crear una regla de salida en el perímetro del recurso de tu 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 se producirá un error NETWORK_NOT_IN_SAME_SERVICE_PERIMETER. Para obtener más información, consulta Depurar solicitudes bloqueadas por Controles de Servicio de VPC.

Consola

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

    Ir a Analizador de políticas

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

  3. En el cuadro Seleccionar organización de la consulta, elige la organización de la que quieras analizar las políticas.

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

  5. Introduce el nombre de la restricción que quieras analizar. El prefijo del tipo de restricción que estás analizando ya está incluido. Por ejemplo, en el caso de la restricción de acceso predefinida a nivel de contenedor, introduce storage.uniformBucketLevelAccess; en el de la restricción gestionada de creación de cuentas de servicio, introduce iam.managed.disableServiceAccountKeyCreation; y, en el de una restricción personalizada, introduce su nombre, como disableGkeAccess.

  6. Haz clic en Realizar una consulta. En la página del informe se muestran los parámetros de consulta que ha introducido y una tabla de resultados con todos los recursos en los que se aplica o se hereda esta restricción.

  7. Puedes guardar esta consulta para verla de nuevo más adelante haciendo clic en Copiar URL de la consulta. Para ver esta consulta, ve a la URL generada.

  8. Para visualizar la herencia de la restricción que has analizado, selecciona al menos un recurso de la lista y haz clic en Ver herencia. También puedes ir directamente a la vista de visualización cuando crees tu consulta de análisis haciendo clic en Analizar y, a continuación, en Visualizar. Consulta Visualizar 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 organización a los recursos 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

Haz los cambios siguientes:

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

  • ORGANIZATION_ID: 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 el artículo Crear y gestionar organizaciones.

  • LIMIT_ASSETS: el número de entradas de resultados que quieres ver. Para ver un número ilimitado de entradas, introduce unlimited.

  • FILTER_QUERY: una consulta de filtro para ver solo los recursos que coincidan con tu expresión de filtro. 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 que se adjuntaron al proyecto con el ID de proyecto 1234567890.

La respuesta YAML es similar a la siguiente:

Ejemplo de respuesta 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 organización a los recursos de una organización, usa el método analyzeOrgPolicyGovernedAssets de la API 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
}"

Haz los cambios siguientes:

  • ORGANIZATION_ID: 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 el artículo Crear y gestionar organizaciones.

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

  • FILTER_QUERY: una consulta de filtro para ver solo los recursos que coincidan con tu expresión de filtro. 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 que se adjuntaron al proyecto con el ID de proyecto 1234567890.

  • PAGE_SIZE: el número de páginas de entradas de resultados que quieres ver. Para ver un número ilimitado de entradas, introduce unlimited. Si se hace una solicitud con esta marca, se devuelve el valor nextPageToken si el número total de entradas de resultados es superior a PAGE_SIZE.

  • PAGE_TOKEN: solo se puede definir en las solicitudes posteriores a la primera solicitud que incluya la marca page_size. Puede usar los valores de nextPageToken recibidos en respuestas anteriores para devolver una página de resultados concreta.

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"
    }
  }
}

Visualizar la herencia

Si has activado el nivel Premium o Enterprise de Security Command Center a nivel de organización, puedes visualizar la herencia de las políticas de la organización que has analizado con la consola de Google Cloud .

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

También puedes ir a la URL de una consulta guardada, seleccionar los recursos que quieras destacar y, a continuación, hacer clic en Ver herencia.

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

Visualización de la herencia de políticas de 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 consulta.

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

  4. Indica que el recurso restablece la política de organización al valor predeterminado gestionado por Google de esa política. Un recurso que restablece la política a su valor predeterminado tiene una línea de puntos que lo conecta con su elemento superior.

  5. Indica que el recurso combina la política con su elemento superior.

  6. Indica que la política de organización de 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 de este recurso es una restricción de lista con valores denegados.

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

Siguientes pasos