jueves, 2 de mayo de 2019

Introducción al Secure DevOps Kit for Azure

El 27 de abril del 2019 tuvimos una excelente jornada de #DevSecOps en Microsoft "GLOBAL AZURE BOOTCAMP 2019" Desde DevSecOps AR brindamos la charla "DevSecOps con Azure DevOps" de Luciano Moreira y Christian Ibiri.

Luego de nuestra charla tuvimos muchas consultas sobre Secure DevOps Kit for Azure en esta serie vamos a tratar de explicar sus principales características. 


ASC es muy útil para que los especialistas en Seguridad y Propietarios de cargas de trabajo en la nube monitoreen continuamente la higiene de seguridad de sus cargas de trabajo. Sin embargo, ASC es una herramienta de seguridad central para los recursos ya implementados.


Como sabemos, las aplicaciones en la época de la nube se están desarrollando en métodos ágiles y con la cultura DevOps. Esto significa que las aplicaciones no se implementan una sola vez como en el modo tradicional, sino en varias oleadas (por ejemplo, en sprints). Los equipos de desarrollo y operaciones ya no trabajan en silos, sino que cooperan a lo largo de todo el ciclo de vida de desarrollo de las aplicaciones.


En el contexto de la nube, las aplicaciones se despliegan en modo continuo (Integración continua/entrega continua, también conocida como CICD) y deben ser seguras desde la fase de codificación hasta el despliegue en producción.

Para lograrlo, no sólo los equipos de operaciones deben conocer y/o ser responsables de la seguridad de las aplicaciones de la nube. Los equipos de desarrollo también deberían contribuir a la seguridad de las aplicaciones de la nube e integrar la seguridad desde el principio y durante cada etapa. Para ello, una herramienta de seguridad como el Centro de Seguridad Azure no es apropiada para ser utilizada por los equipos de desarrollo para validar el estado de seguridad de sus aplicaciones antes de pasar a producción.

El Kit de Desarrollo Seguro para Azure (también conocido como AzSK) está ahí para complementar este vacío del Centro de Seguridad Azure.

Microsoft define AzSK como "un conjunto de automatización, extensiones, plugins, plantillas, módulos y otras herramientas que se combinan para ofrecer un flujo de trabajo de desarrollo enfocado en la seguridad para nuestros equipos de ingeniería de DevOps que trabajan en la nube". El objetivo del kit es capacitar a nuestros equipos para construir y utilizar soluciones basadas en Azure de manera consistente, repetible y eficiente con seguridad integrada en cada etapa".

AzSK ha sido desarrollado inicialmente para los equipos internos de Microsoft y liberado después para los usuarios de Azure. No es un producto comercial con soporte de usuario, pero es una solución gratuita para ser usada como tal, sin soporte de Microsoft.

La siguiente figura muestra cómo las 6 principales herramientas del kit de herramientas de DevOps se unen para permitir un desarrollo seguro en la nube.




El Kit de Desarrollo Seguro para el Azul es un marco que permite a los usuarios/clientes del azul:


  • Asegurar sus suscripciones
  • Asegurar su desarrollo
  • Comprobar la seguridad en los oleoductos de Integración Continua/Entrega Continua
  • Rastrear la deriva de la seguridad en la producción (Garantía continua)
  • Monitorizar la seguridad en todas las etapas de DevOps (Alerta y Monitoreo)
  • Riesgos de nubes agregados en toda la empresa (Gobernanza de riesgos de nubes/Telemetría de seguridad)



En este post, aprenderás las capacidades principales del Kit de Desarrollo Seguro para Azure (también conocido como AzSK).


1) Interesados en el Kit de Desarrollo Seguro para Azure (AzSK)


Los principales interesados que pueden utilizar AzSK en un ecosistema de Azure DevOps son los siguientes:


Partes interesadasCapacidades relevantes de AzSK
Propietarios de suscripcionesComprueba la salud de la seguridad general de las suscripciones de Azure
Asegurarse de que los artefactos como las alertas de actividades importantes, la política de ARM, los bloqueos de recursos, las funciones del RBAC, etc., estén debidamente aprovisionados
Equipos de desarrollo o ingenieríaObtén soporte en línea con consejos de seguridad y correcciones mientras escribes código para aplicaciones Azure
Pruebe que los recursos Azure que están usando para las aplicaciones/soluciones están configurados y desplegados de forma segura
Habilitar la seguridad en el CICD incluyendo varios ensayos de seguridad en los build/release pipelines
Equipos de implementaciónAsegurar que una solución que se está desplegando en un entorno azul tiene un nivel de seguridad asegurado.
Equipos de operacionesRastree el estado de seguridad de una manera 'continua' y asegúrese de que no haya una 'deriva' descendente desde un estado seguro
Equipos de cumplimientoAsegurar que se cumplan varios requisitos de cumplimiento, a menudo difíciles, (por ejemplo, SOX) para las soluciones basadas en el azufre
Equipos de seguridadUsar todo lo anterior dependiendo de su dominio de InfoSec (Arquitecto, Analista, etc.)

2) Preparando el Kit de Desarrollo Seguro para Azure (AzSK)

La instalación de AzSK es muy sencilla. Consiste en los siguientes pasos sencillos:

Lanzar PowerShell ISE en lugar de la consola estándar de PowerShell
Verifique los prerrequisitos de PowerShell: verifique que PowerShell 5.0 o superior esté instalado con el comando $PSVersionTable



Instale el módulo AzSK PowerShell: Instalar-Módulo AzSK -Scope CurrentUser
El módulo AzSK PowerShell requiere los módulos AzureRM. Si los módulos AzureRM PowerShell no están instalados todavía, se instalarán durante la instalación del AzSK.

AzureRM es un conjunto de módulos de PowerShell que permite a los usuarios de Azure administrar (crear, leer, actualizar, eliminar, etc.) sus recursos de Azure desde PowerShell.

Después de la instalación de AzSK, puede comprobar lo que se ha instalado con el comando Get-InstalledModule de PowerShell de la siguiente manera:




Pueden ver que la última versión de AzSK (3.7.0) al momento de escribir este post ha sido instalada. También está la versión de los módulos dependientes de AzureRM PowerShell que han sido instalados.

El Kit de Desarrollo Seguro para Azure está evolucionando con el tiempo. Se recomienda utilizar siempre la última versión para escanear su entorno Azure para asegurarse de que está aprovechando los últimos controles de seguridad del módulo AzSK.

El módulo AzSK proporciona diferentes capacidades de auto-actualización con respecto a las diferentes etapas de DevOps:

Escaneos Adhoc: si está ejecutando la versión más antigua del escaneo AzSK desde su máquina local, recibirá una advertencia así como las instrucciones necesarias para actualizar el módulo. Puede registrarse para la actualización automática (a partir de la versión AzSK 2.8.x) e ir con la actualización manual ejecutando el siguiente comando: Set-AzSKPolicySettings -AutoUpdate On. Luego, durante la ejecución de cualquier comando de AzSK, si se libera una nueva versión, el flujo de trabajo de actualización automática se inicia automáticamente como sigue:
  • El usuario es informado de la disponibilidad de una nueva versión y debe decidir si se actualiza o no. Si el usuario decide actualizarse, el flujo de trabajo de actualización continúa con los siguientes pasos
  • Se pide al usuario que guarde su trabajo en todas las sesiones activas de PowerShell incluyendo la actual
  • Se solicita al usuario que cierre todas las sesiones activas de PowerShell incluyendo la actual

Escáneres de Aseguramiento Continuo (CA): El módulo AzSK ejecuta los escaneos a través de CA, se actualiza automáticamente. Cada escaneo comprueba inicialmente si se ha lanzado alguna nueva versión y auto actualiza el módulo instalado a la última versión. No se requiere ninguna acción por parte del usuario.

Extensión AzSK CICD: el comportamiento por defecto de la extensión AzSK CICD es ejecutar siempre el escaneo usando el último módulo de AzSK de la galería.

3) Tipos de recursos Azure soportados

AzSK comenzó con el apoyo de sólo unos pocos tipos de recursos de Azure, pero actualmente (versión 3.7.0) soporta más de 35 tipos de recursos de Azure, incluyendo la suscripción.

A diferencia del Centro de Seguridad Azure, que permite monitorear la seguridad de algunos recursos básicos, incluyendo la suscripción, la computación y las aplicaciones, la red y el almacenamiento ya desplegados, AzSK permite a los clientes escanear la seguridad de más recursos Azure en diferentes etapas de DevOps.

Para tener la lista de todos los tipos de recursos de los servicios Azure que actualmente son soportados por su módulo AzSK PowerShell instalado, puede ejecutar el comando Get-AzSKSupportedResourceTypes de la siguiente manera:


Todos estos recursos Azure soportados tienen disponibles las Pruebas de Verificación de Seguridad (SVT) y estas SVT serán invocadas cada vez que se ejecute el comando Get-AzSKAzureServicesSecurityStatus.

Dependiendo de sus necesidades, puede ejecutar las pruebas de verificación de seguridad o los escaneos de todos los recursos de su entorno Azure o sólo de un subconjunto de recursos. Veremos cómo se hace en la siguiente sección o post, usando las capacidades de filtrado de los comandos de AzSK.

4) Comandos AzSK soportados

El actual AzSK (versión 3.7.0) proporciona más de 40 comandos de PowerShell que pueden ser listados con el comando de PowerShell Get-Help AzSK de la siguiente manera:


Como para cualquier cmdlet de PowerShell, puedes obtener los detalles de cada comando de AzSK escribiendo Get-Help <AzSK function/command>.

Por ejemplo, los detalles sobre el comando Get-AzSKSubscriptionSecurityStatus de AzSK se pueden obtener de la siguiente manera:



Es muy importante saber que algunos comandos de AzSK requieren más privilegios en Azure que otros. La siguiente tabla proporciona los permisos necesarios para algunos comandos clave de AzSK:



ComandoAliasDescripciónPermiso requerido
Get-AzSKAzureServicesSecurityStatusGRSEscanea un conjunto de RG (o la suscripción completa)Lector con suscripción o RG respectivos
Get-AzSKContinuousAssuranceGCAValida el estado de la cuenta de automatización de Continuous Assurance , incluida la condición de varios artefactos, como la cuenta de almacenamiento, horarios, runbooks, etc.Lector en suscripción
Get-AzSKControlsStatusGACSCmdlet único que combina Get-AzSKSubscriptionSecurityStatus, Get-AzSKAzureServicesSecurityStatusUnión de permisos
Get-AzSKSubscriptionSecurityStatusGSSEscanea una suscripción de Azure en busca de mejores prácticas de seguridad y líneas de base de configuración para cosas como alertas, políticas ARM, RBAC, ASC, etc.Lector en suscripción
Get-AzSKInfoGAIAyuda a los usuarios a obtener detalles de varios componentes de AzSKLector en suscripción, Colaborador en AzSKRG
Install-AzSKContinuousAssuranceICAConfigura la garantía continua de una suscripción. Esto crea varios artefactos, como el grupo de recursos, la cuenta de almacenamiento y la cuenta de automatización.Propietario en suscripción
Install-AzSKOMSSolutionIOMCrea e implementa una vista de OMS en una suscripción que tiene un espacio de trabajo de OMSLector en suscripción
Install-AzSKOrganizationPolicyIOPEste comando está destinado a ser utilizado por el equipo central de la Organización para configurar políticas específicas de la OrganizaciónColaborador en suscripción
Remove-AzSKAlertsRALElimina las alertas configuradas por AzSKPropietario en suscripción
Remove-AzSKARMPoliciesRAPElimina la política ARM configurada por AzSKPropietario en suscripción
Remove-AzSKSubscriptionRBACRRBElimina la configuración RBAC de AzSK. Por defecto, las cuentas centrales "obligatorias" no se eliminan y las cuentas "obsoletas" siempre se eliminanPropietario en suscripción
Remove-AzSKSubscriptionSecurityRSSElimina la configuración realizada a través de Set-AzSKSubscriptionSecurityPropietario en suscripción
Repair-AzSKAzureServicesSecurityRRSSoluciona los controles de seguridad para varios recursos de Azure utilizando los scripts de reparación automatizados generados al ejecutar el comando de exploración AzSK "Get-AzSKAzureServicesSecurityStatus" con el indicador '-GenerateFixScript'Colaborador en suscripción o respectivos RG
Repair-AzSKSubscriptionSecurityRASSSoluciona los controles relacionados con la seguridad de la suscripción utilizando los scripts de reparación automatizados generados al ejecutar el comando de escaneo AzSK "Get-AzSKSubscriptionSecurityStatus" con el indicador '-GenerateFixScript'Colaborador en suscripción
Set-AzSKAlertsSAA"Configura alertas de actividad para la suscripción. Las alertas pueden tener un alcance de suscripción o RG.
Esto se llama internamente por Set-AzSKSubscriptionSecurity"
Propietario en suscripción
Set-AzSKARMPoliciesSAP"Configura un conjunto básico de políticas ARM en una suscripción. Esto se llama internamente por Set-AzSKSubscriptionSecurity"Propietario en suscripción
Set-AzSKAzureSecurityCenterPoliciesSSCEstablece políticas de ASC y puntos de contacto de seguridad.Lector en suscripción
Set-AzSKOMSSettingsSOSConfigura AzSK para enviar resultados de escaneo al espacio de trabajo de OMS proporcionadoLector en suscripción
Set-AzSKPolicySettingsSPSConfigura la URL del servidor que utiliza AzSK para descargar controles y configurar JSON. Si no se llama a esto, AzSK se ejecuta en modo 'org-neutral' utilizando una política genéricaLector en suscripción
Set-AzSKSubscriptionRBACSRBConfigura RBAC para una suscripciónPropietario en suscripción
Set-AzSKSubscriptionSecuritySSSComando maestro que toma entradas combinadas e invoca los comandos de configuración individuales para RBAC, política ARM, Alertas y ASCPropietario en suscripción




Como puedes ver, para beneficiarte de AzSK, necesitas tener los permisos apropiados de Azure (Azure RBAC), dependiendo de tu papel en el ecosistema de DevOps:


  • Lector en suscripción o grupos de recursos respectivos (RG)
  • Controlador en suscripción o en los respectivos RG
  • Propietario en suscripción



Conclusión

En este artículo, centrado en la introducción del Kit de Desarrollo Seguro para Azure (AzSK), describí las capacidades básicas necesarias para comenzar con AzSK. Aprendiste los siguientes aspectos:


  • Los principales interesados en AzSK
  • La guía de configuración del AzSK
  • El AzSK apoyó los tipos de recursos de Azure
  • Los comandos soportados por AzSK
  • Los principales permisos requeridos por el RBAC de Azure para AzSK


En el próximo artículo, no centraremos en los controles del AzSK y en cómo aprovecharlos para asegurar sus aplicaciones en la nube a lo largo de las etapas de DevOps.