Skip to main content

Uso de Open Policy Agent (OPA) para la seguridad y el cumplimiento en la nube

Escrito por
blog hero iac drift purple

9 de octubre de 2019

0 minutos de lectura

Así como los desafíos de administrar operaciones de infraestructura en la nube a gran escala dieron lugar al desarrollo de infraestructura como código, garantizar la seguridad y el cumplimiento de esos entornos dio lugar a las políticas como código. Los entornos de infraestructura en la nube son demasiado grandes, complejos y dinámicos para abordarlos con enfoques de seguridad tradicionales, como las auditorías manuales y las listas de verificación.

Por desgracia, la mayoría de los lenguajes de políticas como código son propietarios y de código cerrado, y los ofrecen los proveedores de servicios en la nube. Esto genera dependencia de un proveedor, incompatibilidad con otros marcos de políticas que la empresa podría usar, y dificulta mucho su adaptación a casos de uso específicos.

Open Policy Agent (OPA) es un motor de políticas de propósito general y de código abierto, y Rego es el lenguaje declarativo de políticas de OPA. Combinado con Fugue, ofrece máxima flexibilidad al implementar políticas para la infraestructura en la nube. En abril de 2019, la Cloud Native Computing Foundation (CNCF) aceptó OPA como proyecto alojado en etapa de incubación.

En Fugue usamos OPA y Rego como marco de políticas como código para nuestra solución SaaS de seguridad y cumplimiento en la nube, y los resultados son increíbles. Gran parte del enfoque de OPA ha estado en desarrollar políticas de acceso para Kubernetes, pero lo hemos aprovechado ampliamente para una variedad mucho mayor de casos de uso de infraestructura en la nube en Amazon Web Services (AWS) y Microsoft Azure. Puedes leer nuestro anuncio aquí.

Al adoptar OPA y Rego, pudimos ofrecer a nuestros clientes capacidades de políticas como código potentes y flexibles, incluida la posibilidad de crear políticas personalizadas para la infraestructura en la nube de forma rápida y sencilla.

Las capacidades de reglas personalizadas de Fugue, que aprovechan OPA, permiten a los usuarios:

  • Crear y administrar reglas personalizadas de infraestructura en la nube, definidas por el usuario, en OPA Rego mediante la API, la CLI y la interfaz web de Fugue

  • Validar y probar las reglas personalizadas mientras se escriben, con mensajes de error útiles que ahorran tiempo

  • Validar continuamente y generar informes sobre el cumplimiento de las reglas personalizadas y los marcos de políticas listos para usar

Estos son algunos ejemplos de políticas personalizadas que usan OPA con Fugue:

  • Verificar si hay buckets de S3 públicos y sin cifrar

  • Determinar qué regiones de la nube están permitidas

  • Determinar qué imágenes de máquina (por ejemplo, AMI) están permitidas

  • Asegurarse de que los registros de flujo de VPC estén configurados

  • Determinar qué tamaños de instancia (por ejemplo, EC2) están permitidos

  • Verificar que las políticas de IAM apliquen el principio de privilegio mínimo

  • Determinar qué reglas de entrada están permitidas para los grupos de seguridad

Por ejemplo, si un grupo de seguridad no debe permitir que el puerto 9200 esté abierto al público, la regla puede expresarse así:

deny {
  input.ingress[i].from_port <= 9200
  input.ingress[i].to_port >= 9200
  input.ingress[ij.cidr_blocks[_]=="0.0.0.0/0"
}

La mayoría de las organizaciones también deben cumplir con uno o más marcos de cumplimiento. Por eso, Fugue ofrece compatibilidad lista para usar mediante OPA con CIS Foundations Benchmarks (AWS y Azure), GDPR, HIPAA, ISO 27001, NIST 800-53, PCI y SOC 2.

Fugue ejecuta millones de evaluaciones de reglas de seguridad cada día con OPA, por lo que hemos invertido mucho trabajo en herramientas para desarrolladores y contribuiremos todo ese trabajo a la comunidad de código abierto. Nos entusiasma OPA y la oportunidad de participar más en este importante proyecto de código abierto.

Seguridad de IaC diseñada para desarrolladores

Snyk protege tu infraestructura como código desde el ciclo de vida del desarrollo de software hasta el runtime en la nube con un motor unificado de políticas como código, para que todos los equipos puedan desarrollar, implementar y operar de forma segura.