Prueba los cambios en las políticas de la organización con Policy Simulator

Policy Simulator para la política de la organización te permite obtener una vista previa del impacto de una nueva restricción personalizada o política de la organización que aplica una restricción personalizada o administrada antes de que se aplique en tu entorno de producción. Policy Simulator proporciona una lista de los recursos que incumplen la política propuesta antes de que se aplique, lo que te permite reconfigurar esos recursos, solicitar excepciones o cambiar el alcance de tu política de la organización, todo sin interrumpir a tus desarrolladores ni inhabilitar tu entorno.

En esta página, se describe cómo probar un cambio en una política de la organización con Policy Simulator. 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 así lo deseas.

Antes de comenzar

  • Si usas Google Cloud CLI, configura el proyecto que deseas usar para realizar llamadas a la API:

    gcloud config set project PROJECT_ID

    Reemplaza PROJECT_ID por el nombre o el ID del proyecto.

  • Enable the Policy Simulator and Resource Manager APIs.

    Enable the APIs

  • Opcional: Obtén una introducción al Servicio de políticas de la organización.

Roles obligatorios

Para obtener los permisos que necesitas para ejecutar simulaciones y acceder a ellas, pídele a tu administrador que te otorgue el rol de IAM de administrador del simulador de OrgPolicy (roles/policysimulator.orgPolicyAdmin) en la organización. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

Este rol predefinido contiene los permisos necesarios para ejecutar simulaciones y acceder a ellas. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:

Permisos necesarios

Se requieren los siguientes permisos para ejecutar simulaciones y acceder a ellas:

  • 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 o con otros roles predefinidos.

Prueba un cambio en la política

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

Prueba un cambio en una restricción personalizada

Console

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

    Ir a Políticas de la organización

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

  3. Realiza una de las siguientes acciones:

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

    • Para realizar cambios en una restricción personalizada existente, selecciónala de la lista en la página Políticas de la organización y, luego, haz clic en Editar restricción.

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

    1. En el cuadro Nombre visible, ingresa un nombre descriptivo para la restricción. La longitud máxima de este campo es 200 caracteres. No uses PII ni datos sensibles en los nombres visibles, ya que podrían exponerse en mensajes de error.

    2. En el cuadro ID de restricción, ingresa el nombre que deseas para la nueva restricción personalizada. Una restricción personalizada debe comenzar con custom. y solo puede incluir letras mayúsculas, 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 PII ni datos sensibles en el ID de la restricción, ya que podrían exponerse en los mensajes de error.

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

    3. En el cuadro Description, ingresa una descripción fácil de usar de la restricción que se mostrará como un mensaje de error cuando se infringe la política. La longitud máxima de este campo es 2000 caracteres. No incluyas PII ni datos sensibles en la descripción, ya que podrían exponerse en los mensajes de error.

    4. En el cuadro Tipo de recurso, selecciona el nombre del recurso de Google Cloud REST que contiene el objeto y el campo que deseas 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 la cantidad máxima de restricciones personalizadas, la operación fallará.

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

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

    7. En el panel Agregar condición, crea una condición de CEL que haga referencia a un recurso de servicio compatible, por ejemplo, resource.management.autoUpgrade == false. La longitud máxima de este campo es 1000 caracteres. Para obtener detalles sobre el uso de CEL, consulta Common Expression Language. Para obtener más información sobre los recursos de servicio que puedes usar en tus restricciones personalizadas, consulta Servicios compatibles con restricciones personalizadas.

    8. Haz clic en Guardar.

    9. En la sección Acción, selecciona si deseas permitir o rechazar el método evaluado si se cumple la condición que escribiste.

      La acción de rechazo 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 indican 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 la organización que aplique la restricción personalizada, haz lo siguiente:

    1. En el cuadro Seleccionar alcance, selecciona el recurso para el que deseas probar la restricción personalizada.

    2. Haz clic en Anular la política del elemento superior.

    3. Haz clic en Agregar una regla.

    4. En la sección Aplicación, selecciona Activada.

    5. De manera opcional, haz clic en Agregar condición para que la política de la organización sea condicional en una etiqueta. Si agregas una regla condicional a una política de la organización, debes agregar al menos una regla sin condición o la política no se podrá guardar. Para obtener más información, consulta Configura una política de la organización con etiquetas.

    6. Haz clic en Listo y, luego, en Continuar.

Aparecerá la página Historial de simulaciones, con una lista de las simulaciones que realizaste en los últimos 14 días. Consulta Resultados de Policy Simulator 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 deseas probar.

    Si deseas probar los cambios en una restricción personalizada existente, puedes usar el comando organizations.customConstraints.get de gcloud CLI para recuperar la representación actual en formato JSON o YAML de la restricción personalizada y, luego, realizar ediciones en ese archivo.

    Un archivo YAML que define una restricción personalizada se ve de la siguiente manera:

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

    Reemplaza lo siguiente:

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

    • CONSTRAINT_NAME: el nombre que deseas para tu nueva restricción personalizada. Una restricción personalizada debe comenzar con custom. y solo puede incluir letras mayúsculas, 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: Es el nombre completamente calificado del recurso deGoogle Cloud REST que contiene el objeto y el campo que deseas 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 la cantidad máxima de restricciones personalizadas, la operación fallará. Para obtener más información sobre los recursos de servicio que puedes usar en tus restricciones personalizadas, consulta Servicios compatibles con restricciones personalizadas.

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

    • CONDITION: una condición de CEL que hace referencia a un recurso de servicio compatible, por ejemplo, "resource.management.autoUpgrade == false". La longitud máxima de este campo es 1000 caracteres. Para obtener detalles sobre el uso de CEL, consulta Common Expression Language.

    • ACTION: la acción que se realiza si se cumple condition. Puede ser ALLOW o DENY.

      • La acción de rechazo 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 bloquean todos los demás casos, excepto el que se indica explícitamente en la condición.

    • DISPLAY_NAME: un nombre descriptivo para la restricción. La longitud máxima de este campo es 200 caracteres.

    • DESCRIPTION: una descripción fácil de usar de la restricción que se mostrará como un mensaje de error cuando se infringe la política. Este campo tiene una longitud máxima de 2,000 caracteres. Para obtener más información sobre cómo crear restricciones personalizadas, consulta Crea y administra 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 deseas probar:

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

      Reemplaza lo siguiente:

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

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

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

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

      Reemplaza lo siguiente:

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

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

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

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

    • Para probar la eliminación de una política de la organización que aplica una restricción personalizada, crea un archivo JSON o YAML que defina la política de la organización sin reglas establecidas, excepto por la herencia de la política de su recurso principal:

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

      Reemplaza lo siguiente:

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

      • CONSTRAINT_NAME por el nombre de la restricción personalizada que deseas 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
    

    Reemplaza lo siguiente:

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

    • CONSTRAINT_PATH: Es la ruta de acceso completa a la restricción personalizada que creaste o actualizaste. Por ejemplo, tmp/constraint.yaml Si estableces la marca --policies, no es necesario que establezcas la marca --custom-constraints.

    • POLICY_PATH: Es la ruta de acceso completa a la política de la organización que creaste o actualizaste. Por ejemplo, tmp/policy.yaml. Si configuras la marca --custom-constraints, no necesitas configurar la marca --policies.

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

Los resultados también se pueden ver en la página Historial de simulación de la consola de Google Cloud . Consulta Resultados de Policy Simulator en esta página para aprender a leer los resultados.

A continuación, se muestra una respuesta de ejemplo para una simulación de política de la organización. Esta simulación 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 incumplirí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

Cómo probar un cambio en una restricción administrada

Console

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

    Ir a Políticas de la organización

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

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

  4. Si deseas actualizar la política de la organización para este recurso, haz clic en Administrar política.

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

  6. Haz clic en Agregar una regla.

  7. En la sección Aplicación, selecciona si la aplicación de esta política de la organización debe estar activada o desactivada.

  8. De manera opcional, haz clic en Agregar condición para que la política de la organización sea condicional en una etiqueta. Si agregas una regla condicional a una política de la organización, debes agregar al menos una regla sin condición o la política no se podrá guardar. Para obtener más información, consulta Configura una política de la organización con etiquetas.

  9. Haz clic en Probar cambios.

Aparecerá la página Historial de simulaciones, con una lista de las simulaciones que realizaste en los últimos 14 días. Consulta Resultados de Policy Simulator en esta página para obtener más información.

gcloud

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

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

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

      Reemplaza lo siguiente:

      • 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 por el nombre de la restricción administrada que deseas probar. Por ejemplo, iam.managed.disableServiceAccountKeyCreation

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

      De manera opcional, para que la política de la organización sea condicional en una etiqueta, agrega un bloque condition a rules. Si agregas una regla condicional a una política de la organización, debes agregar al menos una regla sin condición o la política no se podrá guardar. Para obtener más información, consulta Configura una política de la organización con etiquetas.

    • Para probar la eliminación de una política de la organización que aplica una restricción administrada, crea un archivo JSON o YAML que defina la política de la organización sin reglas establecidas, excepto la herencia de la política de su recurso principal:

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

    Reemplaza lo siguiente:

    • ORGANIZATION_ID por el ID de la organización.

    • CONSTRAINT_NAME por el nombre de la restricción administrada que deseas borrar. Por ejemplo, iam.managed.disableServiceAccountKeyCreation

  2. Ejecuta el comando policy-intelligence simulate orgpolicy:

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

    Reemplaza lo siguiente:

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

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

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

    Los resultados también se pueden ver en la página Historial de simulación de la consola de Google Cloud . Consulta Resultados de Policy Simulator en esta página para aprender a leer los resultados.

Resultados de Policy Simulator

Policy Simulator informa los resultados de un cambio en una restricción personalizada o política de la organización como una lista de incumplimientos de la política simulada. La consola deGoogle Cloud almacena los resultados de las simulaciones que generaste 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 simulación

Selecciona una simulación para ver los detalles. En la página Informe de simulación, puedes ver la vista previa de los incumplimientos, que incluye la cantidad total de incumplimientos causados por la nueva restricción personalizada o política de la organización, la cantidad de recursos que se verificaron en el alcance de la simulación y la hora en la que se completó la simulación.

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

Todos los incumplimientos se enumeran en la tabla de recursos. Cada recurso que incumpla la nueva restricción personalizada o política de la organización se mostrará con un vínculo a la entrada del recurso en Cloud Asset Inventory. Los recursos de proyecto, carpeta y organización se muestran con la suma total de los recursos que se encuentran debajo de ellos en la jerarquía y que incumplen la nueva restricción personalizada o política de la organización.

Aplica un cambio de política probado

Después de probar la restricción personalizada, la política de la organización o ambas, puedes configurar la restricción personalizada y aplicar la política de la organización. Puedes ver todos los resultados de Policy Simulator en la consola de Google Cloud , independientemente de cómo se hayan generado. Si tu informe de simulación incluye cambios en no más de una política de la organización, puedes aplicar la política de la organización directamente a través de los resultados de la simulación. Para aplicar los cambios de prueba en varias políticas de la organización, usa Google Cloud CLI.

Console

  1. Para aplicar los resultados de una restricción personalizada de Policy Simulator, ve a la página Historial de simulación.

    Ir al historial de simulación

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

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

  4. Si este informe de simulación incluye cambios en no más de una política de la organización, puedes aplicar esa política de la organización como una política de prueba de validación para supervisar el comportamiento en producción sin introducir riesgos. Para ello, haz clic en Establecer política de prueba de validación. Aparecerá la página Detalles de la política para la nueva política de la organización.

    Para aplicar la política de la organización de inmediato, haz clic en y, luego, en Establecer política.

gcloud

  1. Para aplicar una restricción personalizada, debes configurarla para que esté disponible para las políticas de la 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
    

    Reemplaza CONSTRAINT_PATH por la ruta de acceso completa al archivo de restricción personalizado. Por ejemplo, /home/user/customconstraint.yaml

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

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

    gcloud org-policies set-policy POLICY_PATH
    

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

    La política tarda hasta 15 minutos en aplicarse.

Guarda los resultados de la simulación

Console

Si usas la consola de Google Cloud , puedes guardar los resultados de Policy Simulator como un archivo CSV.

  1. Para guardar los resultados de Policy Simulator, ve a la página Historial de simulaciones.

    Ir al historial de simulación

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

  3. Haz clic en Exportar resultados completos.

gcloud

Si usas gcloud CLI, puedes guardar los resultados de Policy Simulator 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 un archivo YAML, redirecciona el resultado del comando simulate orgpolicy cuando ejecutes la simulación:

> FILENAME

Reemplaza FILENAME por un nombre para el archivo de salida.

Para guardar el resultado de una prueba como un archivo JSON, agrega la siguiente marca al comando simulate orgpolicy cuando ejecutes la simulación:

--format=json > FILENAME

Reemplaza FILENAME por un nombre para el archivo de salida.

¿Qué sigue?