Este artículo tratará principalmente los paquetes 2 y 3 de azsk ilustrados en la siguiente figura de Microsoft:
Para complementar su comprensión de este 4º post de la serie de marcos AzSK, les recomiendo que también echen un vistazo a mis posts anteriores
En este post, hablaré de cómo se puede aprovechar AzSK para desarrollar y desplegar aplicaciones seguras basadas en la nube de Azure.
Para este propósito, el marco de trabajo de AzSK proporciona 3 componentes principales para el desarrollo de aplicaciones seguras:
Pruebas de verificación de seguridad (SVT) de los recursos Azure involucrados
Codificación segura con Security IntelliSense
Seguridad en la extensión del CICD para Visual Studio
1) Pruebas de verificación de seguridad (SVT)
Como aprendimos para la seguridad de la Suscripción en el post anterior, AzSK incluye scripts que pueden ser usados para comprobar la seguridad de los recursos de Azure involucrados en su aplicación.
Puedes usar AzSK SVT de varias maneras:
1.1) Comprobando la seguridad de todos los recursos de una suscripción
El cmdlet de AzSK PowerShell que se utilizará para escanear la salud de la seguridad de todos los recursos de Azure en una suscripción específica es el siguiente:
Get-AzSKAzureServicesSecurityStatus -SubscriptionId <SubscriptionId>
Al contrario que el comando (Get-AzSKSubscriptionSecurityStatus -SubscriptionId <SubscriptionId>) usado para la salud de seguridad de la suscripción que vimos en el post anterior; este comando no ejecutará los 19 controles incorporados para la seguridad de la suscripción, sino que ejecutará los controles incorporados de AzSK para todos los recursos Azure incluidos en su suscripción (por ejemplo, Máquina Virtual, Base de Datos SQL, Aplicaciones Lógicas, Bóveda de Claves, Red Virtual, etc.). El número de controles incorporados de AzSK que se ejecutarán dependerá del tipo y el número de recursos presentes en su suscripción.
Como recordatorio, la actual versión 3.7.0 de AzSK soporta 336 controles incorporados, de los cuales 19 son para la suscripción. El número de controles incorporados soportados puede ser obtenido usando el cmdlet Get-AzSKInfo como se muestra en la siguiente captura de pantalla:
Los resultados de los SVT están en el mismo formato que para la suscripción (informe de seguridad en CSV, archivos de registro que explican el resultado, etc.). Sólo los controles AzSK cambian porque dependen de los recursos Azure involucrados. En cuanto a la comprobación de la seguridad de la suscripción, se comprobarán los controles de seguridad del AzSK para cada recurso implicado y el estado del resultado será Aprobado, Fallido, Manual, Verificar o Error.
La lista de los 35 tipos de recursos en azul que actualmente soporta AzSK se resume en la siguiente tabla:
Nombre del tipo de recurso | Descripción del tipo de recurso o propósito |
AnalysisServices | Motor de análisis de nivel empresarial como servicio |
APIConnection | API administrada para aplicaciones de lógica |
AppService | Creación rápida de potentes aplicaciones en la nube para la web y el móvil |
Automation | Simplificar la gestión de la nube con la automatización de los procesos |
AzSKCfg | Configuración del AzSK |
Batch | Programación de trabajos a escala de la nube y gestión de la computación |
BotService | Un servicio de bot inteligente, sin servidores, que escala según la demanda |
CDN | Garantizar la entrega de contenido seguro y fiable con un amplio alcance mundial |
CloudService | Crear aplicaciones y API de nube altamente disponibles e infinitamente escalables |
ContainerInstances | Es fácil hacer funcionar los contenedores en Azure sin tener que administrar los servidores. |
ContainerRegistry | Almacenar y gestionar imágenes de contenedores en todos los tipos de despliegues de Azure |
CosmosDB | Base de datos multimodal distribuida globalmente para cualquier escala |
Databricks | Una plataforma de análisis basada en Apache Spark, rápida, fácil y colaborativa |
DataFactory | La integración de datos híbridos a escala empresarial, facilitada |
DataFactoryv2 | Servicio híbrido de integración de datos con patrones de ejecución muy flexibles |
DataLakeAnalytics | Servicio de análisis distribuido que facilita el Big Data |
DataLakeStore | Almacenamiento de datos a escala masiva en el lago |
ERvNet (Express Route-connected Virtual Networks) | Conexiones de fibra de red privada dedicada a Azure |
EventHub | Recibir la telemetría de millones de dispositivos |
HDInsight | Provision cloud Hadoop, Spark, R Server, HBase, and Storm clusters |
KeyVault | Salvaguardar y mantener el control de las llaves y otros secretos |
LoadBalancer | Ofrecer alta disponibilidad y rendimiento de la red a sus aplicaciones |
LogicAppS | Automatizar el acceso y uso de los datos a través de las nubes sin escribir código |
NotificationHub | Envía notificaciones push a cualquier plataforma desde cualquier back end |
ODG (On-premises Data Gateways) | Puente que proporciona transferencia de datos segura entre orígenes de datos locales y sus servidores de Azure Analysis Services en la nube |
RedisCache | Potencia las aplicaciones con acceso a datos de alto rendimiento y baja latencia |
Search | Búsqueda como servicio totalmente gestionada |
ServiceBus | Conéctese en entornos de nube pública y privada |
ServiceFabric | Desarrollar microservicios y orquestar contenedores en de Windows o Linux |
SQLDatabase | Base de datos SQL relacional gestionada como servicio |
StorageAccount | Almacenamiento en la nube duradero, altamente disponible y masivamente escalable |
StreamAnalytics | Procesamiento de flujo de datos en tiempo real desde millones de dispositivos IoT |
TrafficManager | Dirige el tráfico entrante para obtener un alto rendimiento y disponibilidad |
VirtualMachine | Aprovisione máquinas virtuales Windows y Linux en segundos |
VirtualNetwork | Aprovisione redes privadas, opcionalmente conéctese a centros de datos locales |
La lista de tipos de recursos soportados continúa creciendo, y puede usar el siguiente comando AzSK (Get-AzSKS SupportedResourceTypes) para confirmar los tipos de recursos Azure soportados por su AzSK instalado.
En general, una suscripción incluye varias aplicaciones y cada aplicación puede organizarse en uno o varios grupos de recursos.
AzSK admite la comprobación de seguridad para grupos de recursos específicos.
1.2) Comprobación de seguridad de grupos de recursos específicos
El escaneo de seguridad de grupos de recursos específicos se puede realizar usando el siguiente comando AzSK:
Get-AzSKAzureServicesSecurityStatus -SubscriptionId <SubscriptionId> -ResourceGroupNames <ResourceGroupNames> donde ResourceGroupNames es una lista separada por comas de grupos de recursos que contienen recursos relacionados para una suscripción Azure (por ejemplo, "RG1, RG2, RG3").
AzSK comprobará entonces el estado de los controles de seguridad incorporados aplicables a todos los recursos incluidos en los grupos de recursos seleccionados. Como un grupo de recursos puede contener varios recursos, AzSK permite reducir sus controles de seguridad a un tipo de recurso específico, dependiendo de sus necesidades.
1.3) Escanear la seguridad de un tipo de recurso específico
Además del escaneo de seguridad de grupos de recursos específicos, AzSK también proporciona la capacidad de escanear la seguridad de un tipo de recurso específico.
Esto se hace aprovechando dos parámetros adicionales: ResourceType o ResourceTypeName. Los comandos relacionados de AzSK son los siguientes:
Get-AzSKAzureServicesSecurityStatus -SubscriptionId <SubscriptionId> [-ResourceGroupNames <ResourceGroupNames>] -ResourceType <ResourceType> o
Get-AzSKAzureServicesSecurityStatus -SubscriptionId <SubscriptionId> [-ResourceGroupNames <ResourceGroupNames>] -ResourceTypeName <ResourceTypeName>.
Por ejemplo, si quiere comprobar el estado de seguridad de todas las Máquinas Virtuales usadas en su aplicación (SubscriptionID = Subs-100, ResourceGroupNames=RG-App1-Dev & RG-App1-QA & RG-App1-Prod), el comando AzSK relacionado tendrá el aspecto siguiente:
Get-AzSKAzureServicesSecurityStatus -SubscriptionId "Subs-100" -ResourceGroupNames "G-App1-Dev, RG-App1-QA, RG-App1-Prod" -ResourceType "Microsoft.Compute/virtualMachines" o
Get-AzSKAzureServicesSecurityStatus -SubscriptionId 'Subs-100' -ResourceGroupNames 'RG-App1-Dev, RG-App1-QA, RG-App1-Prod' -ResourceTypeName 'VirtualMachine'.
Los valores soportados que se pueden utilizar para los parámetros ResourceType y ResourceTypeName se pueden obtener utilizando el siguiente comando AzSK Get-AzSKSupportedResourceTypes como en la siguiente captura de pantalla:
Como puede ver, AzSK proporciona una amplia lista de formas de realizar las pruebas de verificación de seguridad (SVT) de los recursos de Azure utilizados en sus aplicaciones. Estas pruebas de verificación de seguridad se basan en las mejores prácticas de seguridad y en las recomendaciones de Microsoft. Para cualquier detalle adicional, el cmdlet PS Get-Help Get-AzSKAzureServicesSecurityStatus será su "amigo".
Además de los 19 controles de seguridad incorporados para la seguridad de la suscripción, AzSK proporciona actualmente más de 317 controles de seguridad incorporados para ayudarle a construir aplicaciones seguras basadas en Azure.
En la siguiente tabla se enumeran los controles de seguridad admitidos por AzSK para el tipo de recurso Máquina virtual Azure:
N° | CONTROL | RAZÓN FUNDAMENTAL | GRAVEDAD |
1 | La máquina virtual debe tener instalada la última versión del sistema operativo | Estar en la última versión del sistema operativo reduce significativamente los riesgos de los problemas de diseño de seguridad y los errores de seguridad que pueden estar presentes en las versiones más antiguas | Media |
2 | Las actualizaciones automáticas del sistema operativo deben estar habilitadas en la máquina virtual de Windows | Las máquinas virtuales en las que las actualizaciones automáticas están desactivadas pueden perder importantes parches de seguridad debido a un error humano. | Alta |
3 | El antimalware debe estar habilitado con protección en tiempo real en la máquina virtual de Windows | Habilitar la protección antimalware minimiza los riesgos de los ataques existentes y nuevos de varios tipos de malware | Alta |
4 | El NSG debe estar configurado para la Máquina Virtual | Restringir el tráfico entrante y saliente a través de los NSG limita la exposición de la red de una VM reduciendo la superficie de ataque | Media |
5 | La IPs públicas en una máquina virtual debe ser revisada cuidadosamente | Las IPs públicas proveen acceso directo a través de Internet exponiendo a la VM a ataques a través de la red pública | Alta |
6 | La encriptación del disco debe estar habilitada tanto en el sistema operativo como en los discos de datos para la Máquina Virtual de Windows | Esto minimiza el riesgo de pérdida de datos por robo físico y también ayuda a cumplir los requisitos de cumplimiento normativo | Alta |
7 | La máquina virtual debe estar en un estado saludable en el Centro de Seguridad Azure | El Centro de Seguridad Azure emite alertas (que son típicamente indicativas de recursos que no cumplen con alguna protección de seguridad de base) | Alta |
8 | La máquina virtual debe tener instalados todos los parches necesarios del sistema operativo | Las máquinas virtuales sin parches son blancos fáciles para comprometerse con varios ataques de malware y troyanos. | Alta |
9 | La Máquina Virtual debe implementar todas las recomendaciones del ASC marcadas | El Centro de Seguridad Azure ofrece varias recomendaciones de seguridad para los recursos que no cumplen con alguna protección de seguridad de base | Alta |
10 | Los diagnósticos (extensión IaaSDiagnostics en Windows; extensión LinuxDiagnostic en Linux) deben estar habilitados en la máquina virtual | Los registros de diagnóstico son necesarios para crear un rastro de actividad mientras se investiga un incidente o un compromiso | Media |
11 | No deje los puertos de gestión abiertos en las máquinas virtuales | Los puertos de gestión remota abiertos exponen a un nodo de VM/computadora a un alto nivel de riesgo de ataques basados en Internet | Critica |
Los controles de seguridad incorporados completos cubiertos por el recurso AzSK por Azure se pueden encontrar aquí.
AzSK también le permite controlar la seguridad de sus aplicaciones con otras herramientas que no sean PowerShell.
2) Codificación segura con Security IntelliSense
Security IntelliSense es una extensión que aumenta la característica estándar de Visual Studio IntelliSense con el conocimiento de la codificación segura. Te ayuda a obtener asistencia "en línea" para arreglar posibles problemas de seguridad mientras escribes el código.
Las características soportadas incluyen:
Aproximadamente 80 reglas (disponibles aquí) que cubren escenarios como:
- Varias reglas de codificación segura relacionadas con el Azure PaaS API
- Mejores prácticas de autenticación basadas en ADAL
- Errores de criptografía comunes
- Problemas de seguridad de la aplicación clásica y de la aplicación web
Reglas auto-actualizadas: El plug-in comprueba periódicamente si se han publicado nuevas reglas en un almacén central de reglas y actualiza su conjunto de reglas locales
Indicaciones de error y advertencia para un código incorrecto y posiblemente vulnerable: (Por ejemplo, el uso de la caché de fichas personalizadas en el escenario ADAL)
Sugerencias para correcciones/prácticas de codificación conformes: (Por ejemplo, en lugar de aleatorio, la clase RNGCryptoServiceProvider debería utilizarse en un contexto de criptografía).
3) Seguridad en CICD (extensión para Visual Studio)
Todas las pruebas de verificación de seguridad del AzSK (SVT) de las que hemos hablado hasta ahora pueden ser ejecutadas en cualquier momento en modo ad hoc (usando comandos Powershell) dependiendo de sus necesidades.
AzSK proporciona una extensión CICD que le ayuda a automatizar e integrar dichas pruebas de verificación de seguridad como parte de los flujos de trabajo de desarrollo y de liberación de tuberías.
La función de extensiones CICD de AzSK hace posible la aplicación automatizada de la configuración de seguridad al hacer que los SVT estén disponibles como una extensión de Visual Studio.
La guía para habilitar las pruebas de verificación de seguridad (SVT) en los canales de lanzamiento de Visual Studio Team Services (VSTS) se puede encontrar aquí. VSTS se conoce actualmente como Azure DevOps Services.
Conclusión
En este artículo (el cuarto relacionado con el Kit de Desarrollo Seguro para Azure - AzSK), traté de cómo este marco de trabajo AzSK puede ser aprovechado para desarrollar e implementar aplicaciones seguras basadas en la nube de Azure. Esto se hace gracias a las siguientes características:
- Pruebas de verificación de seguridad (SVT) para los recursos de Azure utilizados en sus aplicaciones (35 tipos de recursos actualmente soportados con 317 controles de seguridad incorporados)
- Prácticas de codificación de seguridad usando el Security IntelliSence
- Integración de seguridad en la Integración Continua/ Entrega Continua (CICD) a través de una extensión de Visual Studio AzSK
Referencias clave y recursos adicionales
No hay comentarios.:
Publicar un comentario