Mostrando las entradas con la etiqueta AzSK. Mostrar todas las entradas
Mostrando las entradas con la etiqueta AzSK. Mostrar todas las entradas

martes, 10 de septiembre de 2019

Cómo implementar el Aseguramiento Continuo con Secure DevOps Kit for Azure

Esta 5ª entrega de la serie de post relacionados con el marco del Kit de Desarrollo Seguro para el Azure (AzSK) se centrará en cómo aprovechar el AzSK para la vigilancia continua de sus entornos Azure.

Este artículo tratará principalmente el 4º paquete de AzSK ilustrado en la siguiente figura de Microsoft:




Para los que acaban de saltar en esta serie de postales de AzSK, las 4 anteriores son las siguientes:


En todos estos 4 posts anteriores, traté de cómo se pueden aprovechar los controles incorporados de seguridad de AzSK para comprobar el estado de seguridad de una suscripción, los recursos que contienen dentro de un grupo de recursos, un tipo de recurso dedicado o un recurso específico. Aprendimos cómo esos controles de salud de seguridad se pueden hacer en cada etapa de desarrollo, cómo se pueden utilizar para la codificación segura y cómo se pueden integrar en las liberaciones de tuberías CICD (Continuous Integration / Continuous Delivery).

En esta 5ª entrega de la serie de publicaciones AzSK, asumimos que una aplicación consistente en una suscripción que contiene uno o varios grupos de recursos, y cada grupo de recursos que contiene varios recursos (por ejemplo, Máquina Virtual, Aplicaciones Lógicas, Base de Datos SQL, Bóveda de Claves, etc.), se ha desplegado en producción y aprenderá cómo se puede usar AzSK para escanear periódicamente su aplicación para observar la deriva de la seguridad. Esto se conoce como Aseguramiento Continuo (CA).

Este post detalla los siguientes aspectos:

  • Justificación del Aseguramiento Continuo
  • Los bloques de construcción de la Garantía Continua AzSK
  • Configuración de la garantía continua de AzSK

1) Justificación de la garantía continua

La razón principal de la garantía continua es adaptarse a un entorno en constante cambio, como la nube, y al hecho de que la seguridad debe tratarse como un estado y no como un logro. Como tal, su aplicación azul puede ser segura en un momento dado y volverse insegura después.

El aseguramiento continuo de AzSK ayuda entonces a identificar las derivas relacionadas:

  • Configuración de la línea de base
  • Configuraciones previamente aprobadas
  • Nuevas características de seguridad

2) Bloques de construcción de la Garantía Continua AzSK

Además de PowerShell utilizado para el lanzamiento de los cmdlets AzSK como para los controles de seguridad ad-hoc, AzSK se basa en algunos componentes de las herramientas de Azure Management (anteriormente conocido como Operations Management Suite - OMS).

2.1) Automatización de Azure

Azure Automation es un servicio de automatización y configuración basado en la nube que proporciona una gestión coherente en todos sus entornos, sean o no de Azure.

Proporciona un control completo durante el despliegue, las operaciones y la retirada de cargas de trabajo y recursos. Las capacidades de Azure Automation incluyen:

Automatización de procesos: le brinda la posibilidad de automatizar tareas de administración de nubes frecuentes, que consumen mucho tiempo y son propensas a errores, mediante la orquestación de procesos utilizando gráficos, libros de ejecución de PowerShell y Python.

Gestión de la configuración: ayuda a recopilar el inventario, rastrear el cambio y configurar el estado deseado.
Gestión de actualizaciones: puede evaluar el cumplimiento y programar las instalaciones de actualización en Azure, en las instalaciones y en otras nubes.

Capacidades compartidas: La automatización de Azure consiste en un conjunto de recursos compartidos que facilitan la automatización y configuración de sus entornos:
  • RABC: Controla el acceso a la cuenta con un rol de operador de Automatización que permite ejecutar las tareas sin dar capacidades de autoría
  • Variables: Proporcionar una forma de mantener el contenido que puede ser utilizado a través de libros de ejecución y configuraciones
  • Credenciales: Almacenar de forma segura información sensible que pueda ser utilizada por los libros de ejecución y las configuraciones en tiempo de ejecución
  • Certificados: Almacénelos y póngalos a disposición en tiempo de ejecución para que puedan ser utilizados para la autenticación
  • Conexiones: Almacenar un nombre/valor pares de información que contiene información común al conectarse a los sistemas en los recursos de conexión
  • Horarios: Se utiliza en el servicio para activar la automatización en tiempos predefinidos
  • Módulos de PowerShell: Los módulos se usan para manejar Azure y otros sistemas

Para más detalles sobre las capacidades de la automatización del Azure, te recomiendo que eches un vistazo a esta documentación.

2.2) Registro y monitoreo del Azure (Análisis de Logística)

El Azure permite recopilar registros de varias fuentes y utilizarlos de varias maneras (incluso en la parte de Log Analytics del servicio global Azure Monitor) como se muestra en la siguiente figura:

Los registros se pueden utilizar para las siguientes tareas:

  • Utilice la página de Log Analytics en el portal Azure para escribir consultas que analicen los datos de los registros. Colocar los resultados en forma de tablas o gráficos en un tablero de control Azure.
  • Configurar una regla de alerta de registro que envíe una notificación o tome una acción automatizada cuando los resultados de la consulta coincidan con un resultado determinado.
  • Construir un flujo de trabajo basado en los datos de Log Analytics usando Logic Apps.
  • Exportar los resultados de una consulta a Power BI para utilizar diferentes visualizaciones y compartir con usuarios fuera de Azure.
  • Acceder a los valores métricos desde una línea de comandos o una aplicación personalizada usando PowerShell cmdlets o REST API.

Azure Log Analytics gestiona los registros en un entorno dedicado llamado espacio de trabajo con su propio repositorio de datos, fuentes de datos y soluciones. Para crear un espacio de trabajo de Log Analytics, necesitará una suscripción, un grupo de recursos y una ubicación (región Azure).

Log Analytics todavía no está disponible en todas las regiones de Azure (consulte esta documentación para conocer las disponibilidades de Log Analytics).




3) Configuración del seguro continuo AzSK

Los principales requisitos para establecer el Aseguramiento Continuo son los siguientes:

  • Debe tener el permiso del propietario en la suscripción, ya que AzSK necesitará añadir una cuenta principal de servicio con permiso de "Lector" a la suscripción que se va a escanear.
  • Usted debe tener el objetivo OMS WorkspaceID y SharedKey. El espacio de trabajo OMS puede estar en otra suscripción
  • Debería ser capaz de crear una aplicación Azure AD en el inquilino. Esa aplicación Azure AD se utiliza como cuenta de tiempo de ejecución para el escaneo a través del libro de ejecución de CA.
  • Deberías tener permisos de "Propietario" para la aplicación Azure AD si especificas uno...
  • Tienes que elegir el modo de configuración: modo autónomo o central.


3.1) Configuración del modo autónomo del AzSK CA

Para la configuración de CA independiente, hay una instancia de CA que debe ser instalada por suscripción. Este modo puede ajustarse a las situaciones en las que se quiera probar AzSK CA en una suscripción o en el caso de que cada suscripción sea escaneada por un equipo diferente.

Para instalar CA en modo autónomo, necesita ejecutar el siguiente cmdlet de PowerShell:

Install-AzSKContinuoAssurance -SubscriptionId <SubscriptionId> `

[-AutomationAccountLocation <AutomationAccountLocation>] `

[-AutomationAccountRGName <AutomationAccountRGName>] `

[-AutomationAccountName <AutomationAccountName>] `

-ResourceGroupNames <ResourceGroupNames> `

-OMSWorkspaceId <OMSWorkspaceId> ` `

-OMSSharedKey <OMSSharedKey> `

[-AltOMSWorkspaceId <AltOMSWorkspaceId>] `

[-AltOMSSharedKey <AltOMSSharedKey>] `

[-ScanIntervalInHours <ScanIntervalInHours>] `

[-AzureADAppName <AzureADAppName>]

Dónde:

  • SubscriptionId es el ID de la suscripción Azure en la que se creará una Cuenta de Automatización para el Aseguramiento Continuo
  • AutomationAccountLocation es la ubicación en la que este cmdlet crea la Cuenta de Automatización. Esta debe ser una de las regiones azules válidas (el valor por defecto es EastUS2).
  • AutomationAccountRGName es el nombre del ResourceGroup en el que se instalará AutomationAccount (el valor predeterminado es AzSKRG)
  • AutomationAccountName es el nombre de AutomationAccount (el valor predeterminado es AzSKContinuousAssurance)
  • ResourceGroupNames es la lista, separada por comas, de grupos de recursos dentro de los cuales se encuentran los recursos de la aplicación
  • OMSWorkspaceId es el ID del espacio de trabajo de OMS que se utiliza para controlar los resultados de los escaneos de seguridad.
  • OMSSharedKey es la llave compartida de OMS que se usa para monitorear los resultados de los escaneos de seguridad. Se utiliza para obtener acceso al espacio de trabajo de OMS y debe ser protegida cuidadosamente.
  • ScanIntervalInHours es el intervalo de exploración (el valor predeterminado es 24 horas)
  • AzureADAppName es el nombre de la aplicación de directorio activo Azure (AD) que se creará en la suscripción para ejecutar los libros de texto

Puede tomar hasta 2 horas completar esta instalación porque necesita descargar e instalar los módulos PowerShell de AzureRM y AzSK.

Cuando todo se haya completado correctamente, deberá ver todos los recursos creados a través del panel de Cuentas de Automatización del portal Azure como en la siguiente figura donde la Cuenta de Automatización tiene el nombre predeterminado "AzSKContinuoAssurance":



Cuando se tienen varias suscripciones para ser escaneadas, es necesario cambiar a una configuración de modo de escaneo central.

3.2) Configuración del modo central del AzSK CA

Hay dos tipos de modos centrales: cuentas de automatización simples o múltiples.

3.2.1) Modo central con una sola cuenta de automatización

En este modo, una cuenta de automatización se utiliza para escanear todas las suscripciones. Este modo se recomienda para un máximo de 40 o 50 suscripciones. Es el caso común en el que un equipo central (por ejemplo, el personal de seguridad informática) debe supervisar todas las suscripciones.

Para configurar el Aseguramiento Continuo en modo central con una sola cuenta de automatización, debe ejecutar el siguiente cmdlet de PowerShell:

Install-AzSKContinuousAssurance -SubscriptionId <SubscriptionId>

-TargetSubscriptionIds <TargetSubscriptionIds>

-ResourceGroupNames ‘*’

-OMSWorkspaceId <OMSWorkspaceId>

-OMSSharedKey <OMSSharedKey>

-CentralScanMode

[-LoggingOption '<CentralSub|IndividualSubs>']

[-SkipTargetSubscriptionConfig]

Dónde:

  • SubscriptionId es la suscripción central que se encarga de escanear todas las demás suscripciones. También alberga la cuenta de Automatización responsable de escanear todas las demás suscripciones
  • TargetSubscriptionIds es una lista separada por comas de los suscriptores que debe ser escaneada por la suscripción central
  • LoggingOption que es "CentralSub" o "IndividualSubs" y le proporciona la capacidad de almacenar los registros de escaneo de CA en la suscripción central o en las suscripciones individuales
  • SkipTargetSubscriptionConfig es el conmutador que se utiliza si no se tiene el permiso del propietario de las suscripciones de destino. En este caso, las suscripciones de destino ya deberían haber sido preparadas para el escaneo en modo central.

3.2.2) Modo central con múltiples cuentas de automatización

Cuando se tienen más de 40 ó 50 suscripciones, se recomienda configurar un modo de escaneo centralizado con múltiples cuentas de automatización, de lo contrario se enfrentarán problemas de escalamiento o de rendimiento.

Debe dividir el conjunto general de suscripciones de destino en varios grupos y luego decidir los nombres que se utilizarán para la cuenta de automatización y los grupos de recursos que albergarán la CA para cada grupo.

Puede utilizar cualquier estrategia de división que desee, pero debe asegurarse de cubrir todas las suscripciones y evitar duplicar una suscripción en varios grupos.

Para configurar la CA en este modo, necesita ejecutar el siguiente cmdlet de PowerShell para cada cuenta de automatización:

Install-AzSKContinuousAssurance -SubscriptionId <SubscriptionId>

-TargetSubscriptionIds <TargetSubscriptionIds>

-ResourceGroupNames ‘*’

-OMSWorkspaceId <OMSWorkspaceId>

-OMSSharedKey <OMSSharedKey>

-AutomationAccountRGName <AutomationAccountRGName>

-AutomationAccountName <AutomationAccountName>

[-AutomationAccountLocation <AutomationAccountLocation>]

-CentralScanMode

[-LoggingOption '<CentralSub|IndividualSubs>']

[-SkipTargetSubscriptionConfig]

En caso de que quieras diagnosticar, actualizar o eliminar tu configuración de CA, AzSK proporciona un par de cmdlets de PowerShell para ello:

  • Get-AzSKContinuoAssurance
  • Update-AzSKContinuousAssurance
  • Remove-AzSKContinuousAssurance

Conclusión

En este artículo (el quinto relacionado con el Kit de Desarrollo Seguro para Azure - AzSK), discutí cómo este marco de trabajo AzSK puede ser aprovechado para mantener seguras sus aplicaciones basadas en la nube de Azure a lo largo del tiempo. Esto se conoce como Aseguramiento Continuo (CA) y AzSK soporta 3 modos de configuración de CA:

Modo independiente donde una instancia de Aseguramiento Continuo se configura por suscripción
Modo central con una sola cuenta de automatización en la que se utiliza una sola cuenta de automatización para escanear todas las suscripciones (hasta 40-50 suscripciones).
Modo central con múltiples cuentas de automatización donde una cuenta de automatización se utiliza para escanear un subconjunto de suscripciones. Se adapta a los contextos con más de 40-50 suscripciones.

Referencias clave y recursos adicionales

martes, 13 de agosto de 2019

Cómo controlar la seguridad de su aplicación Azure con el kit de Secure DevOps

Este 4º post relacionado con el marco del Kit de Desarrollo Seguro para el Azure (AzSK) se centrará en cómo aprovechar sus controles incorporados para desarrollar, desplegar y mantener seguras sus aplicaciones basadas en el Azure a lo largo de las etapas de desarrollo.

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
SearchBúsqueda como servicio totalmente gestionada
ServiceBus Conéctese en entornos de nube pública y privada
ServiceFabricDesarrollar 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:


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


miércoles, 17 de julio de 2019

Cómo controlar la seguridad de tu suscripción a Azure con el kit de Secure DevOps

Después del primer post relacionado con el Kit de Seguridad para Azure (AzSK), donde describí sus capacidades principales, y el segundo post centrado en sus controles incorporados, continuaré sobre cómo aprovechar estos controles de seguridad incorporados para construir y mantener seguras sus aplicaciones basadas en Azure a lo largo de las etapas de DevOps.

Este 3er artículo de la serie Azsk se centrará en el primer paquete AzSK (Subscription Security features) ilustrado en la siguiente figura de Microsoft:




Una suscripción es la base para las solicitudes de Azure. Las características de AzSK para la seguridad de la suscripción incluyen los siguientes aspectos:


  • Comprobación de la seguridad de la suscripción
  • Provisión de seguridad de suscripción
  • Configuración de la alerta
  • Configuración de políticas del Administrador de Recursos Azules (ARM)
  • Configuración del Centro de Seguridad Azul (ASC)
  • Control de acceso (RBAC) Higiene


1) Chequeo de seguridad de la suscripción

AzSK incluye un guión que puede comprobar su suscripción e indicar si hay algunos problemas de seguridad en comparación con las mejores prácticas. Los aspectos de seguridad que se pueden comprobar incluyen:


  • Configuración del control de acceso: cuestiones relacionadas con la identidad y la gestión de acceso en la suscripción
  • Configuración de alertas: configuración de alertas de actividad para acciones sensibles o críticas para la suscripción y varios recursos de la nube
  • Configuración del Centro de Seguridad Azure - configuración de ASC (punto de contacto de seguridad, varios ajustes de política ASC, etc.)
  • Configuración de Política ARM y Bloqueos de Recursos - presencia del conjunto deseado de reglas de política ARM y bloqueos de recursos


El comando PowerShell (PS) para el chequeo de salud de la seguridad de la suscripción es el siguiente: Get-AzSKSubscriptionSecurityStatus -SubscriptionId <SubscriptionId> donde <SubscriptionId> es el ID de la suscripción que quieres escanear. Como se ha explicado en el post anterior centrado en las capacidades centrales de AzSK, necesitas al menos el permiso de Azure RBAC Reader en la suscripción que quieres escanear.


Cuando la exploración de seguridad de la suscripción está en curso, su progreso se muestra en la pantalla de salida del PS como en la siguiente captura de pantalla:


Los 19 controles de seguridad incorporados en el AzSK para la suscripción se comprueban progresivamente y el resumen del análisis se muestra al final.

En el ejemplo de la captura de pantalla PS anterior, de los 19 controles de seguridad incorporados en el AzSK para la suscripción, 10 pasaron la prueba de verificación, 4 fallaron, 2 están en estado de "Verificación" mientras que 3 están en estado de "Manual". Los posibles estados de verificación de cada control son los siguientes:


  • Pasado: el control ha pasado la prueba de verificación no tiene nada que hacer
  • Fallado: el control ha fallado la prueba. Necesitas echar un vistazo a los detalles en el archivo LOG para entender por qué
  • Verificar: el juicio humano es necesario para decidir si el control ha pasado o ha fallado. Necesitas echar un vistazo al archivo LOG para tomar una decisión informada
  • Manual: AzSK no cubre actualmente este control o AzSK no puede obtener datos (por ejemplo, debido a los permisos de usuario limitados). Deberías mirar el archivo LOG para más detalles
  • Error: Se produjo un error por el cual no se pudo determinar el estado de control


Además de la salida del PS, también se genera un conjunto de archivos (informe de seguridad, Log, Readme, etc.) para ayudar a comprender cómo tratar los resultados de la verificación de seguridad.





Un archivo importante entre estos archivos generados es el informe de seguridad en formato CSV. Además de todos los detalles de los controles que ya hemos discutido en el post anterior, el estado de cada control está disponible.


El informe de seguridad correspondiente, por ejemplo, que se muestra en la captura de pantalla anterior del PS (formateado de CSV a XLS) es el siguiente:





Una vez que obtenga este informe de seguridad para su suscripción, deberá trabajar con su equipo de seguridad de TI para ver si es aceptable con respecto a la política de seguridad y la línea base de su organización.

Ya he hablado en algunos de mis artículos anteriores sobre cómo definir e implementar una política de seguridad en la nube efectiva, así como sobre la línea base de seguridad en la nube para una plataforma de nube específica como Azure.

Si ha definido e implementado esas políticas y líneas de base de seguridad en la nube, será fácil para las partes interesadas en el desarrollo (y principalmente el personal de seguridad de TI) decidir cómo tratar este informe de seguridad de suscripción y especialmente los controles no aprobados.

De forma predeterminada, AzSK utiliza las recomendaciones de seguridad y las mejores prácticas de Microsoft para realizar las pruebas de verificación de seguridad. Pero puede adaptar las configuraciones de AzSK a su contexto específico. Esta adaptación está fuera del alcance de este post.

Basándome en mi experiencia, puede ser muy difícil abordar los controles de seguridad de AzSK para los cuales el resultado de las pruebas de verificación es "Verificar" o "Manual".

Por un lado, es necesario conocer y comprender correctamente la política de seguridad en la nube y la línea de base de su organización. Estas habilidades y competencias pueden esperarse del equipo de Seguridad de TI.

Por otra parte, usted necesita entender el contexto de cada prueba de verificación. Como de costumbre, todas sus suscripciones no tendrán la misma criticidad o requisitos de seguridad. Necesita encontrar una manera de adaptar sus pruebas de verificación de seguridad al contexto de sus suscripciones. La colaboración entre los equipos de seguridad, desarrollo y operaciones es clave para una decisión informada. Trabajar en el modo Devops ayuda significativamente aquí, ya que rompe los silos entre los diferentes equipos. Todos los interesados en Devops contribuyen a la seguridad de la solución.

Siguiendo los principios de gestión de riesgos (por ejemplo, ISO 27005), para un determinado control de salud de la seguridad de una suscripción, todos los controles de seguridad de AzSK no tienen por qué pasar necesariamente las pruebas de verificación. Esto debe ser parte del apetito de riesgo de su organización y debe reflejarse en su política y línea de base de seguridad en la nube.

De forma predeterminada, todos los controles incorporados de AzSK para la seguridad de suscripción se comprueban, pero puede restringir sus pruebas de verificación en función de sus necesidades.


Además del SubscriptionID, el comando de comprobación de la salud de la suscripción de AzSK admite varios otros parámetros:


  • Filtros de bolsas: Etiquetas separadas por comas para filtrar las categorías requeridas de controles de seguridad. Por ejemplo, RBAC, SOX, AuthN, etc.
  • ExcluirEtiquetas: Etiquetas separadas por comas para excluir algunas categorías de controles de seguridad. Por ejemplo, RBAC, SOX, AuthN, etc.
  • ControlIds: Identificaciones de control AzSK separadas por comas para filtrar los controles de seguridad. Por ejemplo, Azure_Subscription_AuthZ_Limit_Admin_Owner_Count, Azure_Subscription_Config_Azure_Security_Center, Azure_Subscription_Audit_Configure_Critical_Alerts, etc.


El comando relacionado con el chequeo de seguridad de PS se verá como:

Get-AzSKSubscriptionSecurityStatus -SubscriptionId <SubscriptionId> [-ControlIds <ControlIds>] [-FilterTags <FilterTags>] [-ExcludeTags <ExcludeTags>]


La lista completa de etiquetas actualmente soportadas por AzSK, así como su propósito se puede encontrar es la siguiente:


TAG Descripción
Access Actividades de acceso
ACLS Actividades de control de acceso.
AppService Servicios de aplicaciones de Azure
Audit Actividades de auditoria
AuthN Actividades de autenticación
AuthZ Actividades de autorizacion
Automated Controles que son automatizados por AzSK
Availability Disponibilidad
BCDR Copia de seguridad y recuperación ante desastres
Best Practice Controles que deben implementarse para garantizar la seguridad de su aplicación
Classic Servicios clásicos
Config Configuraciones
Deploy Actividades de implementación
Diagnostics Actividades diagnósticas
Dp Protección de Datos
FunctionApp Azure FunctionApp
Information Controles que son el comportamiento predeterminado de Azure pero verificación adicional para notificación
KeyRotation Rotación de la llave
Linux Máquina virtual Linux
Manual Controles que no están automatizados y debe verificarlo manualmente
NetSec Seguridad de la red
OwnerAccess Controles que requieren permiso del propietario / coadministrador para obtener la salida requerida
RBAC Controles de acceso basados ​​en roles
SDL Ciclo de vida del desarrollo de programas
SecIntell Intellisense de seguridad
SOX Controles impuestos por SOX
SqlDatabase Azure SQL Database
TCP Controles que deben implementarse para garantizar la seguridad de su aplicación
Windows Máquina virtual de Windows


Por ejemplo, si sólo le interesan los controles de seguridad de las mejores prácticas para los aspectos de configuración y control de acceso para una suscripción determinada, el comando AzSK apropiado será el siguiente:

Get-AzSKSubscriptionSecurityStatus -SubscriptionId "ValueOfSubscriptionId" -FilterTags "ACLS, Config, Best Practice"

Además del chequeo de seguridad de la suscripción, AzSK le permite configurar algunos aspectos adicionales de sus suscripciones a Azure.

2) Provisión de seguridad de la suscripción

Con AzSK, puedes proveer los contactos de seguridad para tu suscripción. Esto se hace usando el siguiente comando de AzSK: Set-AzSKSubscriptionSecurity -SubscriptionId <subscriptionId> -SecurityContactEmails <SecurityContactEmails> -SecurityPhoneNumber <SecurityPoCPhoneNumber>.


3) Configuración de la alerta

Con AzSK puedes configurar y gestionar las alertas por suscripción y por actividad de recursos en azul. El comando relacionado con AzSK es el siguiente:

Set-AzSKAlerts -SubscriptionId <subscriptionid> -SecurityContactEmails <SecurityContactEmails> [-SecurityPhoneNumbers <SecurityPhoneNumbers>].

AzSK actualmente soporta alertas para las siguientes actividades de suscripción:


Actividades de suscripción que generan alertas
Microsoft.Authorization/elevateAccess/action
Microsoft.Authorization/classicAdministrators/write
Microsoft.Authorization/classicAdministrators/delete
Microsoft.Authorization/locks/write
Microsoft.Authorization/locks/delete
Microsoft.Authorization/policyAssignments/delete
Microsoft.Authorization/policyAssignments/write
Microsoft.Authorization/policyDefinitions/delete
Microsoft.Authorization/roleAssignments/write
Microsoft.Authorization/roleAssignments/delete


Se requiere el permiso del propietario del RBAC azul en la suscripción para este comando de ajuste de alerta.

4) Configuración de la política de ARM

AzSK le permite establecer una línea base de políticas de ARM correspondientes a ciertas acciones que se consideran inseguras.

El comando PS relacionado es Set-AzSKARMPolicies -SubscriptionId <subscriptionid> y se requiere el permiso del propietario en la suscripción.

Las políticas ARM actualmente soportadas por AzSK incluyen lo siguiente:



Nombre de la política Descripción de la política
AzSK_ARMPol_Audit_SQL_Basic_Create Generar un evento de auditoría al crear una base de datos SQL con el tipo de edición 'Basic'.
AzSK_ARMPol_Audit_NonGRS_Storage_SKU Generar un evento de auditoría al crear una cuenta de almacenamiento con LRS estándar (sin Geo-Replicación)
AzSK_ARMPol_Audit_Job_Scheduler_Free_Tier Generar un evento de auditoría al crear un planificador de trabajo con nivel libre
AzSK_ARMPol_Audit_Old_SQL_Version Generate an audit event upon creation of a sql server with version less than 12.0
AzSK_ARMPol_Audit_NonHBI_Resource_Create Generate an audit event upon creation of resource types which have not been ratified for critical enterprise data
AzSK_ARMPol_Audit_Classic_Resource_Create Generar un evento de auditoría al crear recursos clásicos/v1 (es decir, basados en ASM)


5) Configuración del Centro de Seguridad Azul (ASC)

Con AzSK, puedes definir la configuración de la política empresarial por defecto para el Azure Security Center (ASC).

El comando relacionado con AzSK es Set-AzSKAzureSecurityCenterPolicies -SubscriptionId <SubscriptionId> -SecurityContactEmails <ContactEmails> -SecurityPhoneNumber <ContactPhone>

Este comando requiere el permiso del Lector de RBAC Azul en la suscripción.

6) Control de acceso (RBAC) higiene

AzSK finalmente le permite configurar un conjunto de cuentas obligatorias que se requieren para las funciones centrales de escaneo/auditoría/cumplimiento. El comando relacionado de AzSK es el siguiente: Set-AzSKSubscriptionRBAC -SubscriptionId <subscriptionId> y se requiere el permiso del propietario en la suscripción.

Como puedes ver, AzSK proporciona un conjunto completo de scripts automatizados que pueden ser aprovechados para controlar la seguridad de tus suscripciones a Azure a lo largo del ciclo de vida de tus desarrollos. Algunos de estos scripts requieren altos privilegios (por ejemplo, el permiso del propietario de Azure RBAC en la suscripción). Decidir quién puede o debe ejecutar qué scripts y cuándo, es una decisión crítica que debe tomarse como parte de sus actividades de gobierno de la nube Azure.

Conclusión

En este artículo, aprendiste a aprovechar el Kit de Desarrollo Seguro para Azure (AzSK) para controlar la seguridad de tus suscripciones. Un beneficio clave de AzSK es que el control de seguridad de la suscripción puede ser realizado por cualquier interesado en DevOps en cualquier etapa.

Pero como las suscripciones a Azure son los cimientos de las aplicaciones en la nube de Azure, deberían ser los primeros componentes de Azure en asegurar, para garantizar que la aplicación en la nube alojada se basará en fundamentos seguros. La verificación de la seguridad de la suscripción debería iniciarse entonces en la etapa muy temprana del desarrollo de la aplicación en la nube con la plataforma en la nube Azure.

En el próximo artículo, me centraré en cómo aprovechar el kit de desarrollo seguro para Azure para asegurar el desarrollo de sus aplicaciones en la nube, cubriendo otros recursos de Azure además de la suscripción.

Referencias clave y recursos adicionales