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