Cifrado de Datos

La seguridad de sus datos es importante. Más específicamente, la seguridad de los datos de sus clientes es fundamental. Apenas pasó una semana sin que leyéramos en las noticias que una empresa importante descubrió una filtración de datos. A menudo, estos incidentes son provocados por una falta de seguridad, una configuración errónea o un descuido simple. En esta era digital, es demasiado fácil para los atacantes automatizar sus intentos de obtener acceso a sus datos. El tiempo para recuperarse de un incidente de seguridad en un nivel de aplicación puede ser nada comparado con el tiempo que tarda el negocio e recuperar la confianza de sus clientes si se expusieron sus datos.
Azure incluye características de cifrado que dificultan la afirmación de que no tiene el tiempo ni la experiencia para proteger sus datos. En este capítulo, veremos cómo cifrar los datos almacenados en Azure Storage, en los discos administrados o en la VM completa. Se han escrito libros enteros sobre cifrado de datos, y este capítulo no profundiza sobre los métodos y consideraciones de cifrado. En su lugar, verá cómo habilitar algunas de las características y servicios principales de Azure para proteger sus datos durante el ciclo de vida de la aplicación.

¿Qué es el cifrado de datos?
Cuando usted compra algo en línea, ¿comprueba que hay un pequeño icono de candado en la barra de direcciones para indicar que el sitio web utiliza HTTPS? ¿Por qué es malo enviar sus información de crédito a través de una conexión HTTP normal y no segura? Cada bit de datos de un paquete de red que fluye entre dispositivos podría ser potencialmente controlado y examinado. En la figura, se muestra cómo comprar en línea sin una conexión HTTPS podría ser perjudicial para el extracto de su tarjeta de crédito.
No hay excusa para que los servidores web utilicen conexiones no seguras.
Cada aplicación web que crea en Azure automáticamente tiene un certificado SSL comodín aplicado.

Un certificado SSL es un componente digital que se utiliza para proteger el servidor web y permitir que un navegador web valide la conexión. Se puede utilizar un certificado SSL comodín en un dominio completo, como *.azurewebsites.net, el dominio predeterminado para aplicaciones web. Cuando creó una aplicación web en el capítulo 3, podría haber agregado https:// to the web address and started to use encrypted communications with your web apps. ¡Eso es todo!
Los certificados SSL personalizados son relativamente económicos y fáciles de implementar. A través de proyectos como Let’s Encrypt (https://letsencrypt.org), puede obtener un certificado gratuito y configurar automáticamente su servidor web en minutos. También puede comprar y utilizar un certificado de App Service que se integra directamente en Web Apps. Los certificados de App Service se almacenan en Azure Key Vault, que analizaremos más en el capítulo 15.
A medida que diseñe y construya aplicaciones en Azure, debería implementar comunicaciones seguras siempre que sea posible. Este enfoque ayuda a proteger los datos mientras están en tránsito, pero ¿qué pasa cuando esos datos se escriben en el disco? Existe un proceso similar para discos y VM que asegura y protege sus datos en reposo. En la figura, se muestra cómo funciona el cifrado de discos y VM.
Espero que estos ejemplos simplificados de cifrado de datos en Azure lo motiven a implementar el cifrado cuando diseñe y desarrolle aplicaciones en Azure. La mayoría de los clientes esperan que sus datos estén protegidos, y muchas empresas tienen mandatos reglamentarios y de cumplimiento de normativas que requieren cifrado. No piense solo en las potenciales multas para el negocio por una filtración de datos, ni la pérdida de confianza del cliente. Considere el riesgo de que los datos personales y financieros de los clientes queden expuestos y cómo esa exposición podría afectar a su vida cotidiana. Probablemente no le guste la idea de que sus propios datos estén expuestos, entonces, haga todo lo que pueda para proteger los datos de sus clientes.

Cifrado en reposo
Si el cifrado de datos es tan importante, ¿cómo lo utiliza en Azure? ¡solo siga haciendo lo que ya ha aprendido en este libro! Justo al principio, mencioné que todas las VM deberían usar discos administrados, ¿verdad? Hay muchas buenas razones para ello, una de las cuales es la seguridad. Un disco administrado se cifra automáticamente. No tiene nada para configurar y no hay ningún impacto en el rendimiento cuando está habilitado. No puede excluirse aquí: sus datos se cifran automáticamente en reposo con discos administrados.
¿Qué significa que los datos se cifren en reposo? Cuando utiliza discos administrados, sus datos se cifran cuando se escriben en el almacenamiento subyacente de Azure. Los datos que residen en los discos temporales, o los datos que existen in-memory de la VM, no están cifrados. Solo una vez que los datos del SO o del disco de datos reposan en el disco físico subyacente, se cifran. En la figura, se muestra cómo se cifran los datos a medida que se escriben en un disco administrado.

Este cifrado en reposo para discos administrados significa que no hay impacto en el rendimiento en las VM. La VM no necesita realizar ningún procesamiento adicional para el cifrado y descifrado de los datos, por lo que se puede utilizar toda la potencia de CPU disponible para ejecutar aplicaciones. En los escenarios típicos de cifrado de VM, la VM utiliza cierta cantidad de potencia de proceso para procesar y administrar el cifrado de datos. La compensación del cifrado automático de discos administrados es que solo se protegen el sistema operativo y los discos de datos. Potencialmente, se podrían exponer otros datos de disco in-memory o temporales en la VM.
Microsoft administra las claves de cifrado digital dentro de la plataforma Azure con el cifrado automático de discos administrados. Esto crea otro intercambio en el que puede cifrar automáticamente sus datos sin necesidad de crear, administrar, rotar o revocar claves, pero tiene que confiar en Microsoft para proteger esas claves.

Storage Service Encryption
El cifrado automático de discos administrados es genial, pero ¿qué ocurre si utiliza Azure Storage para almacenamiento de blobs o archivos? Azure Storage Service Encryption (SSE) le permite cifrar los datos en el nivel de la cuenta de almacenamiento. Los datos se cifran a medida que se escriben en la cuenta. Nuevamente, Microsoft controla las claves de cifrado, por lo que no se requiere configuración ni sobrecarga de administración. La plataforma Azure extrae la generación y administración de claves para usted. Si lo prefiere, puede crear y utilizar sus propias claves de cifrado, con un poco de sobrecarga adicional de administración. Al igual que el cifrado automático del disco administrado en reposo, el cifrado del almacenamiento de Azure se activa automáticamente al crear una cuenta.
El objetivo tanto con el cifrado automático de discos administrados como con SSE es facilitarle lo más posible el cifrado de datos para que pueda dedicar más tiempo a diseñar, desarrollar y ejecutar sus aplicaciones. En la figura, se muestra cómo SSE protege sus datos y también puede forzar las comunicaciones seguras cuando los datos están en tránsito.

Forzado del tráfico de almacenamiento para utilizar transferencias seguras
Junto con la habilitación de SSE, puede forzar todas las transferencias y solicitudes de almacenamiento para utilizar un método de comunicación seguro. Esta configuración obliga a todas las llamadas de API REST a utilizar HTTPS, y todas las conexiones de archivos Azure que no habiliten el cifrado, como las versiones anteriores del protocolo SMB, se eliminarán.
Los SDK de Azure, como los ejemplos de Python que vimos en el capítulo 4, pueden usar conexiones cifradas. Los documentos de referencia para cada SDK específico del idioma proporcionan orientación sobre cómo implementar comunicaciones seguras.
El uso de comunicaciones seguras debe incorporarse a las aplicaciones desde el principio. Si algunos componentes no se configuraron correctamente desde el inicio, esto puede causar problemas para habilitar comunicaciones seguras en una aplicación existente. Por lo menos, pruebe las comunicaciones seguras para una aplicación existente en un entorno de desarrollo primero.

Pruébelo ahora
Para crear una cuenta de almacenamiento y habilitar el cifrado y las comunicaciones seguras, complete los pasos siguientes:
1 Abra el portal Azure y seleccione el icono de Cloud Shell en el menú superior.
2 Cree un grupo de recursos; proporcione un nombre, como azuremolchapter14; y proporcione una ubicación, como eastus:
az group create –name azuremolchapter14 –location eastus
3 Cree una cuenta de almacenamiento con az storage account create. Proporcione un nombre único, como azuremolstorage, e ingrese el grupo de recursos que creó en el paso 2. Especifique un tipo de cuenta de almacenamiento, como Standard_LRS para almacenamiento redundante local. Para forzar las comunicaciones seguras, establezca –https-only.
az storage account create \
–name azuremolstorage \
–resource-group azuremolchapter14 \
–sku standard_lrs \
–https-only true

4 Compruebe que la cuenta de almacenamiento está cifrada y habilitada para comunicaciones seguras consultando por enableHttpsTrafficOnly y los parámetros de cifrado:
az storage account show \
–name azuremolstorage \
–resource-group azuremolchapter14 \
–query [enableHttpsTrafficOnly,encryption]

La salida es similar a lo siguiente:
[
true,
{
«keySource»: «Microsoft.Storage»,
«keyVaultProperties»: null,
«services»: {
«blob»: {
«enabled»: true,
«lastEnabledTime»: «2019-09-27T03:33:17.441971+00:00»
},
«file»: {
«enabled»: true,
«lastEnabledTime»: «2019-09-27T03:33:17.441971+00:00»
},
«queue»: null,
«table»: null
}
}
]

Cifrado de VM
El cifrado automático de Azure Managed Disks ayuda a proporcionar un nivel de seguridad de VM. Para un enfoque integral de la seguridad de datos de VM, puede cifrar la VM. Este proceso implica más que cifrar los discos duros virtuales subyacentes. El disco del SO y todos los discos de datos conectados, junto con el disco temporal, están cifrados. La memoria de VM también está cifrada para reducir aún más el área de ataque. Las claves digitales se usan para cifrar las VM.
Una de las ventajas de cifrar toda la VM es que usted administra las claves de cifrado. Estas claves de cifrado se almacenan de forma segura en Azure Key Vault, y puede elegir entre usar claves generadas por software o hardware. Usted controla estas claves, de modo que puede definir el acceso a ellas y utilizar controles de acceso basados en roles y realizar auditorías para hacer un seguimiento del uso. También puede rotar las claves de cifrado en un horario definido, como cambiar su contraseña cada 60 o 90 días. Estas tareas de administración y controles adicionales para las claves de cifrado agregan un poco de sobrecarga de administración, pero proporcionan la máxima flexibilidad para proteger sus datos, y pueden requerirse para ciertos fines normativos. Veamos un poco más sobre Azure Key Vault.

Almacenamiento de claves de cifrado en Azure Key Vault
Pasaremos el capítulo 15 con Azure Key Vault, pero quiero mostrarle el poder del cifrado de datos y el cifrado de VM primero. Como información general rápida, Azure Key Vault es un almacén digital que le permite almacenar de forma segura claves de cifrado, certificados SSL y secretos como contraseñas. Para redundancia, los almacenes de claves se replican en regiones Azure. Esta replicación protege sus claves y secretos, y garantiza que siempre estén disponibles para su uso.
Solo usted tiene acceso a sus almacenes de claves. Genera y almacena objetos en almacenes de claves y, a continuación, define quién tiene acceso a estos almacenes. Microsoft administra el servicio de Key Vault subyacente, pero no tiene acceso al contenido de los almacenes. Este límite de seguridad significa que cuando usted cifra sus datos en Azure, usted es el único que puede descifrarlos y verlos.

Pruébelo ahora
Para crear un almacén de claves y una clave de cifrado, complete los siguientes pasos:
1 Abra el Azure Portal y seleccione el icono de Cloud Shell en el menú superior.
2 Cree un almacén de claves con el comando az keyvault create; especifique el grupo de recursos que creó en el ejercicio anterior, como azuremolchapter14; y, a continuación, proporcione un nombre único para el almacén de claves, como azuremolkeyvault:
az keyvault create \
–resource-group azuremolchapter14 \
–name azuremolkeyvault \
–enabled-for-disk-encryption

Vamos a hacer una pausa y pensar por qué se agrega un parámetro para –enabled-for-disk-encryption. Al cifrar una VM, la plataforma Azure necesita poder iniciar y descifrar la VM para que pueda ejecutarse. La plataforma Azure no tiene ningún permiso para acceder a esos datos y Microsoft no tiene acceso para ver y usar esas claves de cifrado para otra cosa que no sea iniciar una VM. Cuando se habilita un almacén de claves para el cifrado de discos, se conceden permisos para que Azure acceda al almacén de claves y utilice la clave de cifrado asociada a una VM.
Nuevamente, Microsoft no tiene acceso a estas claves ni a sus datos, solo la posibilidad de iniciar su VM cifrada. Es bastante difícil hacer mucho con una VM cifrada cuando no puede arrancar. En la figura, se muestra cómo la plataforma Azure utiliza la clave de cifrado para iniciar una VM cifrada.

Las claves se pueden crear y almacenar en software, o pueden ser almacenadas en los módulos de seguridad de hardware (HSM) para una mayor seguridad. Para muchos propósitos, las claves de software funcionan muy bien, aunque puede tener mandatos de seguridad que requieran el uso de HSM.

3 Para crear una clave, especifique el almacén que creó en el paso 2, como azuremolkeyvault, y, a continuación, proporcione un nombre de clave, como azuremolencryptionkey:
az keyvault key create \
–vault-name azuremolkeyvault \
–name azuremolencryptionkey \
–protection software

Cifrado de una VM Azure
La clave de cifrado que creó en la sección 14.4.1 puede usarse para cifrar muchas VM, si lo desea. Este enfoque minimiza la sobrecarga de la administración de claves y, si utiliza conjuntos de escala de máquinas virtuales, le permite escalar automáticamente la cantidad de instancias de VM sin necesidad de generar claves de cifrado cada vez. La alternativa es que cada VM tiene su propia clave de cifrado, que agrega complejidad, pero ofrece una capa de seguridad para sus VM. Si se tiene la misma clave de cifrado utilizada para las máquinas virtuales de aplicaciones de back-end y para las máquinas virtuales de bases de datos, por ejemplo, un atacante teórico con esa clave podría acceder a los datos de ambos conjuntos de máquinas virtuales. Si se utilizan claves diferentes, el número de máquinas virtuales potencialmente comprometidas es menor. En el laboratorio de fin de capítulo, cifrará una sola VM, aunque el mismo proceso puede funcionar con un conjunto de escalas que tenga varias VM pero que solo utilice una clave. Especialmente cuando trabaja con aplicaciones de escalado automático más grandes, asegúrese de diseñar y desarrollar características de seguridad.
Cuando se cifra una VM, se instala una extensión Azure VM. La extensión controla el cifrado del disco del SO, del disco temporal, de los discos de datos conectados y de los datos in-memory, como se muestra en la figura. Para las VM de Windows, se utiliza el mecanismo de cifrado de BitLocker. Para las VM de Linux, se utiliza dm-crypt para procesar el cifrado. La extensión VM puede informar el estado del cifrado y descifrar la VM como se desee.

Dado que la extensión de cifrado de disco de VM se basa en BitLocker o dm-crypt, existen algunas limitaciones sobre el uso del cifrado de VM. La mayoría de las imágenes de Azure Marketplace admiten el cifrado del disco, aunque existen algunas restricciones en los tamaños de VM que admiten cifrado o cifrado de uso compartido de archivos de red conectada como archivos Azure. Para obtener la información más completa sobre las limitaciones y consideraciones admitidas para el cifrado de VM, lea los documentos más recientes de Azure en http://mng.bz/yyvd.
Este capítulo se proporcionó una introducción rápida a las características de seguridad y cifrado de datos en Azure. El cifrado automático para discos administrados y SSE no requieren mucha configuración, por lo que no hay una barrera real que le impida utilizarlos.

Laboratorio: Cifrado de una VM
Veamos todo esto en acción cifrando una VM con la clave de cifrado almacenada en el almacén de claves:
1 Cree una VM. La mayoría de las imágenes de Linux en Azure Marketplace admite cifrado, al igual que las imágenes de Windows Server del servidor 2008 R2 y posteriores. Para hacerlo rápido y fácil, cree una VM de Ubuntu LTS, tal como lo hizo para la mayor parte de este libro. Como la VM requiere suficiente memoria para realizar la operación de cifrado de disco, especifique un tamaño de Standard_D2s_v3:
az vm create \
–resource-group azuremolchapter14 \
–name molvm \
–image ubuntults \
–size Standard_D2s_v3 \
–admin-username azuremol \
–generate-ssh-keys

2 Habilite el cifrado en la máquina virtual y proporcione el nombre de Azure Key Vault que creó en un ejercicio anterior:
az vm encryption enable \
–resource-group azuremolchapter14 \
–name molvm \
–disk-encryption-keyvault azuremolkeyvault \
–key-encryption-key azuremolencryptionkey

Tarda unos minutos en instalar la extensión de cifrado de disco de Azure VM y comenzar el proceso de cifrado de la VM.
3 Cuando se haya iniciado el cifrado, controle el progreso y esté listo para reiniciar la VM para completar el proceso de cifrado. Vea el estado de la siguiente manera:
az vm encryption show \
–resource-group azuremolchapter14 \
–name molvm \
–query ‘status’
He aquí un ejemplo de salida de una VM en el proceso de cifrado. Al inicio, el mensaje de estado informa como
[
{
«code»: «ProvisioningState/succeeded»,
«displayStatus»: «Provisioning succeeded»,
«level»: «Info»,
«message»: «OS disk encryption started»,
«time»: null
}
]

Puede llevar un tiempo completar el cifrado de disco, por lo que este puede ser otro buen ejercicio de laboratorio al cual regresar en una hora más o menos, a menos que desee un largo almuerzo. Yo no soy su jefe, pero es aburrido mirar el mismo mensaje de estado de cifrado.
4 Cuando el estado de cifrado se informe como Encryption succeeded for all volumes, reinicie la VM:
az vm restart –resource-group azuremolchapter14 –name molvm
A continuación, puede comprobar el estado del cifrado de la VM nuevamente con az vm encryption show para confirmar que la VM se informa como Cifrada.

y con esto terminamos el capitulo de hoy, que tengan un buen dia…