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 restricción personalizada o una política de la organización nueva que aplique una restricción personalizada antes de que se aplique a tu entorno de producción. Policy Simulator proporciona una lista de recursos que incumplen la política propuesta antes de que se aplique, lo que te permite volver a configurar esos recursos, solicitar excepciones o cambiar el permiso de la política de tu organización, todo sin interrumpir a los desarrolladores ni dejar inactivo 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 explica cómo interpretar los resultados de la 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

A fin de obtener los permisos que necesitas para ejecutar las simulaciones y acceder a ellas, sigue estos pasos: solicita a tu administrador que te otorgue el Rol de IAM 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 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 de 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 ambas al mismo tiempo.

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. Selecciona el selector de proyectos en la parte superior de la página.

  3. En el selector de proyectos, selecciona el recurso que deseas. para probar cambios en una política de la organización. Para probar los cambios en un experimento debes seleccionar un recurso de la organización.

  4. Si deseas probar una nueva restricción personalizada, haz clic en Restricción personalizada. Si quieres Para realizar cambios en una restricción personalizada existente, selecciónala de la lista en la página Políticas de la organización Editar restricción.

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

    Por ejemplo, para definir una restricción personalizada que restrinja la creación de recursos de clúster de Google Kubernetes Engine en los que no está habilitada la autorización binaria, haz lo siguiente:

    1. En el cuadro Tipo de recurso, selecciona container.googleapis.com/Cluster.

    2. En Método de aplicación, selecciona Aplicar al crearse.

    3. Haz clic en Editar condición.

    4. En el panel Agregar condición, ingresa resource.binaryAuthorization.enabled == true

    5. Haz clic en Guardar.

    6. En Acción, selecciona Permitir.

    Para obtener más información, consulta Crea y administra restricciones personalizadas.

  6. Haz clic en Probar restricción.

  7. Si se trata de una restricción nueva o que una organización no aplica de manera forzosa debes definir la política de la organización.

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

    2. Haz clic en Personalizar.

    3. Haz clic en Agregar una regla.

    4. En Aplicación, selecciona Activado y, luego, haz clic en Listo.

    5. Haga clic en Continuar.

Aparecerá la página Historial de simulaciones, con una lista de las simulaciones que se realizaron. en los últimos 14 días. Consulta Resultados del Simulador de políticas en esta página para más información.

gcloud

  1. Para probar una restricción personalizada, crea un archivo JSON o YAML que defina la restricción personalizada que deseas probar.

    Por ejemplo, una restricción personalizada que restrinja la creación de Google Kubernetes Engine del clúster en los que la autorización binaria no está habilitada es similar a lo siguiente:

    name: "organizations/ORGANIZATION_ID/customConstraints/custom.EnforceGKEBinaryAuthz"
    resource_types: "container.googleapis.com/Cluster"
    method_types: CREATE
    condition: "resource.binaryAuthorization.enabled == true"
    action_type: ALLOW
    

    Reemplaza ORGANIZATION_ID por el ID de la organización. como 1234567890123.

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

  2. Para probar una política de la organización que aplique de forma condicional 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 que deseas probar.

    Por ejemplo, la siguiente política de la organización restringe la creación de recursos de clúster de Google Kubernetes Engine en los que no está habilitada la autorización binaria, excepto en los recursos que tienen la etiqueta env=dev adjunta.

    name: organizations/ORGANIZATION_ID/policies/custom.EnforceGKEBinaryAuthz
    spec:
      rules:
      - condition:
          expression: "resource.matchTag('env', 'dev')"
        enforce: false
      - enforce: true
    

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

    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.

  3. Para probar una política de la organización que aplique una restricción personalizada, crea un archivo JSON o YAML que defina la política de la organización que deseas probar.

    Por ejemplo, una política de la organización que restringe la creación de Los recursos del clúster de Google Kubernetes Engine en los que la autorización binaria no está habilitada son similar al siguiente:

    name: organizations/ORGANIZATION_ID/policies/custom.EnforceGKEBinaryAuthz
    spec:
      rules:
      - enforce: true
    

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

  4. Para probar la eliminación de una política de la organización que aplique una configuración restricción, crea un archivo JSON o YAML que defina la política pero no establece reglas y hereda la política de su recurso superior.

    Por ejemplo, la siguiente política de la organización simularía borrar un restricción personalizada custom.EnforceGKEBinaryAuthz existente.

    name: organizations/ORGANIZATION_ID/policies/custom.EnforceGKEBinaryAuthz
    spec:
      inheritFromParent: true
    
  5. Ejecuta el siguiente comando para simular el cambio en la restricción personalizada, la política de la organización o ambas:

    gcloud beta 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 simular cambios en varias organizaciones.

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

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

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

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

La siguiente es una respuesta de muestra para una simulación de políticas de la organización. Esta simulación implica una restricción personalizada que restringe la creación de Recursos del clúster de Google Kubernetes Engine en los que la autorización binaria no está habilitada. En este caso, si el cambio propuesto se aplicara, dos recursos del clúster se incumple 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

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. El La consola de Google Cloud almacena los resultados de las simulaciones que generaste en los últimos 14 días días.

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

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 indica la cantidad de incumplimientos totales 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 un política de la organización, la pestaña Detalles de la política muestra la configuración que se simulados.

Todos los incumplimientos se indican en la tabla de recursos. Cada recurso que incumpla la nueva restricción personalizada o política de la organización aparecerá en la lista con un vínculo a la entrada del recurso en Cloud Asset Inventory. Los recursos de la organización, la carpeta y el proyecto se muestran con la suma total de recursos debajo de ellos en la jerarquía que incumplen la nueva restricción personalizada o la 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, sin importar cómo se hayan generado. Si tu informe de simulación incluye cambios en una sola política de la organización, puedes aplicarla directamente a través de los resultados de la simulación. Para aplicar los cambios de prueba en varias las políticas de la organización, usa Google Cloud CLI.

Console

  1. Para aplicar una restricción personalizada de los resultados 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 organización o restricción personalizada política que quieres aplicar.

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

  4. Si este informe de simulación incluye cambios en no más de una organización de organización, puedes aplicarla como política de prueba de validación para supervisar el comportamiento en producción sin introducir riesgos mediante la selección Establece la política de prueba de validación. Aparecerá 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 de inmediato, haz clic en y, luego, selecciona 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

    Cuando lo hagas, tu restricción personalizada estará disponible en tu lista de las políticas de la organización de Google Cloud.

  2. Para aplicar una política de la organización que contenga una restricción personalizada, usa el gcloud org-policies set-policy :

    gcloud org-policies set-policy POLICY_PATH
    

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

    La política puede tardar hasta 15 minutos en aplicarse.

Guarda los resultados de la simulación

Console

Si usas la consola de Google Cloud, puedes guardar los resultados del simulador de políticas como un archivo CSV.

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

    Ir al historial de simulación

  2. Seleccione el informe de simulación que desea guardar.

  3. Haz clic en Exportar resultados completos.

gcloud

Si usas la CLI de gcloud, 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 un resultado de 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 un resultado de prueba como 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?