La política como código (PaC) es un enfoque moderno que aporta muchas ventajas en términos de automatización, eficacia, colaboración, etc., a los equipos que la aplican.

Es posible que haya enmarcado y almacenado las políticas organizativas en sus bases de datos.

Pero, ¿con qué frecuencia realiza un seguimiento de los cambios efectuados en ellas y de si se están aplicando correctamente o no?

Comprendo que es difícil hacer un seguimiento de todo, sobre todo con normas y reglamentos cambiantes.

Sin embargo, si las políticas no se implantan correctamente, puede causar daños a la organización, por ejemplo, en materia de seguridad y cumplimiento.

Para ello, si codifica sus políticas y las presenta en archivos de texto, será más fácil para todos seguirlas.

Esto es lo que le ofrece la política como código y mucho más. También le permite hacer un seguimiento de los cambios realizados en sus políticas y de cómo se están aplicando, y ayuda también a mantener la seguridad y el cumplimiento.

Así pues, entendamos la política como código, sus ventajas y cómo implantarla en su organización.

¿Qué es la política como código?

What-Is-Policy-as-Code

Para entender mejor la política como código, definamos qué es una política en este contexto.

Política: Una política puede ser una norma, instrucción o condición que rige los procesos u operaciones de TI. Define los criterios que deben cumplirse siempre para que un proceso sea aprobado.

Por ejemplo, un determinado fragmento de código debe cumplir las políticas aplicables para que pase las políticas de seguridad de TI y se despliegue.

Las políticas pueden ser de distintos tipos: políticas operativas, políticas de seguridad y políticas de cumplimiento.

política-como-código: Policy-as-code (PaC) es un enfoque de gestión de políticas que utiliza código para definir, compartir, aplicar y actualizar políticas. Requiere que los equipos escriban las políticas utilizando un lenguaje de programación de alto nivel como Python, Java, YAML, etc., basado en las herramientas PaC en uso.

PaC permite a las organizaciones acelerar sus procesos utilizando la automatización basada en código en lugar de depender de formas manuales de gestión de políticas. También facilita que las partes interesadas de distintos ámbitos (como la seguridad informática y el desarrollo) comprendan mejor las políticas.

Por ejemplo, si un desarrollador quiere hacer algunas actualizaciones, puede modificar el código actual e incluso compartirlo con otros si es necesario. Esto les permitirá ver sus políticas y asegurarse de que no se desvían de ellas.

Política como código frente a infraestructura como código

policyascodevsinfrastructureascode

Policy-as-code (PaC) es similar a infrastructure-as-code (IaC) en cuanto al concepto, pero no son lo mismo.

En la actualidad, las empresas utilizan técnicas modernas, desde el desarrollo hasta el despliegue, una gran cantidad de herramientas y recursos. Esto puede incluir infraestructura local, nubes privadas y públicas, máquinas virtuales, modelos y herramientas de software como servicio (SaaS) y muchos más.

Además de utilizar diversas herramientas de gestión y orquestación de recursos, las empresas dependen en gran medida de los proveedores de la nube para el aprovisionamiento. Esto también requiere una gran experiencia para integrar y facilitar la comunicación entre todos los componentes, realizar parches periódicos y abordar los problemas de seguridad.

Ahora bien, el problema era que se necesitaba una gran cantidad de tiempo y recursos para gestionar, revisar, auditar y aprobar los cambios en su infraestructura, por no hablar del dinero gastado en proveedores, software y hardware.

Una buena solución a esto es IaC. IaC utiliza archivos basados en código para automatizar el proceso de aprovisionamiento y configuración. Es una práctica común para casi todos los equipos de operaciones de TI.

Por otro lado, PaC amplía IaC tendiendo un puente entre DevOps e IaC. PaC ayuda a mejorar la gestión de datos, el cumplimiento y las operaciones de seguridad de todas sus implantaciones. Además, sus casos de uso son más amplios que IaC; PaC se está utilizando en todo el ciclo de vida de desarrollo de software.

Además, las herramientas PaC admiten múltiples integraciones y plataformas, pueden limitar los permisos de acceso de los usuarios autorizados y conceder acceso según los mínimos privilegios. Las políticas también pueden definir límites mediante listas de bloqueo y listas de permisos y supervisar su infraestructura para garantizar el cumplimiento en todo el ciclo de vida de la infraestructura y las nubes.

¿Cómo funciona la política como código?

policyworks

Policy-as-code es en realidad un archivo legible y con guión con todos los términos y condiciones esbozados sobre cómo debe hacerse algo. Por ejemplo, puede esbozar la política de pruebas de una aplicación o su creación, despliegue y mantenimiento.

Las políticas se crean utilizando un lenguaje de programación de alto nivel como Java, Python, etc., compatible con las distintas herramientas utilizadas en la organización.

A continuación, las políticas escritas como código se introducen en un sistema (motor de políticas) mediante consultas. Tras tomar el código de la política como entrada, el motor de políticas procesa el código y emite el resultado de la consulta.

A continuación, el resultado crea una decisión alineada con las políticas actuales. Ayuda a determinar los tipos adecuados de pruebas de seguridad del software y cuándo debe realizarlas el equipo de pruebas, y en qué áreas.

Además, las políticas se implementan a través de una llamada API realizada a una canalización CI, lo que garantiza que pueda ejecutar fácilmente pruebas de seguridad sin romper ningún código. Al crear políticas como código, tenga en cuenta los siguientes puntos:

  • Compruebe las dependencias y si las pruebas pueden romper su despliegue o construcción. Determine los problemas e introdúzcalos en una herramienta de seguimiento de problemas.
  • Inspeccione cuándo se realizó el último cambio y cuál fue su magnitud. Asimismo, averigüe si es necesario realizar pruebas adicionales o revisar el código para ello o no.
  • Averigüe si el software contiene datos sensibles, cómo es su superficie de ataque y cualquier riesgo de inactividad que pueda surgir.

Para funcionar, la política como código utiliza tres elementos:

  • Política: PaC utiliza una política determinada en sí misma con código en su interior para facilitar la toma de decisiones.
  • Datos: PaC utiliza datos sobre una determinada aplicación de software, entorno o servicio.
  • Consulta: Una consulta desencadena el proceso de toma de decisiones sobre la base de los datos disponibles y la política introducida en el motor de políticas.

¿Por qué necesita la política como código?

Why-Do-You-Need-Policy-as-Code

Los procesos tradicionales de aplicación de políticas son semiautomatizados o manuales. En ellos, un equipo de desarrollo de software incorpora código de aplicación de políticas en sus aplicaciones.

Implementan el código a su antojo, ya que no existe un marco definido. Como resultado, resulta difícil auditar este código, y el proceso también se vuelve difícil de escalar.

Otro problema de la aplicación tradicional de políticas es que éstas se actualizan con frecuencia en función de las condiciones cambiantes, lo que supone un reto de seguimiento y aplicación para los equipos. Además, los distintos equipos pueden interpretar y aplicar las políticas de forma diferente si no hay marcos definidos.

Además, las empresas modernas necesitan cumplir normativas como PCI DSS, SOC2, etc., que se aplican manualmente o como parte de toda la lógica empresarial. Estas piezas de código están escritas en varios lenguajes, gestionadas por diferentes equipos de desarrollo y almacenadas en repositorios de código. Por lo tanto, cambiar algo puede llevar un tiempo considerable, de semanas a meses, para su implementación.

Todo ello puede dar lugar a confusiones, errores, derroche de recursos y resultar pesado y laborioso. Pero si implementa la política como código, obtendrá el poder de la automatización para definir las políticas, crear y validar los casos de prueba y, por último, aplicarlas.

He aquí las ventajas de utilizar policy-as-code, gritando las razones por las que necesita implantarla.

Automatización

automation-in-policyascode

La política como código facilita la automatización con la ayuda de diversas herramientas. Dichas herramientas permiten a los usuarios automatizar tareas repetitivas y tediosas como la creación, definición, gestión y actualización de políticas. Además, puede incluso automatizar el proceso de prueba de políticas con herramientas CI/CD y asegurarse de que todo está bien antes de la implantación.

Pruebas y validación

Las políticas son código, y puede validar fácilmente su comportamiento y sintaxis utilizando algunas herramientas automatizadas. Esto también facilita las pruebas automatizadas mediante un sistema CI/CD. Le ayudará a detectar infracciones y vulnerabilidades de las políticas y a determinar si éstas se aplican bien antes de su despliegue.

Además, si lo combina con un sistema de control de versiones (VCS), podrá verificar si el comportamiento del sistema se ajusta a las expectativas antes de la integración. Puede establecer políticas a través de una interfaz gráfica de usuario (GUI) y probarlas mediante una solicitud pull.

Sandboxing

PaC proporciona seguridad sandbox para aislar las soluciones de software entre sí. Esto ayuda a prevenir los riesgos de seguridad. Dado que los sandboxes implican un alto nivel de automatización, es necesario garantizar que esos sistemas de automatización no realicen actividades peligrosas. Esto hace que la validación manual sea poco práctica. Por lo tanto, aplicar el PaC se convierte en algo vital si quiere implantar de forma segura sus sandboxes.

Velocidad y precisión

speedandaccuracy

La automatización del proceso de aplicación de políticas conduce a operaciones más rápidas en comparación con las formas manuales. Le ahorrará mucho tiempo que podrá dedicar a otras tareas importantes en lugar de realizar tareas repetitivas y mundanas. Además, la automatización de tareas implica pocos errores o equivocaciones, lo que mejora la precisión de sus tareas y productos.

Codificación y visibilidad

Al representar las cláusulas de sus políticas como código, los datos y la lógica de las políticas pueden esbozarse directamente en el código y aumentarse mediante comentarios, en lugar de aprender las políticas oralmente. Esto facilita a las partes interesadas la comprensión de la lógica y otra información sobre una política determinada, ya que pueden revisar fácilmente el código y sugerir algunos cambios.

Así, esta mayor visibilidad también elimina la necesidad de ponerse en contacto con otros miembros una y otra vez, lo que acelera el flujo de trabajo.

Control de versiones

El seguimiento, la gestión y el control de las versiones de sus políticas resultan sencillos si las almacena como archivos de texto. Si necesita actualizar alguna de sus políticas, sólo tiene que modificar el código actual. Pero si algo no le parece bien, aún tiene la opción de volver a la versión anterior.

Además, también es posible que los miembros del equipo detecten qué políticas se modifican y cuándo. Esto significa que se beneficiará de las características de un sistema de control de versiones (VCS) como el historial, pull requests, diff, etc.

Colaboración

Seguir una forma definida de redactar las políticas y gestionarlas fomenta la colaboración dentro de los equipos externos e internos. La política como código reúne a diferentes equipos y departamentos, ya sean de desarrollo, pruebas, control de versiones o seguridad.

collaboration

Por ejemplo, los equipos de pruebas y desarrollo pueden trabajar juntos para asegurarse de que crean un código de la mejor calidad que supere las pruebas necesarias y esté listo para su despliegue.

Además, los equipos también pueden aprovechar las herramientas de colaboración, los controles de versiones y otras herramientas de automatización para trabajar juntos. Pueden ver el código, hacer sugerencias, poner comentarios para mejorar el código, trabajar en los comentarios, supervisar el código para la seguridad y hacer mucho más. Todo ello contribuirá a acelerar el lanzamiento.

Casos de uso de la política como código

Use-Cases-of-Policy-as-Code

Los distintos casos de uso de la política como código son:

#1. Aprovisionamiento de infraestructuras

Las políticas como código pueden automatizar el proceso de aprovisionamiento de recursos de infraestructura (como servicios, bases de datos, etc.) para las operaciones, el cumplimiento y la seguridad. Aparte del aprovisionamiento de recursos, puede incluir el etiquetado de configuraciones de red, cortafuegos y otros recursos.

El etiquetado de recursos por unidades o equipos puede ayudarle a gestionar eficazmente sus recursos. Además, PaC puede utilizarse para crear una lista de todas las direcciones IP permitidas y concederlas para que pueda acceder a aplicaciones o páginas desde una dirección IP externa.

Además, PaC es útil para aprovisionar recursos de distintos tipos para diferentes entornos como desarrollo, sandbox, producción y staging. De este modo, puede configurar máquinas adecuadas para todos estos entornos.

#2. Controles de Kubernetes

kubernetes-controls

Si utiliza Kubernetes en sus procesos, es probable que desee configurar sus políticas como PaC. Puede crear políticas para gestionar eficazmente los recursos de Kubernetes como nodos, espacios de nombres, Pods, etc.

Además, puede establecer límites de CPU y memoria para crear contenedores y realizar peticiones. Esto ayuda a evitar las condiciones de falta de memoria (OOM) y el acaparamiento de recursos.

Así, la aplicación estará siempre disponible y funcionando de forma óptima. Se recomienda establecer políticas para un número máximo y mínimo de réplicas con el fin de satisfacer las demandas fácilmente sin causar un consumo excesivo de recursos o escasez.

#3. Controles de acceso y autorización

Al crear una política en la que se establezcan normas de autorización para acceder a un servicio, estará aumentando esencialmente su seguridad. Tendrá cláusulas sobre qué usuarios pueden acceder a qué recursos. También puede destacar los métodos de acceso permitidos para que no se produzca ninguna infracción.

Por ejemplo, puede establecer una política según la cual sólo se permitan las conexiones HTTPS. Esto ayudará a mejorar la postura de seguridad. Otro ejemplo podría ser establecer una política para denegar un tipo específico de servicio que considere que no es de confianza.

#4. Auditoría y cumplimiento

Compliance

Hoy en día, las organizaciones necesitan cumplir con las normas gubernamentales e industriales aplicables. Puede incluir normativas como HIPAA, GDPR, PCI DSS, etc. Estas normas exigen que se cumplan las reglas en torno al almacenamiento de datos, la informática y las redes.

Ahora bien, el problema es que estas normas pueden cambiar en cualquier momento en función de las condiciones, y hacer un seguimiento de ellas puede resultar difícil y tedioso.

Mediante la política como código, puede codificar estas reglas e introducirlas fácilmente en su proceso de desarrollo de software. Se asegurará de que todas sus políticas, entradas, cambios y resultados de consultas queden registrados, lo que facilita la auditoría. De este modo, podrá cumplir mejor las normas de conformidad y mantenerse alejado de las sanciones.

#5. Control de gastos

Controlar y gestionar los gastos es una parte vital de la gestión de su infraestructura. Para ello, puede aplicar políticas como código en el etiquetado de recursos, anotaciones, distribución de tipos de máquinas, etc.

  • Si etiqueta los recursos por equipos o departamentos, podrá generar informes que muestren los gastos.
  • Al asignar un tipo específico de máquina y optimizar el código, puede crear informes y dejar que las partes interesadas decidan la mejor manera de optimizar el consumo de recursos de infraestructura.
  • Puede establecer políticas para limitar los gastos de cada proyecto en entornos de infraestructura como producción, desarrollo, sandbox, staging, etc.

Cómo implantar la política como código

How-to-Implement-Policy-as-Code

Ahora, si considera que la política como código es beneficiosa para su organización y se pregunta cómo implantarla, siga leyendo.

Para aprovechar el policy-as-code de la forma más sencilla posible, puede adoptar una herramienta de calidad que soporte el policy-as-code de forma nativa en las áreas en las que se requiere este concepto (como seguridad, cumplimiento, provisión, etc.) Pero antes de elegir una, tenga en cuenta sus casos de uso y estrategias organizativas y la escalabilidad, modelo de soporte, integración y otras características de la herramienta.

Algunas de las mejores herramientas policy-as-code son:

#1. Agente de Open Policy

OpenPolicy Agent es un motor de políticas de propósito general y código abierto que puede unificar toda su aplicación de políticas. Funciona para cualquier dominio proporcionando un marco común de implementación de políticas como código. Es compatible con servicios como Kubernetes, Terraform, AWS, Docker, Envoy, GKE y más.

#2. Nube Prisma

Prisma Cloud es para la seguridad y le permite definir todas sus políticas de seguridad a través de código. Puede escanear automáticamente los archivos de políticas y luego auditarlos para encontrar vulnerabilidades o configuraciones erróneas antes de desplegar realmente el código. Otras herramientas de políticas como código para la seguridad son Checkov, Bridgecrew, etc.

#3. SecurityRAT

SecurityRAT es una herramienta de código abierto de OWASP que resulta útil durante la fase de planificación. Le ayudará a crear las necesidades de seguridad informática como código y a integrarlas en su proyecto. Esto también facilita la auditoría y, por lo tanto, ayuda a cumplir los requisitos de conformidad.

#4. Centinela

Sentinel es un marco de trabajo de políticas como código que es integrable y puede permitir decisiones de políticas basadas en la lógica y de grano fino que puede extender a información de fuentes externas para tomar decisiones informadas. Es útil durante la fase de desarrollo y pruebas.

Otras buenas herramientas son TruffleHog, Git-Secrets, Gitty Leaks, InSpec, Terraform, etc.

Conclusión

Las políticas como código son útiles para las empresas en diversos aspectos, como la provisión de recursos, el control de acceso, el control de costes, la auditoría y el cumplimiento, y la seguridad.

Espero que este artículo le ayude a entender la política como código y por qué debería implantarla en su organización, y cómo.

También puede explorar algunas herramientas interesantes para auditar y gestionar la calidad del código.