Cómo proteger la infraestructura en la nube para la auditoría PCI
DeveloperSteve Coochin
3 de marzo de 2022
0 minutos de lecturaEl proceso de certificación PCI es bastante exhaustivo y abarca la infraestructura, el software y el acceso de los empleados a los sistemas, en particular a los conjuntos de datos y la forma en que se accede a ellos. Estas verificaciones son fundamentales no solo para el sector de pagos en general, sino también para generar confianza entre los usuarios y demostrarles que sus datos están protegidos. El proceso de cumplimiento de PCI consiste en una serie de verificaciones, que suelen realizar terceros acreditados, para garantizar que existan procesos seguros de manejo de datos.
En esta publicación del blog, veremos cómo puedes proteger tu infraestructura en la nube para cumplir con PCI.
¿Cuáles son los requisitos de cumplimiento de PCI?
El Estándar de Seguridad de Datos de la Industria de Tarjetas de Pago, también conocido como PCI DSS, es un conjunto de pautas reguladas por el sector que ayudan a mantener seguros los datos confidenciales de los titulares de tarjetas. El estándar es mantenido por el PCI Security Standards Council, que establece todos sus detalles y abarca desde las normas de cumplimiento hasta los proveedores certificadores de PCI DSS.
Los requisitos de cumplimiento de PCI abarcan diversos aspectos, en particular todos los componentes del ciclo de vida del desarrollo de software (SDLC). Puedes consultar la lista completa aquí. En términos generales, los requisitos son:
Instalar y mantener una configuración de firewall que proteja los datos de los titulares de tarjetas. El firewall analiza todo el tráfico de red y bloquea el acceso al sistema desde redes que no son de confianza.
Cambiar las contraseñas predeterminadas y otros parámetros de seguridad proporcionados por los proveedores. Estas contraseñas se pueden descubrir fácilmente mediante información pública y personas malintencionadas pueden usarlas para obtener acceso no autorizado a los sistemas.
Proteger los datos almacenados de los titulares de tarjetas. El cifrado, el hashing, el enmascaramiento y el truncamiento son métodos que se usan para protegerlos.
Cifrar la transmisión de los datos de los titulares de tarjetas a través de redes públicas abiertas. El cifrado robusto, que incluye el uso exclusivo de claves y certificados de confianza, reduce el riesgo de sufrir ataques maliciosos.
Proteger todos los sistemas contra el malware y actualizar periódicamente el software antivirus. El malware puede entrar en una red de muchas maneras, como a través del uso de Internet, el correo electrónico de los empleados, los dispositivos móviles o los dispositivos de almacenamiento. Mantener actualizado el software antivirus o usar software antimalware complementario reduce el riesgo de explotación mediante malware.
Desarrollar y mantener sistemas y aplicaciones seguros. Las vulnerabilidades en sistemas y aplicaciones permiten que personas inescrupulosas obtengan acceso privilegiado. Se deben instalar de inmediato los parches de seguridad para corregir las vulnerabilidades y evitar la explotación y el compromiso de los datos de los titulares de tarjetas.
Restringir el acceso a los datos de los titulares de tarjetas únicamente al personal autorizado. Se deben usar sistemas y procesos para limitar el acceso a estos datos según el principio de «necesidad de saber».
Identificar y autenticar el acceso a los componentes del sistema. Se debe asignar un identificador único (ID) a cada persona que tenga acceso a los componentes del sistema para que se pueda llevar un registro de los accesos a sistemas con datos críticos.
Restringir el acceso físico a los datos de los titulares de tarjetas. El acceso físico a esos datos o a los sistemas que los almacenan debe ser seguro para evitar el acceso no autorizado o la extracción de datos.
Registrar y supervisar todos los accesos a los datos de los titulares de tarjetas y a los recursos de red. Se deben implementar mecanismos de registro para hacer seguimiento de las actividades de los usuarios, algo fundamental para prevenir, detectar o minimizar el impacto de las filtraciones de datos.
Probar periódicamente los sistemas y procesos de seguridad. Se descubren nuevas vulnerabilidades de forma constante. Es necesario probar con frecuencia los sistemas, los procesos y el software para detectar vulnerabilidades que personas malintencionadas podrían aprovechar.
Mantener una política de seguridad de la información para todo el personal. Una política de seguridad sólida ayuda a que el personal comprenda la confidencialidad de los datos y su responsabilidad de protegerlos.
Requisitos de PCI específicos para la infraestructura
Si analizamos con más detalle la lista completa, en esta publicación nos centraremos en los puntos relacionados con la infraestructura dentro del SDLC.
1.3 Prohibir el acceso público directo entre Internet y cualquier componente del sistema dentro del entorno de datos de los titulares de tarjetas.
Como hemos visto en incidentes de vulnerabilidad anteriores, este punto destaca la necesidad de garantizar que las vulnerabilidades y las configuraciones incorrectas no permitan el acceso no autorizado a las bases de datos centrales. También puede aplicarse al acceso a componentes disponibles para sesiones o usuarios.
2.2.2 Habilitar únicamente los servicios, protocolos, daemons y demás elementos necesarios para el funcionamiento del sistema.
2.2.4 Configurar los parámetros de seguridad del sistema para evitar usos indebidos.
2.2.3 Implementar funciones de seguridad adicionales para los servicios, protocolos o daemons necesarios que se consideren inseguros.
5.1.1 Asegurarse de que los programas antivirus puedan detectar, eliminar y proteger contra todos los tipos conocidos de software malicioso.
5.2 Asegurarse de que todos los mecanismos antivirus se mantengan de la siguiente manera:
Mantenerlos actualizados
Realizar análisis periódicos
Generar registros de auditoría que se conserven según el requisito 10.7 de PCI DSS.
5.3 Asegurarse de que los mecanismos antivirus estén activos y que los usuarios no puedan deshabilitarlos ni modificarlos, a menos que la gerencia lo autorice específicamente, caso por caso y por un período limitado.
Por suerte, puedes automatizar fácilmente todas estas verificaciones con solo unos clics e integrarlas sin problemas en los flujos de trabajo y pipelines con una cuenta gratuita de Snyk.
Simplifica la auditoría de PCI con Snyk Container y Snyk IaC
La automatización es algo que siempre me encanta y, para el cumplimiento de PCI, significa configurar buenos análisis de seguridad en tus pipelines de CI/CD. Esto puede ayudar de varias maneras, por ejemplo, a generar registros y detectar puntos vulnerables en la infraestructura.
Hay varias formas de configurar análisis de seguridad con Snyk. Veamos algunos ejemplos con microservices-demo, la aplicación de comercio electrónico de Google.

Directamente desde el repositorio
Si quieres seguir los pasos, puedes empezar bifurcando el repositorio microservices-demo.
Bifurcar código directamente en tu cuenta de GitHub es una forma sencilla de crear sobre distintas plataformas. Así, puedes personalizarlo según tus necesidades en diferentes ramas durante el desarrollo. También puedes clonarlo en entornos de desarrollo locales para probar y ejecutar el código.

Análisis de seguridad con Snyk
Hay varias formas de probar el código desde aquí. Una opción es usar Snyk CLI desde la raíz del proyecto. Con este método, puedes usar snyk test para ejecutar pruebas locales o snyk monitor para supervisar continuamente las vulnerabilidades.
También puedes conectar directamente el repositorio bifurcado a la aplicación de Snyk mediante la integración de Snyk GitHub. Para hacerlo, inicia sesión en tu cuenta de Snyk y haz clic en el botón Add Project de mi panel de Snyk. En el menú de acceso rápido para agregar proyectos hay varias opciones de integración, o puedes hacer clic en Other y buscar la plataforma de Git que prefieras.

Una vez que hayas conectado la integración de GitHub, podrás buscar el repositorio bifurcado microservices-demo e iniciar un análisis.

Una vez seleccionado, el repositorio se analizará continuamente y mostrará los problemas detectados. Estos se desglosarán en elementos individuales para cada componente del proyecto, lo que facilitará su investigación.

Lo mejor para hacer seguimiento de las auditorías de PCI es que todos los hallazgos se guardan en la sección de historial de cada elemento. Allí se muestran los problemas detectados y las recomendaciones para corregirlos en cada análisis, algo útil durante las auditorías de cumplimiento de PCI.

Además, Snyk también se integra con los IDE de programación para ayudar a detectar problemas mientras desarrollas aplicaciones. Esto es muy útil porque permite identificar problemas y ofrece recomendaciones para corregirlos mientras escribes código.
Integra la seguridad en el pipeline de CI/CD
La automatización es excelente para todas las personas que participan en cualquier etapa del SDLC. No solo facilita las implementaciones periódicas, sino que también ayuda a definir los pasos y procesos necesarios para llevarlas a cabo. Un buen pipeline de automatización puede extraer código de una rama de Git y preparar e implementar la aplicación, con pruebas integradas en cada etapa.
La base de cualquier SDLC automatizado es el pipeline de CI/CD, que debe configurarse para conectarse con todos los componentes del SDLC.
Se recomienda ampliamente integrar la seguridad en tu pipeline de CI/CD, ya que la seguridad también debe ser continua. Para ayudarte, Snyk se integra con diversos pipelines y con los principales proveedores de servicios en la nube, como AWS, GCP y Azure. Para conocer las prácticas recomendadas de integración de CI/CD, consulta nuestra página sobre prácticas recomendadas de CI/CD.
Ejemplo de seguridad con AWS CodePipeline
En este ejemplo, integremos análisis de seguridad en AWS CodePipeline mediante la integración de Snyk con AWS.
Empecemos con un pipeline básico de AWS CodePipeline para implementar la aplicación de demostración microservices y, luego, integremos Snyk para realizar análisis de seguridad.

Ve al panel de AWS CodePipelines y haz clic en Create Pipeline. En la pantalla del paso 1, asigna un nombre al pipeline y elige un rol de servicio. En el paso 2, seleccionaremos el repositorio de Git donde se encuentra el código que queremos implementar. Si es la primera vez que te conectas al servicio de Git, tendrás que seguir los pasos de conexión y solicitar los permisos necesarios.

Una vez conectada la ubicación del código fuente, podrás elegir el repositorio y la rama que usarás para el flujo de implementación.
Consejo útil: Si te conectas a GitHub desde aquí, usa el método de conexión GitHub version 2. GitHub version 1 dejará de estar disponible pronto.

Haz clic en el botón Next para ir al paso 3, donde definirás los parámetros de compilación. Como proveedor de compilación, normalmente uso AWS CodeBuild, pero también puedes agregar una conexión de Jenkins. Asigna un nombre al proyecto y configura las variables de entorno que necesite tu aplicación.

Para implementar aplicaciones de demostración básicas, puedes usar Single build en Build Type. Para implementaciones más complejas, Batch build es útil para distribuirlas en una infraestructura más amplia.
A continuación, en el paso 4, definiremos la configuración de implementación. Para esta demostración, podemos usar la opción AWS CodeDeploy, que emplea una infraestructura predefinida. Los siguientes campos de este paso te permitirán elegir la infraestructura; las opciones cambiarán según lo que hayas seleccionado.

En el paso final, el paso 5, podrás revisar la configuración de AWS CodePipeline antes de guardarla. Luego, el pipeline iniciará el proceso de implementación, comenzando por recuperar el código que se va a implementar.

Agrega seguridad de Snyk al pipeline
Ahora, integremos un análisis de seguridad de Snyk en este flujo mediante la integración de Snyk con AWS CodePipeline. Haz clic en el nombre de CodePipeline en el panel y verás cada paso del flujo de implementación.

Ahora agregaremos un paso de seguridad a este flujo de CodePipeline. Haz clic en el botón Edit de la esquina superior derecha.

Luego, ingresa un nombre para la etapa que vas a agregar. En este ejemplo, usaré security como nombre para mostrar en el flujo final de CodePipeline.

Haz clic en Add Stage para abrir la página de configuración de la etapa. Define el nombre de la acción y luego busca Snyk en el menú desplegable Action provider, dentro de la sección Invoke de la lista.

En la sección Input artifacts, puedes compilar a partir de SourceArtifact, lo que permite analizar el código justo antes de compilar la aplicación.
Haz clic en el botón Connect to Snyk para abrir el cuadro de integración de Snyk con AWS CodePipeline.

Una vez que hayas iniciado sesión, volverás a la configuración de Snyk para AWS CodePipelines. Aquí puedes configurar la organización y los controles de bloqueo, que determinan si se bloquea el proceso cuando se detecta una vulnerabilidad y según su nivel de gravedad.
Cuando todo esté configurado, haz clic en Continue para volver a la página de edición de la acción. Por último, ingresa un nombre para los artefactos de salida y los campos de espacio de nombres opcionales, y haz clic en Done.

Luego, no olvides hacer clic en el botón Release Change para implementar el cambio en producción. Esto volverá a ejecutar el flujo de implementación y analizará el código durante el proceso.

Al igual que en el ejemplo anterior del análisis directo del repositorio, se guardan todos los registros del análisis, lo que resulta útil para las auditorías de cumplimiento de PCI. Para obtener más información sobre las integraciones de AWS CodePipeline, consulta esta publicación del blog: Automatizar el análisis de vulnerabilidades en AWS CodePipeline con Snyk.
Protege gratis tu infraestructura en la nube con Snyk
Las verificaciones de cumplimiento de PCI son una tarea muy importante que una organización de acreditación externa realiza una vez al año. Aunque el proceso es bastante detallado y puede llevar mucho tiempo, contar con las verificaciones y los registros adecuados ayudará a agilizarlo y, más importante aún, a proteger tu aplicación, plataforma y usuarios.
Empieza a proteger tu código con un plan gratuito de Snyk, que incluye el análisis de tus contenedores y código IaC, correcciones automatizadas para imágenes base vulnerables y orientación para corregir errores de configuración de IaC directamente en el código, pensada para desarrolladores.
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.



