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

Policy Simulator de las políticas de la organización te permite obtener una vista previa del impacto de una nueva restricción personalizada o de una política de la organización que aplique una restricción personalizada antes de que se aplique en tu entorno de producción. Policy Simulator proporciona una lista de recursos que infringen la política propuesta antes de que se aplique, lo que te permite volver a configurarlos, solicitar excepciones o cambiar el alcance de la política de la organización, todo sin interrumpir a los desarrolladores ni disminuir el 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

  • En 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.

  • Habilita las API de Policy Simulator and Resource Manager.

    Habilita las API

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

Funciones obligatorias

Si quieres obtener los permisos que necesitas para ejecutar simulaciones y acceder a ellas, pídele 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.

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

Es posible que también puedas obtener estos permisos con funciones personalizadas o con otras funciones predefinidas.

Prueba un cambio de política

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

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

    Por ejemplo, una restricción personalizada que restringe la creación de recursos de clústeres de Google Kubernetes Engine en la que la autorización binaria no está habilitada debería ser similar a la 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 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 recursos de clúster de Google Kubernetes Engine en la que la autorización binaria no está habilitada debería ser similar a la siguiente:

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

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

  3. Para probar una política de la organización que aplique condicionalmente una restricción personalizada basada en 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 la autorización binaria no está habilitada, 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 la organización, 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.

  4. 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, pero no establezca reglas y herede la política de su recurso superior.

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

    name: "organizations/ORGANIZATION_ID/policies/custom.EnforceGKEBinaryAuthz"
    spec:
        inheritFromParent: true
    
  1. 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 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 configuras la marca --policies, no necesitas establecer 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 establecer 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, en la política de la organización o en ambos.

    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 de clústeres de Google Kubernetes Engine en los casos en que la autorización binaria no está habilitada. En este caso, si se aplicara el cambio propuesto, dos recursos del 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
    

Cómo aplicar 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 mediante los procesos normales.

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

    Después de completar este paso, la restricción personalizada estará disponible en tu lista de 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 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 las políticas de la organización.

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

Guarda los resultados de la simulación

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 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 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?