Usar Azure Key Vault para proteger secretos en tiempo de producción
Artículo
Sugerencia
Este contenido es un extracto del libro electrónico, ".NET Microservices Architecture for Containerized .NET Applications" (Arquitectura de microservicios de .NET para aplicaciones de .NET contenedorizadas), disponible en Documentación de .NET o como un PDF descargable y gratuito que se puede leer sin conexión.
Los secretos almacenados como variables de entorno o almacenados por la herramienta Administrador de secretos todavía se almacenan localmente y se descifran en el equipo. Una opción más segura para almacenar secretos es Azure Key Vault, que proporciona una ubicación central y segura para almacenar claves y secretos.
El paquete Azure.Extensions.AspNetCore.Configuration.Secrets permite que una aplicación ASP.NET Core lea información de configuración de Azure Key Vault. Siga estos pasos para empezar a usar secretos de Azure Key Vault:
Registre la aplicación como una aplicación de Azure AD. (el acceso a los almacenes de claves se administra mediante Azure AD). Puede hacerlo a través del portal de administración de Azure.\
Como alternativa, si quiere que la aplicación se autentique mediante un certificado en lugar de hacerlo con una contraseña o un secreto de cliente, puede usar el cmdlet de PowerShell New-AzADApplication. El certificado que registre en Azure Key Vault solo necesita su clave pública La aplicación usará la clave privada.
Conceda a la aplicación registrada acceso al almacén de claves creando una entidad de servicio. Puede hacerlo usando los siguientes comandos de PowerShell:
$sp = New-AzADServicePrincipal -ApplicationId "<Application ID guid>"
Set-AzKeyVaultAccessPolicy -VaultName "<VaultName>" -ServicePrincipalName $sp.ServicePrincipalNames[0] -PermissionsToSecrets all -ResourceGroupName "<KeyVault Resource Group>"
Incluya el almacén de claves como origen de configuración en la aplicación mediante la llamada al método de extensión AzureKeyVaultConfigurationExtensions.AddAzureKeyVault cuando cree una instancia de IConfigurationRoot.
Tenga en cuenta que, al llamar a AddAzureKeyVault necesitará el Id. de la aplicación registrada y a la que se concedió acceso al almacén de claves en los pasos anteriores. O bien, primero puede ejecutar el comando de la CLI de Azure az login y, después, usar una sobrecarga de AddAzureKeyVault que toma un objeto DefaultAzureCredential en lugar del cliente.
Importante
Le recomendamos que registre Azure Key Vault como el último proveedor de configuración para que pueda invalidar los valores de configuración de proveedores anteriores.
El origen de este contenido se puede encontrar en GitHub, donde también puede crear y revisar problemas y solicitudes de incorporación de cambios. Para más información, consulte nuestra guía para colaboradores.
Comentarios de .NET
.NET es un proyecto de código abierto. Seleccione un vínculo para proporcionar comentarios:
Cree soluciones de un extremo a otro en Microsoft Azure para crear Azure Functions, implementar y administrar aplicaciones web, desarrollar soluciones que usen Azure Storage, etc.
Seguridad en microservicios y aplicaciones web de .NET: obtenga información general de las opciones de autorización principales en las aplicaciones de ASP.NET Core: basadas en roles y basadas en directivas.
Seguridad en microservicios y aplicaciones web de .NET: no almacene sus secretos de aplicación (contraseñas, cadenas de conexión o claves de API) en el control de código fuente y aprenda las opciones que puede usar en ASP.NET Core (en particular, debe aprender a controlar los "secretos de usuario").
Obtenga las conclusiones de la arquitectura de microservicios de .NET para la guía/e-book de aplicaciones de .NET en contenedores, a fin de echar un vistazo rápido a los problemas de alto nivel que se producen al usar una arquitectura de microservicios, como ventajas e inconvenientes, patrones DDD para diseño y desarrollo, así como resistencia, seguridad y el uso de orquestadores.