Probar los cambios en las políticas de organización con el simulador de políticas

El simulador de políticas de la organización te permite previsualizar el impacto de una nueva restricción personalizada o de una política de la organización que aplique una restricción personalizada o gestionada antes de que se aplique en tu entorno de producción. El simulador de políticas proporciona una lista de recursos que infringen la política propuesta antes de que se aplique, lo que te permite reconfigurar esos recursos, solicitar excepciones o cambiar el ámbito de tu política de la organización, todo ello sin interrumpir el trabajo de tus desarrolladores ni provocar que tu entorno deje de funcionar.

En esta página se describe cómo probar un cambio en una política de la organización con el simulador de políticas. También se explica cómo interpretar los resultados de la simulación y cómo aplicar la política de la organización probada si lo desea.

Antes de empezar

  • Si usas la CLI de Google Cloud, define el proyecto que quieras usar para hacer llamadas a la API:

    gcloud config set project PROJECT_ID

    Sustituye PROJECT_ID por el nombre o el ID del proyecto.

  • Enable the Policy Simulator and Resource Manager APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  • Opcional: Consulta una introducción al servicio de políticas de organización.

Roles obligatorios

Para obtener los permisos que necesitas para ejecutar simulaciones y acceder a ellas, pide a tu administrador que te asigne el rol de gestión de identidades y accesos Administrador del simulador de políticas de la organización (roles/policysimulator.orgPolicyAdmin) en la organización. Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.

Este rol predefinido contiene los permisos necesarios para ejecutar y acceder a simulaciones. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:

Permisos obligatorios

Para ejecutar y acceder a simulaciones, se necesitan los siguientes permisos:

  • orgpolicy.constraints.list
  • orgpolicy.customConstraints.get
  • orgpolicy.policies.list
  • cloudasset.assets.searchAllResources
  • cloudasset.assets.listResource
  • cloudasset.assets.listOrgPolicy
  • policysimulator.orgPolicyViolationsPreviews.list
  • policysimulator.orgPolicyViolationsPreviews.get
  • policysimulator.orgPolicyViolationsPreviews.create
  • policysimulator.orgPolicyViolations.list

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

Probar un cambio en una política

Puedes probar un cambio en una restricción personalizada, en una política de la organización que aplique una restricción personalizada o gestionada, o en ambas al mismo tiempo.

Probar un cambio en una restricción personalizada

Consola

  1. En la Google Cloud consola, ve a la página Políticas de la organización.

    Ir a Políticas de organización

  2. En el selector de organizaciones, selecciona el recurso de tu organización.

  3. Elige una de estas opciones:

    • Para probar una nueva restricción personalizada, haz clic en Restricción personalizada.

    • Para modificar una restricción personalizada, selecciónala en la lista de la página Políticas de organización y, a continuación, haz clic en Editar restricción.

  4. Crea o actualiza la restricción personalizada que quieras probar.

    1. En el cuadro Nombre visible, introduce un nombre descriptivo para la restricción. Este campo tiene una longitud máxima de 200 caracteres. No uses información personal identificable ni datos sensibles en los nombres visibles, ya que podrían mostrarse en mensajes de error.

    2. En el cuadro ID de la restricción, introduce el nombre que quieras para la nueva restricción personalizada. Una restricción personalizada debe empezar por custom. y solo puede incluir letras mayúsculas, letras minúsculas o números. Por ejemplo, custom.disableGkeAutoUpgrade. La longitud máxima de este campo es de 70 caracteres, sin contar el prefijo, por ejemplo, organizations/123456789/customConstraints/custom.. No incluyas IPI ni datos sensibles en el ID de la restricción, ya que podría exponerse en mensajes de error.

      El ID de la restricción no se puede cambiar después de crear una restricción personalizada.

    3. En el cuadro Descripción, introduce una descripción de la restricción que sea fácil de entender para que se muestre como mensaje de error cuando se incumpla la política. Este campo tiene una longitud máxima de 2000 caracteres. No incluyas IPI ni datos sensibles en la descripción, ya que podrían exponerse en mensajes de error.

    4. En el cuadro Tipo de recurso, seleccione el nombre del recurso REST Google Cloud que contiene el objeto y el campo que quiere restringir. Por ejemplo, container.googleapis.com/NodePool. La mayoría de los tipos de recursos pueden tener un máximo de 20 restricciones personalizadas por recurso. Si intentas crear una restricción personalizada para un recurso que ya tiene el número máximo de restricciones personalizadas, la operación fallará.

    5. En la sección Método de aplicación obligatoria, selecciona si quieres aplicar la restricción en un método REST CREATE o en los métodos CREATE y UPDATE. No todos los Google Cloud servicios admiten ambos métodos. Para ver los métodos admitidos de cada servicio, busca el servicio en Servicios admitidos.

    6. Para definir una condición, haz clic en Editar condición.

    7. En el panel Añadir condición, crea una condición CEL que haga referencia a un recurso de servicio compatible, por ejemplo, resource.management.autoUpgrade == false. Este campo tiene una longitud máxima de 1000 caracteres. Para obtener más información sobre el uso de CEL, consulta Lenguaje de expresión común. Para obtener más información sobre los recursos de servicio que puede usar en sus restricciones personalizadas, consulte Servicios admitidos en restricciones personalizadas.

    8. Haz clic en Guardar.

    9. En la sección Acción, selecciona si quieres permitir o denegar el método evaluado si se cumple la condición que has escrito.

      La acción de denegación significa que la operación para crear o actualizar el recurso se bloquea si la condición se evalúa como verdadera.

      La acción de permitir significa que la operación para crear o actualizar el recurso solo se permite si la condición se evalúa como verdadera. Se bloquean todos los demás casos, excepto los que se incluyan explícitamente en la condición.

  5. Haz clic en Probar restricción.

  6. Si se trata de una restricción nueva, aparecerá el panel Configurar política de la organización. Para definir una política de organización que aplique la restricción personalizada, haz lo siguiente:

    1. En el cuadro Seleccionar ámbito, selecciona el recurso para el que quieras probar la restricción personalizada.

    2. Haz clic en Anular política del recurso superior.

    3. Haz clic en Añadir regla.

    4. En la sección Implementación obligatoria, selecciona Activado.

    5. Si quieres que la política de la organización dependa de una etiqueta, haz clic en Añadir condición. Si añades una regla condicional a una política de una organización, debes añadir al menos una regla incondicional o la política no se podrá guardar. Para obtener más información, consulta Configurar una política de organización con etiquetas.

    6. Haz clic en Hecho y, a continuación, en Continuar.

Se mostrará la página Historial de simulaciones, con una lista de las simulaciones que ha realizado en los últimos 14 días. Consulta los resultados de Simulador de políticas en esta página para obtener más información.

gcloud

  1. Para probar la aplicación de una restricción personalizada nueva o actualizada, crea un archivo JSON o YAML que defina la restricción personalizada que quieras probar.

    Si quieres probar los cambios en una restricción personalizada, puedes usar el comando organizations.customConstraints.get de la CLI de gcloud para obtener la representación JSON o YAML actual de la restricción personalizada y, a continuación, editar ese archivo.

    Un archivo YAML que define una restricción personalizada tiene un aspecto similar al siguiente:

    name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME
    resourceTypes:
    - RESOURCE_NAME
    methodTypes:
    - METHOD1
    - METHOD2
    condition: "CONDITION"
    actionType: ACTION
    displayName: DISPLAY_NAME
    description: DESCRIPTION
    

    Haz los cambios siguientes:

    • ORGANIZATION_ID: el ID de tu organización, como 123456789.

    • CONSTRAINT_NAME: el nombre que quieras asignar a la nueva restricción personalizada. Una restricción personalizada debe empezar por custom. y solo puede incluir letras mayúsculas, letras minúsculas o números. Por ejemplo, custom.disableGkeAutoUpgrade. La longitud máxima de este campo es de 70 caracteres, sin contar el prefijo, por ejemplo, organizations/123456789/customConstraints/custom..

    • RESOURCE_NAME: nombre completo del recurso RESTGoogle Cloud que contiene el objeto y el campo que quieres restringir. Por ejemplo, container.googleapis.com/NodePool. La mayoría de los tipos de recursos pueden tener un máximo de 20 restricciones personalizadas por recurso. Si intentas crear una restricción personalizada para un recurso que ya tiene el número máximo de restricciones personalizadas, la operación fallará. Para obtener más información sobre los recursos de servicio que puede usar en sus restricciones personalizadas, consulte Servicios admitidos en restricciones personalizadas.

    • METHOD1,METHOD2: una lista de métodos RESTful para los que se debe aplicar la restricción. Puede ser CREATE o CREATE y UPDATE. No todos los Google Cloud servicios admiten ambos métodos. Para ver los métodos admitidos de cada servicio, busca el servicio en Servicios admitidos.

    • CONDITION: una condición de CEL que hace referencia a un recurso de servicio compatible, por ejemplo, "resource.management.autoUpgrade == false". Este campo tiene una longitud máxima de 1000 caracteres. Para obtener más información sobre el uso de CEL, consulta Lenguaje de expresión común.

    • ACTION: la acción que se debe llevar a cabo si se cumple la condición condition. Puede ser ALLOW o DENY.

      • La acción de denegación significa que, si la condición se evalúa como verdadera, se bloquea la operación para crear o actualizar el recurso.

      • La acción de permitir significa que, si la condición se evalúa como verdadera, se permite la operación para crear o actualizar el recurso. Esto también significa que se bloquearán todos los demás casos, excepto el que se haya incluido explícitamente en la condición.

    • DISPLAY_NAME: nombre descriptivo de la restricción. Este campo tiene una longitud máxima de 200 caracteres.

    • DESCRIPTION: descripción de la restricción que se mostrará como mensaje de error cuando se infrinja la política. Este campo tiene una longitud máxima de 2000 caracteres. Para obtener más información sobre cómo crear restricciones personalizadas, consulta el artículo Crear y gestionar restricciones personalizadas.

  2. Crea o modifica una política de la organización que aplique la restricción personalizada.

    • Para probar la aplicación de una restricción personalizada nueva o actualizada, crea un archivo JSON o YAML que defina la política de la organización que quieras probar:

      name: organizations/ORGANIZATION_ID/policies/CONSTRAINT_NAME
      spec:
        rules:
        - enforce: true
      

      Haz los cambios siguientes:

      • ORGANIZATION_ID con el ID de tu organización, como 1234567890123.

      • CONSTRAINT_NAME con el nombre de la restricción personalizada que quieras probar. Por ejemplo, custom.EnforceGKEBinaryAuthz.

    • Para probar la aplicación de una restricción personalizada de forma condicional en función de la existencia de una etiqueta concreta, crea un archivo JSON o YAML que defina la política de organización:

      name: organizations/ORGANIZATION_ID/policies/CONSTRAINT_NAME
      spec:
        rules:
        - condition:
            expression: CONDITION
          enforce: false
        - enforce: true
      

      Haz los cambios siguientes:

      • ORGANIZATION_ID con el ID de tu organización, como 1234567890123.

      • CONSTRAINT_NAME con el nombre de la restricción personalizada que quieras probar. Por ejemplo, custom.EnforceGKEBinaryAuthz.

      • CONDITION con una condición CEL que haga referencia a un recurso de servicio compatible, por ejemplo "resource.matchTag('env', 'dev')".

      Para obtener más información sobre las políticas de organización condicionales, consulta Configurar una política de organización con etiquetas.

    • Para probar la eliminación de una política de organización que aplique una restricción personalizada, crea un archivo JSON o YAML que defina la política de organización sin ninguna regla, excepto la de heredar la política de su recurso principal:

      name: organizations/ORGANIZATION_ID/policies/CONSTRAINT_NAME
      spec:
        inheritFromParent: true
      

      Haz los cambios siguientes:

      • ORGANIZATION_ID con el ID de tu organización, como 1234567890123.

      • CONSTRAINT_NAME con el nombre de la restricción personalizada que quieras probar. Por ejemplo, custom.EnforceGKEBinaryAuthz.

  3. Para simular el cambio en una restricción personalizada, una política de la organización o ambas, ejecuta el comando policy-intelligence simulate orgpolicy:

    gcloud policy-intelligence simulate orgpolicy \
      --organization=ORGANIZATION_ID \
      --custom-constraints=CONSTRAINT_PATH \
      --policies=POLICY_PATH
    

    Haz los cambios siguientes:

    • ORGANIZATION_ID: el ID de tu organización, como 1234567890123. No se admite la simulación de cambios en varias organizaciones.

    • CONSTRAINT_PATH: la ruta completa de la restricción personalizada que has creado o actualizado. Por ejemplo, tmp/constraint.yaml. Si define la marca --policies, no es necesario que defina la marca --custom-constraints.

    • POLICY_PATH: la ruta completa a la política de la organización que has creado o actualizado. Por ejemplo, tmp/policy.yaml si define la marca --custom-constraints, no es necesario que defina la marca --policies.

Después de varios minutos, el comando imprime una lista de recursos que infringirían los cambios en la restricción personalizada, la política de la organización o ambas.

También puedes ver los resultados en la página Historial de simulaciones de la consola Google Cloud . Consulta los resultados del simulador de políticas en esta página para saber cómo interpretarlos.

A continuación, se muestra un ejemplo de respuesta de una simulación de política de organización. En esta simulación se incluye una restricción personalizada que limita la creación de recursos de clúster de Google Kubernetes Engine en los que no está habilitada la autorización binaria. En este caso, si se aplicara el cambio propuesto, dos recursos de clúster infringirían la política: orgpolicy-test-cluster en el proyecto simulator-test-project y autopilot-cluster-1 en el proyecto orgpolicy-test-0.

Waiting for operation [organizations/012345678901/locations/global/orgPolic
yViolationsPreviews/85be9a2d-8c49-470d-a65a-d0cb9ffa8f83/operations/1883a83
c-c448-42e5-a7c5-10a850928f06] to complete...done.
---
customConstraint:
  actionType: ALLOW
  condition: resource.binaryAuthorization.enabled == true
  methodTypes:
  - CREATE
  name: organizations/012345678901/customConstraints/custom.EnforceGKEBinaryAuthz
  resourceTypes:
  - container.googleapis.com/Cluster
name: organizations/012345678901/locations/global/orgPolicyViolationsPreviews/3dd47fd3-6df1-4156-8f10-413a3fc0ed83/orgPolicyViolations/b9fd23a5-7163-46de-9fec-7b9aa6af1113
resource:
  ancestors:
  - organizations/012345678901
  - projects/456789012345
  assetType: container.googleapis.com/Cluster
  resource: //container.googleapis.com/projects/simulator-test-project/locations/us-central1/clusters/orgpolicy-test-cluster
---
customConstraint:
  actionType: ALLOW
  condition: resource.binaryAuthorization.enabled == true
  methodTypes:
  - CREATE
  name: organizations/012345678901/customConstraints/custom.EnforceGKEBinaryAuthz
  resourceTypes:
  - container.googleapis.com/Cluster
name: organizations/012345678901/locations/global/orgPolicyViolationsPreviews/3dd47fd3-6df1-4156-8f10-413a3fc0ed83/orgPolicyViolations/e73896e6-7613-4a8d-8436-5df7a6455121
resource:
  ancestors:
  - organizations/012345678901
  - folders/789012345678
  - projects/456789012345
  assetType: container.googleapis.com/Cluster
  resource: //container.googleapis.com/projects/orgpolicy-test-0/locations/us-central1/clusters/autopilot-cluster-1

Probar un cambio en una restricción gestionada

Consola

  1. En la Google Cloud consola, ve a la página Políticas de la organización.

    Ir a Políticas de organización

  2. Haz clic en **Seleccionar proyecto y, a continuación, selecciona el recurso de organización, carpeta o proyecto para el que quieras editar la política de la organización.

  3. En la lista, selecciona la restricción gestionada para la que quieras actualizar la política de la organización. En la página Detalles de la política, puede ver la fuente de esta política de organización, la evaluación de la política efectiva en este recurso y más detalles sobre la restricción gestionada.

  4. Para actualizar la política de la organización de este recurso, haz clic en Gestionar política.

  5. En la página Editar política, selecciona Anular política del recurso superior.

  6. Haz clic en Añadir regla.

  7. En la sección Aplicación, selecciona si quieres activar o desactivar la aplicación de esta política de la organización.

  8. Si quieres que la política de la organización dependa de una etiqueta, haz clic en Añadir condición. Si añades una regla condicional a una política de organización, debes añadir al menos una regla incondicional o la política no se podrá guardar. Para obtener más información, consulta Configurar una política de organización con etiquetas.

  9. Haga clic en Probar cambios.

Se mostrará la página Historial de simulaciones, con una lista de las simulaciones que ha realizado en los últimos 14 días. Consulta los resultados de Simulador de políticas en esta página para obtener más información.

gcloud

  1. Crea o modifica una política de organización que aplique una restricción gestionada.

    • Para probar la creación o actualización de una política de organización que aplique una restricción gestionada, crea un archivo JSON o YAML que defina la política de organización.

      name: RESOURCE_TYPE/RESOURCE_ID/policies/CONSTRAINT_NAME
      spec:
        rules:
        - enforce: ENFORCEMENT_STATE
      

      Haz los cambios siguientes:

      • RESOURCE_TYPE con organizations, folders o projects.

      • RESOURCE_ID con el ID de tu organización, el ID de la carpeta, el ID del proyecto o el número del proyecto, según el tipo de recurso especificado en RESOURCE_TYPE.

      • CONSTRAINT_NAME con el nombre de la restricción gestionada que quieras probar. Por ejemplo, iam.managed.disableServiceAccountKeyCreation.

      • ENFORCEMENT_STATE con true para aplicar esta política de la organización cuando se defina o false para inhabilitarla cuando se defina.

      Si quieres que la política de organización dependa de una etiqueta, añade un bloque condition al rules. Si añade una regla condicional a una política de organización, debe añadir al menos una regla incondicional o la política no se podrá guardar. Para obtener más información, consulta Configurar una política de organización con etiquetas.

    • Para probar la eliminación de una política de organización que aplique una restricción gestionada, crea un archivo JSON o YAML que defina la política de organización sin reglas, excepto la de heredar la política de su recurso superior:

      name: organizations/ORGANIZATION_ID/policies/CONSTRAINT_NAME
      spec:
        inheritFromParent: true
      

    Haz los cambios siguientes:

    • ORGANIZATION_ID con el ID de tu organización.

    • CONSTRAINT_NAME con el nombre de la restricción gestionada que quieras eliminar. Por ejemplo, iam.managed.disableServiceAccountKeyCreation.

  2. Ejecuta el comando policy-intelligence simulate orgpolicy:

    gcloud policy-intelligence simulate orgpolicy \
      --organization=ORGANIZATION_ID \
      --policies=POLICY_PATH
    

    Haz los cambios siguientes:

    • ORGANIZATION_ID con el ID de tu organización, como 1234567890123. No se admite la simulación de cambios en varias organizaciones.

    • POLICY_PATH con la ruta completa al archivo YAML de la política de tu organización.

    Después de varios minutos, el comando imprime una lista de recursos que infringirían los cambios en la restricción personalizada, la política de la organización o ambas.

    También puedes ver los resultados en la página Historial de simulaciones de la consola Google Cloud . Consulta los resultados del simulador de políticas en esta página para saber cómo interpretarlos.

Resultados del simulador de políticas

El simulador de políticas informa de los resultados de un cambio en una restricción personalizada o en una política de la organización como una lista de infracciones de la política simulada. La consolaGoogle Cloud almacena los resultados de las simulaciones que has generado en los últimos 14 días.

Para ver los resultados de la simulación, ve a la página Historial de simulaciones.

Ir al historial de simulaciones

Selecciona una simulación para ver los detalles. En la página Informe de simulación, puede ver una vista previa de las infracciones, que incluye el número total de infracciones causadas por la nueva restricción personalizada o política de la organización, el número de recursos que se han comprobado en el ámbito de la simulación y la hora en la que se ha completado la simulación.

Si has simulado una restricción personalizada, puedes hacer clic en Detalles de la restricción para ver la configuración específica que se ha simulado. Si has simulado una política de organización, en la pestaña Detalles de la política se muestra la configuración que se ha simulado.

Todas las infracciones se muestran en la tabla de recursos. Cada recurso que infringe la nueva restricción personalizada o la política de la organización se muestra en una lista con un enlace a la entrada del recurso en el inventario de recursos de Cloud. Los recursos de proyecto, carpeta y organización se muestran con la suma total de los recursos que hay por debajo de ellos en la jerarquía y que infringen la nueva restricción personalizada o política de organización.

Aplicar un cambio de política probado

Una vez que hayas probado tu restricción personalizada, tu política de organización o ambas, puedes configurar la restricción personalizada y aplicar la política de organización. Puedes ver todos los resultados del simulador de políticas en la Google Cloud consola, independientemente de cómo se hayan generado. Si el informe de simulación incluye cambios en una sola política de la organización, puedes aplicar la política directamente a través de los resultados de la simulación. Para aplicar cambios de prueba en varias políticas de organización, usa la CLI de Google Cloud.

Consola

  1. Para aplicar los resultados de una simulación de una política de restricciones personalizada, ve a la página Historial de simulaciones.

    Ir al historial de simulaciones

  2. Selecciona el informe de simulación de la restricción personalizada o la política de la organización que quieras aplicar.

  3. Si este informe de simulación incluye una restricción personalizada, haga clic en Guardar restricción.

  4. Si este informe de simulación incluye cambios en una sola política de la organización, puedes aplicar esa política como política de ejecución de prueba para monitorizar el comportamiento en producción sin poner en riesgo los proyectos ni los recursos. Para ello, haz clic en Definir política de ejecución de prueba. Se mostrará la página Detalles de la política de la nueva página de políticas de la organización.

    Para aplicar la política de la organización inmediatamente, haz clic en y, a continuación, en Definir política.

gcloud

  1. Para aplicar una restricción personalizada, debes configurarla para que esté disponible en las políticas de organización de tu organización. Para configurar una restricción personalizada, usa el comando gcloud org-policies set-custom-constraint:

    gcloud org-policies set-custom-constraint CONSTRAINT_PATH
    

    Sustituye CONSTRAINT_PATH por la ruta completa a tu archivo de restricciones personalizadas. Por ejemplo, /home/user/customconstraint.yaml.

    Una vez completado este proceso, tu restricción personalizada estará disponible en la lista de Google Cloud políticas de la organización.

  2. Para definir la política de la organización, usa el comando gcloud org-policies set-policy:

    gcloud org-policies set-policy POLICY_PATH
    

    Sustituye POLICY_PATH por la ruta completa al archivo YAML de la política de tu organización.

    La política tarda hasta 15 minutos en aplicarse.

Guardar los resultados de la simulación

Consola

Si usas la Google Cloud consola, puedes guardar los resultados de Simulador de políticas en un archivo CSV.

  1. Para guardar los resultados del simulador de políticas, ve a la página Historial de simulaciones.

    Ir al historial de simulaciones

  2. Selecciona el informe de simulación que quieras guardar.

  3. Haz clic en Exportar todos los resultados.

gcloud

Si usas la CLI de gcloud, puedes guardar los resultados del simulador de políticas como archivos JSON o YAML.

De forma predeterminada, los resultados de las pruebas en Google Cloud CLI se muestran en formato YAML. Para guardar el resultado de una prueba como archivo YAML, redirige la salida del comando simulate orgpolicy al ejecutar la simulación:

> FILENAME

Sustituye FILENAME por el nombre del archivo de salida.

Para guardar un resultado de prueba como archivo JSON, añade la siguiente marca al comando simulate orgpolicy al ejecutar la simulación:

--format=json > FILENAME

Sustituye FILENAME por el nombre del archivo de salida.

Siguientes pasos