2. Cloud Bootcamp Colombia 2021
#LiveFromColombia
Azure Key Vault para aumentar la
seguridad
Luis Beltrán
3. Luis Beltrán
Investigador en Tomás Bata University in Zlín, República
Checa
Docente en Tecnológico Nacional de México en Celaya
Xamarin, Azure, Inteligencia Artificial
@darkicebeam
luis@luisbeltran.mx
5. La seguridad es importante
• Archivo de 1,74 GB con 1,286,366 registros
• Datos personales de 550, 000 donantes de sangre
• Los datos no se cifraron y se almacenaron en un sitio web no seguro
• Encontrado mediante el escaneo de direcciones públicas en busca de
archivos .sql
Fuente: https://www.troyhunt.com/the-red-cross-blood-service-australias-largest-ever-
leak-of-personal-data
Cruz Roja Australia
Sony Entertainment en 2011
• Se cayó PlayStation Network
• Datos no encriptados de tarjetas de crédito de los usuarios
Sony Pictures en 2014
• Datos personales de empleados y familias
• Correos electrónicos confidenciales e información salarial
• Algunas películas (The Interview, Annie)
Fuente: https://en.wikipedia.org/wiki/2011_PlayStation_Network_outage ;
https://en.wikipedia.org/wiki/Sony_Pictures_hack
Sony Entertainment y
Sony Pictures
• Tenía un CryptoLocker (ransomware) instalado
• 350GB de datos personales
• Pagó $400 para volver a acceder a sus datos
Mi “amigo” Juan
• 340GB de datos
• 228,605 direcciones de correo electrónico
• 1,3 millones de números de pasaporte y fechas de caducidad
• 15,8 millones de registros de huellas dactilares
• Los datos estaban encriptados: la llave estaba en el código PHP de su sitio
web
Fuente:
https://en.wikipedia.org/wiki/Commission_on_Elections_data_breach
Comisiones Electorales de la República de
Filipinas
La seguridad
es importante
7. Contenido a asegurar
Llaves simétricas
Llaves asimétricas
Llaves
Certificados digitales
Llaves digitales
Certificados
Cadenas de conexión
Credenciales
Otros secretos
Secretos
Llave pública Llave privada
8. Solicitudes frecuentes
“Quiero encriptar mis datos y además…
• Necesito mantener claves de cifrado en HSMs (FIPS140-2 Nivel 2+)”
• Necesito controlar el ciclo de vida de mis claves de encriptación.”
• Quiero controlar las claves de mis aplicaciones conectadas a la nube en un
solo lugar.”
• Necesito almacenar las claves de encriptación en un servidor on-premises /
de mi país / en HSMs dedicados.”
9. Hardware Security Module (HSM)
Un módulo de seguridad de hardware (HSM) es un dispositivo informático físico
que protege y administra las claves digitales para una autenticación sólida y
proporciona criptoprocesamiento.
Estos módulos vienen tradicionalmente en forma de una tarjeta plug-in o un
dispositivo externo que se conecta directamente a una computadora o servidor
de red.
10. Administración de secretos en Azure
“Mi aplicación en Azure tiene contraseñas y llaves criptográficas, así que…
• Necesito un lugar seguro donde almacenarlas en Azure”.
• Necesito (re)utilizar usuarios y grupos de Active Directory para administrar el
acceso a los secretos.”
• No quiero aparecer en las noticias por un error de seguridad”
12. Azure Key Vault
• Un servicio alojado en la nube de Azure en sistemas
dedicados y HSM
• Potencia la mayoría de los servicios de cifrado
proporcionados por Azure
• Disponible para que los desarrolladores lo utilicen en
sus propias aplicaciones
13. Características
Servicio hospedado en la nube, respaldado por HSM para administrar claves criptográficas
utilizando estándares certificados FIPS 140-2 Nivel 2
Encripta claves y secretos
Importa o genera tus claves
Simplifica y automatiza tareas para certificados SSL / TLS
Todas las claves permanecen en el límite de HSM
No puedes recuperar la clave privada
Key Vault se implementa en minutos
Viene en dos opciones: Standard y Premium
Con Premium Key Vaults, todos los secretos y claves se almacenan
en un HSM
0.03 USD / 10.000 operaciones
Renovación de certificación: 3 USD por solicitud de
renovación
Claves protegidas HSM: 1 USD por clave por mes
14. Conceptos importantes
Secret
• Cualquier secuencia de bytes (máx. 25KB): Cadena de conexión SQL, archivo
PFX, llave de encriptación AES).
• Usuarios/apps autorizadas pueden escribir y leer de vuelta el valor secreto.
Key
• Una llave de encriptación RSA 2048.
• Una llave no puede ser recuperada de vuelta. El solicitante debe pedir al
servicio desencriptar / firmarse con la llave.
Key Vault
• Contenedor lógico para llaves y secretos relacionados que son administrados
juntos.
• Unidad de control de acceso / unidad de facturación.
• Un recurso de Azure, por ejemplo una cuenta de almacenamiento.
15. Creando una bóveda
az keyvault create --resource-group <resource-group> --name <your-unique-vault-name>
New-AzKeyVault -Name <your-unique-vault-name> -ResourceGroupName <resource-group>
PowerShell
Azure CLI
16. Creando llaves y secretos; autenticación
$key = Add-AzureKeyVaultKey -VaultName 'contoso' -Name 'MyFirstKey' -Destination 'HSM'
PowerShell
string keyVaultName = Environment.GetEnvironmentVariable("KEY_VAULT_NAME");
var kvUri = "https://" + keyVaultName + ".vault.azure.net";
var client = new SecretClient(new Uri(kvUri), new DefaultAzureCredential());
Autenticación de la bóveda y creación de un cliente en C#
Creación de un secreto en C#
client.SetSecret(secretName, secretValue);
var secret = client.GetSecret(secretName);
Recuperación de un secreto en C#
Borrado de un secreto en C#
client.StartDeleteSecret(secretName);
17. • Las llaves y secretos son encriptados 1
• Elección del país de implementación 2
• Elección del método de cifrado
(Software vs Hardware & BYOK) 3
• Separación del modulo de seguridad 4
• Fácil acceso y control de los permisos 5
• Bajo costo 6
18. • Bajo costo
• Fácil acceso y control de los permisos
• Separación del modulo de seguridad
• Las llaves y secretos son encriptados
• Elección del país de implementación
• Elección del método de cifrado
(Software vs Hardware & BYOK)
1
2
3
4
5
6
Toda información en la KeyVault es encriptada
Precio: 0.03$ / 10.000 transacciones
Administración mediante PowerShell /
Azure AD / RBAC
Crea tantas Key Vaults como requieras
Elige en qué centro de datos y en qué grupo
de recursos deseas implementar KeyVault
Edición Standard vs Premium
BYOK
19. Flujo en Azure Key Vault
Azure
Admin / Key
Vault Owner
Azure
Active Directory
1. Create service principal
Key Vault
2. Create Key Vault
Configure access for
service principal
Key / Secret
Owner
3. create Key / Secret
Application
or Azure
Resource
5. Configure Application / Azure
resource with the service
principal and Key / Secret URI
6. Authenticate against AAD
7. receive token from AAD
8.Send token to Key Vault
9. Access Key Vault and retrieve
Key / Secret
4. communicate service principal
and Key / Secret URI Application
Owner
Uno de los elementos importantes a nivel de seguridad que debes considerar en tu aplicación es dónde almacenar tus secretos (cadenas de conexión a bases de datos, llaves de acceso a servicios, contraseñas...). Incluirlos directamente en tu código o en archivos locales del proyecto es entregarlos directamente a los atacantes. Para resolver este problema, Azure proporciona un servicio llamado Azure Key Vault, con el que podemos administrar los secretos de nuestra aplicación, definiendo políticas de acceso y dando seguimiento a su uso.
Es muy común almacenar los secretos utilizando un patrón de configuración externa:
La información de configuración se mueve fuera de la implementación de la app
Fácil administración y control de datos de configuración
Puede compartirse datos de cofngiración entre aplicaciones e instancias
Sin embargo, la configuración se hace parte de la implementación
Mñultiples apps comparten la misma configuración
Difícil controlar el acceso del archivo de configuración
El HSM se utiliza cuando la seguridad es primordial. Al igual que con otros dispositivos de hardware, existen aspectos técnicos involucrado en la adquisición, el costo, la instalación, la actualización y el mantenimiento (por nombrar algunos) ... ¡y eso es antes de que pueda usarlo para todos los beneficios que brinda!
To help you out of this hardware misery, Microsoft offers you Azure Key Vault (AKV) in the cloud. It offers the benefits of HSM, minus the headache in managing it.
Microsoft Azure Key Vault is a cloud service that works as a security-enhanced secrets store.
Key Vault allows you to create multiple security-enhanced containers, called vaults. These vaults are backed by hardware security modules (HSMs). Vaults help to reduce the chance of accidentally losing security information by centralizing the storage of application secrets. Vaults also control and log the access to anything stored in them. Azure Key Vault is designed to support any type of secret, such as a password, database credential, API key, or certificate. Software or HSMs can help to protect these secrets. Azure Key Vault can handle requesting and renewing Transport Layer Security (TLS) certificates, providing the features required for a robust certificate lifecycle management solution.
Key Vault streamlines the key management process and enables you to maintain control of keys that access and encrypt your data. Developers can create keys for development and testing in minutes, and then seamlessly migrate them to production keys. Security administrators can grant (and revoke) permission to keys as needed.
Key Vault enables Azure applications and users to store and use several types of secret/key data, including:
Cryptographic keys. Key Vault supports multiple key types and algorithms and using hardware security modules (HSMs) for high-value keys.
Secrets. Key Vault provides secure storage of secrets, such as passwords and database connection strings.
Certificates. Key Vault supports certificates, which are built on top of keys and secrets, and add an automated renewal feature.
Azure Storage. Key Vault can manage the keys of an Azure Storage account. Internally, Key Vault can list (sync) keys with an Azure Storage Account and regenerate (rotate) the keys periodically.
Key Operations: Create Key, Import Key, Delete Key, Encrypt, Decrypt, Wrap, Unwrap, Backup, Restore.
Secret Operations: Get, Set, Delete, List.
Encryption keys
API keys
Secrets
Passwords
SSL/TLS certificates
Isolation
Key Vaults, Keys, Secrets stay within region.
Hardware ensures that cryptographic keys for a GEO cannot be used in data centers in other geos.
HSM-protected key
Operations on this key are performed inside HSMs (Thales nShield, FIPS 140-2 Level 2).
Software-protected key
Operations on this key are performed in VMs on Azure (FIPS 140-2 Level 1 pending).
When stored, they are encrypted with a key chain that terminates in HSMs.
Here are some important terms:
Vault owner: A vault owner can create a key vault and gain full access and control over it. The vault owner can also set up auditing to log who accesses secrets and keys. Administrators can control the key lifecycle.
Vault consumer: A vault consumer can perform actions on the assets inside the key vault when the vault owner grants the consumer access. The available actions depend on the permissions granted.
Key Vault owner sets ACL on key vault that specifies WHO can do WHICH operations.
Each entry is the pair : {Azure AD identity, operations}.
To perform any operations with Key Vault, you first need to authenticate to it. There are three ways to authenticate to Key Vault:
Managed identities for Azure resources. When you deploy an app on a virtual machine in Azure, you can assign an identity to your virtual machine that has access to Key Vault. You can also assign identities to other Azure resources. The benefit of this approach is that the app or service isn't managing the rotation of the first secret. Azure automatically rotates the identity. We recommend this approach as a best practice.
Service principal and certificate. You can use a service principal and an associated certificate that has access to Key Vault. We don't recommend this approach because the application owner or the developer must rotate the certificate.
Service principal and secret. Although you can use a service principal and a secret to authenticate to Key Vault, we don't recommend this either. It's hard to automatically rotate the bootstrap secret that's used to authenticate to Key Vault.