Skip to main content

Detecta errores de configuración de AWS CloudFormation con Snyk IaC

Escrito por
Headshot of Ilianna Papastefanou

Ilianna Papastefanou

Infrastructure as Code security

17 de junio de 2021

0 minutos de lectura

Nos entusiasma anunciar que Snyk Infrastructure as Code ahora es compatible con AWS CloudFormation. En nuestro informe reciente Perspectivas sobre la seguridad de la infraestructura como código, descubrimos que el 36 % de las personas encuestadas usaba AWS CloudFormation (CF) como su herramienta principal de infraestructura como código. Con Snyk Infrastructure as Code, ahora puedes analizar tus plantillas YAML o JSON de CF con nuestro completo conjunto de reglas de seguridad para AWS.

Con estas nuevas capacidades, puedes tratar tus archivos de CloudFormation como cualquier otro código y aplicar la seguridad desde las primeras etapas del desarrollo, para que sea parte integral de los procesos de desarrollo e implementación de tu infraestructura.

Integra la seguridad donde importa

Esta funcionalidad está disponible tanto al importar un repositorio como mediante nuestra CLI. Así, puedes integrarla en cualquier etapa: desde el desarrollo local hasta el control de código fuente y tus pipelines de CI/CD.

Usamos este repositorio de ejemplo, que contiene archivos de plantilla de CloudFormation no seguros, y lo integramos desde GitHub con Snyk. Así, detectamos una serie de problemas en los archivos de CF.

Panel del proyecto de Snyk que muestra snyk/snyk-iac-cloudformation con el recuento de vulnerabilidades por nivel de gravedad y un enlace para ver el informe.

Puedes expandir el repositorio en Snyk para ver la lista de archivos de configuración analizados. En la pantalla de abajo seleccionamos el archivo db.yml . Aquí puedes ver los problemas de configuración detectados, vinculados a la línea correspondiente de la plantilla de CF original:

Plantilla de AWS CloudFormation que muestra una configuración de RDS junto a una advertencia de que la autenticación IAM de RDS está deshabilitada

También puedes obtener los mismos resultados con Snyk CLI, que procesa los archivos localmente; es decir, no se envían datos a Snyk.

$ snyk iac test db.yml

Testing db.yml...

Infrastructure as code issues:
  ✗ Non-encrypted RDS instance at rest [Medium Severity] [SNYK-CC-TF-201] in RDS
    introduced by Resources[Database] > Properties > StorageEncrypted

  ✗ RDS IAM authentication is disabled [Medium Severity] [SNYK-CC-AWS-414] in RDS
    introduced by Resources[Database] > Properties > EnableIAMDatabaseAuthentication

  ✗ Non-Encrypted SNS Topic [Medium Severity] [SNYK-CC-TF-55] in SNS
    introduced by Resources > DatabaseAlarmTopic > Properties > KmsMasterKeyId

  ✗ SNS topic is not encrypted with customer managed key [Low Severity] [SNYK-CC-AWS-422] in SNS
    introduced by Resources[DatabaseAlarmTopic] > Properties > KmsMasterKeyId

Organization:      mycompany.test
Type:              CloudFormation
Target file:       db.yml
Project name:      cloudformation-example
Open source:       no
Project path:      /Users/iliana/workspace/snyk-iac-cloudformation

Tested db.yml for known issues, found 4 issues

Uso de AWS Cloud Development Kit

AWS Cloud Development Kit (AWS CDK) es un framework de desarrollo de software de código abierto que permite definir los recursos de tus aplicaciones en la nube con lenguajes de programación conocidos. Con AWS CDK, puedes definir tu infraestructura en un lenguaje de programación que conozcas mejor, como TypeScript o Python, en lugar de escribir YAML. Este enfoque ofrece más flexibilidad y accesibilidad: puedes trabajar con un lenguaje y un IDE que ya te resulten cómodos, y usar construcciones de programación para evitar tener que crear plantillas en tus archivos YAML.

También puedes analizar tus archivos de AWS CDK con la funcionalidad iac test de Snyk CLI. Para ello, primero conviértelos a un archivo JSON con el subcomando integrado synth de AWS CDK.

Con otro ejemplo, que usa TypeScript para definir una infraestructura, puedes ejecutar los siguientes comandos para probar las configuraciones de tus pipelines con Snyk CLI:

# install your dependencies
npm install
# convert your typescript to a CloudFormation json file
cdk synth

# scan the rendered json file using the Snyk IaC CLI
snyk iac test cdk.out/VpcStackWithIssues.template.json

Testing VpcStackWithIssues.template.json...

Infrastructure as code issues:
  ✗ Security Group allows open ingress [Medium Severity] [SNYK-CC-TF-1] in VPC
    introduced by Resources > SSHSG26D56496 > Properties > SecurityGroupIngress[0]

  ✗ AWS Security Group allows open egress [Low Severity] [SNYK-CC-TF-73] in VPC
    introduced by Resources[SSHSG26D56496] > Properties > SecurityGroupEgress[0] > CidrIp

  ✗ Rule allows open egress [Low Severity] [SNYK-CC-TF-72] in VPC
    introduced by Resources[SSHSG26D56496] > Properties > SecurityGroupEgress[0]

Organization:      mycompany.test
Type:              CloudFormation
Target file:       cdk.out/VpcStackWithIssues.template.json
Project name:      cdk.out
Open source:       no
Project path:      cdk.out/VpcStackWithIssues.template.json

Tested VpcStackWithIssues.template.json for known issues, found 3 issues

Este flujo de trabajo es ideal para un pipeline de compilación, ya que se puede automatizar por completo con cada pull request. A la fecha de publicación, los archivos de AWS CDK solo se pueden analizar mediante un flujo de trabajo basado en la CLI.

Reglas completas de seguridad de configuración

La amplitud y profundidad de las reglas de seguridad son importantes para obtener una cobertura completa. Snyk cuenta con un equipo especializado de ingeniería de seguridad que investiga, valida y agrega continuamente nuevas reglas al producto: ya hay más de 100 para AWS, y seguimos creciendo.

Al agregar reglas, garantizamos una cobertura adecuada al combinar las prácticas recomendadas conocidas con nuestras propias investigaciones de seguridad. Las prácticas recomendadas se basan tanto en estándares de proveedores de nube como de la comunidad; por ejemplo, los benchmarks CIS y las prácticas recomendadas para Kubernetes y AWS. Nuestra investigación de seguridad incluye técnicas como ejercicios de modelado de amenazas en patrones de uso clave. Por ejemplo, examinamos la configuración de servicios de Kubernetes administrados para determinar cómo evitar vulnerabilidades mediante el fortalecimiento adecuado de IaC.

Puedes consultar y modificar la gravedad de las reglas de Snyk IaC desde Settings en tu organización de Snyk. En el menú de la izquierda, selecciona Infrastructure as Code. Si quieres limitar la vista a AWS CloudFormation, selecciona AWS en las pestañas debajo de la configuración de gravedad y luego CloudFormation (o Terraform, si lo prefieres). Procuramos que nuestras reglas sean independientes del formato, por lo que la mayoría aparecerá sin importar qué opciones selecciones.

Configuración de severidad de AWS que muestra verificaciones de CloudFormation para problemas de seguridad de API Gateway con niveles de severidad bajo, medio y alto

También puedes consultar públicamente la lista completa de nuestras reglas de seguridad para AWS CloudFormation en la sección Reglas de seguridad de nuestro sitio.

Página de Snyk AWS CloudFormation que enumera reglas de seguridad de API Gateway, incluidas la política TLS, el acceso anónimo, el rastreo de X-Ray, el registro y las verificaciones de cifrado.

Empieza a usar Snyk IaC gratis

Cualquier persona puede probar estas nuevas funciones, incluso quienes tienen un plan gratuito. Empezar es fácil:

  • Si aún no tienes una cuenta de Snyk, regístrate gratis.

  • Instala Snyk CLI. Si ya la tienes instalada, verifica que uses la versión 1.629.0 o una posterior para acceder a estas funciones.

  • Analiza tus archivos de CloudFormation. El comando principal para analizar IaC con las nuevas funciones es: snyk iac test <path-to-file-or-folder>

Obtén más información sobre las distintas opciones de análisis disponibles en la documentación de Snyk o consulta la documentación de la CLI ejecutando: snyk iac --help

¡Nos encantaría conocer tu opinión! Si ya eres cliente de Snyk, puedes compartir tus comentarios sobre el producto con tu equipo de éxito del cliente. También invitamos a todos a dejar sus comentarios en el foro de la comunidad de Snyk.

Protege la infraestructura desde el origen

Snyk automatiza la seguridad y el cumplimiento de IaC en los flujos de trabajo, y detecta recursos con desviaciones de configuración y recursos faltantes.

Publicado en: