La gestión basada en políticas [1] [2] [3] es una tecnología que puede simplificar la compleja tarea de gestionar redes y sistemas distribuidos . Bajo este paradigma, un administrador puede gestionar diferentes aspectos de una red o sistema distribuido de una manera flexible y simplificada mediante la implementación de un conjunto de políticas que rigen su comportamiento. [4] [5] Las políticas son reglas independientes de la tecnología que apuntan a mejorar la funcionalidad codificada de los dispositivos administrados mediante la introducción de una lógica interpretada que se puede cambiar dinámicamente sin modificar la implementación subyacente. Esto permite un cierto grado de programabilidad sin la necesidad de interrumpir el funcionamiento del sistema administrado o del sistema de gestión en sí. La gestión basada en políticas puede aumentar significativamente los aspectos de autogestión de cualquier sistema o red distribuida, lo que lleva a un comportamiento más autónomo demostrado por los sistemas de computación autónoma . [6] [7]
La arquitectura de gestión basada en políticas más conocida fue especificada conjuntamente por el IETF y el DMTF . Consta de cuatro elementos funcionales principales: la herramienta de gestión de políticas (PMT), el repositorio de políticas, el punto de decisión de políticas (PDP) y el punto de aplicación de políticas (PEP).
El administrador utiliza el PMT para definir o actualizar las políticas que se deben aplicar en la red administrada. Las políticas resultantes se almacenan en un repositorio en un formato que debe corresponder a un modelo de información [8] para garantizar la interoperabilidad entre productos de diferentes proveedores. Cuando se han agregado nuevas políticas al repositorio o se han modificado las existentes, el PMT emite notificaciones al PDP relevante, que a su vez interpreta las políticas y las comunica al PEP. Este último es un componente que se ejecuta en un nodo que reconoce políticas y puede ejecutar (aplicar) las diferentes políticas. Los componentes de la arquitectura pueden comunicarse entre sí utilizando una variedad de protocolos. La opción preferida para comunicar decisiones de políticas entre un PDP y dispositivos de red (PEP) es el Servicio de políticas abiertas comunes (COPS) o SNMP , y LDAP para la comunicación entre el PMT y el repositorio del PDP.
El enfoque más simple para la especificación de políticas es mediante una secuencia de reglas, en la que cada regla tiene la forma de un par simple de condición-acción. El marco de políticas del IETF adopta este enfoque y considera las políticas como reglas que especifican acciones que se deben realizar en respuesta a condiciones definidas:
Si <condición(es)> entonces <acción(es)>
La parte condicional de la regla puede ser una expresión simple o compuesta especificada en forma normal conjuntiva o disyuntiva. La parte de acción de la regla puede ser un conjunto de acciones que deben ejecutarse cuando las condiciones son verdaderas. El IETF no define un lenguaje específico para expresar políticas de red, sino un modelo de información genérico orientado a objetos para representar información de políticas. Este modelo es genérico y especifica la estructura de clases de políticas abstractas por medio de la asociación, lo que permite a los proveedores implementar su propio conjunto de condiciones y acciones para que las reglas de políticas las utilicen.
Como sucede con cualquier sistema programable, un sistema basado en políticas puede sufrir inconsistencias causadas por reglas contradictorias que rigen su comportamiento. Estas inconsistencias se conocen como conflictos de políticas [9] y surgen como resultado de errores de especificación, omisiones u operaciones de gestión contradictorias y, en algunos casos, pueden tener efectos catastróficos en el funcionamiento del sistema administrado. También se han descrito como análogos a los errores de software [10] que ocurren cuando dos o más políticas se activan simultáneamente e imponen operaciones de gestión contradictorias en el sistema.
Los conflictos de políticas se clasifican en general en independientes del dominio y específicos de la aplicación, [11] donde los primeros, como sugieren los nombres, son independientes de la aplicación de la política, y los últimos están limitados por las restricciones del dominio de la aplicación. Los dominios de aplicación de ejemplo que se han considerado en la literatura incluyen calidad de servicio (QoS) en redes IP, [9] [12] sistemas distribuidos, [11] [13] seguridad de firewall, [14] [15] [16] y control de llamadas en redes de telecomunicaciones. [17] Los conflictos de políticas también se pueden clasificar de acuerdo con el marco de tiempo en el que se pueden detectar: los conflictos estáticos [18] se pueden detectar a través del análisis fuera de línea en el momento de la especificación de la política, mientras que los conflictos dinámicos [19] solo se pueden detectar cuando se aplican las políticas, ya que dependen del estado actual del sistema administrado. Por ejemplo, pueden ocurrir conflictos entre políticas para asignar recursos dinámicamente y aquellas que establecen cuotas para usuarios o clases de servicio. Como tal, la automatización debería ser un aspecto clave de los mecanismos de análisis dinámico para que el impacto operativo de un conflicto pueda mantenerse al mínimo.
Para utilizar políticas de manera efectiva y manejar la funcionalidad de un sistema administrado de manera consistente, es necesario verificar que las políticas recién creadas no entren en conflicto entre sí o con políticas ya implementadas en el sistema. Para lograr esto, los procesos de detección utilizan información sobre las condiciones bajo las cuales pueden surgir conflictos para buscar espacios de políticas e identificar políticas que cumplan con los criterios de conflicto. Con base en los tipos de conflictos identificados en la literatura y los diferentes dominios de aplicación en los que ocurren, la investigación se ha concentrado en el desarrollo de mecanismos y técnicas para su detección efectiva. Aunque los conflictos simples (por ejemplo, los conflictos de modalidad) se pueden detectar mediante análisis sintáctico, las inconsistencias más especializadas requieren una definición precisa de las condiciones para un conflicto, que a veces incluyen conocimiento específico del dominio y procesos que utilizan dicha información para señalar la ocurrencia de un conflicto. Los enfoques populares para la detección de conflictos se han basado en: metapolíticas (reglas de detección), [9] [11] [20] relaciones de políticas, [14] [15] [16] espacios de aplicabilidad, [21] y modelos de información. [22]
La resolución es la última parte del análisis de políticas, que tiene como objetivo manejar las inconsistencias detectadas, preferiblemente de manera automatizada, de modo que se pueda restaurar la coherencia entre las políticas. El proceso de resolución de conflictos puede implicar la retractación, supresión, priorización o modificación de políticas y, en algunos casos, la aplicación de una nueva política para que se pueda restaurar la coherencia entre las reglas de políticas. La metodología para hacerlo depende en gran medida del tipo de políticas involucradas y del dominio en el que ocurren los conflictos. Aunque la intervención humana es inevitable en algunas situaciones, varios esfuerzos de investigación se centraron en técnicas para automatizar el proceso de resolución cuando sea posible. Los enfoques populares para la resolución de conflictos se han basado en: metapolíticas (reglas de resolución), [9] [19] [20] precedencia, [11] orden de políticas, [15] [21] y prevención de conflictos. [23]
El marco temporal en el que se pueden detectar los conflictos influye en la metodología de análisis y los requisitos para abordarlos. Los conflictos estáticos se detectan normalmente mediante un análisis iniciado manualmente por el administrador del sistema; los conflictos representan inconsistencias entre políticas y normalmente se resuelven modificando las políticas. [9] [18] Por el contrario, los conflictos en tiempo de ejecución deben detectarse mediante un proceso que monitoree la aplicación de políticas y detecte situaciones inconsistentes en la ejecución del sistema. La resolución debe lograrse automáticamente, por ejemplo, mediante la aplicación de reglas de resolución. [9] [19] La falta de automatización en el manejo de conflictos en tiempo de ejecución puede tener consecuencias catastróficas en el funcionamiento correcto del sistema, especialmente cuando se gestiona la calidad de servicio para aplicaciones sensibles a los retrasos.
Lo ideal sería que un sistema de gestión basado en políticas facilitara la definición de objetivos administrativos de alto nivel, que sean fáciles de expresar y comprender para los humanos, permitiera traducirlos en políticas de bajo nivel y convertirlos en comandos que configuren los dispositivos administrados en consecuencia. Si bien los objetivos de alto nivel reflejan los objetivos comerciales del administrador de red, las políticas de bajo nivel son responsables de las configuraciones a nivel de dispositivo.
El refinamiento de políticas es el proceso de transformar un objetivo de alto nivel o una especificación de política abstracta en políticas concretas de bajo nivel que se puedan aplicar en el sistema administrado. Las principales tareas del proceso de refinamiento son las siguientes:
Se han desarrollado varios enfoques de refinamiento de políticas. Los más notables se basan en la lógica temporal lineal , [24] el cálculo de eventos , [25] y la computación de utilidad. [26] [27]