asp.net-core - secrets - managewindows azure
Cómo implementar ASP.NET Core UserSecrets en producción (2)
¿Por qué "no utilizar secretos de aplicaciones en la producción". ¿Es seguro cifrar los secretos? Es muy aceptable para la configuración de la aplicación, por ejemplo, el SendGrid mencionado para la recuperación de la contraseña. ¿Son secretos de configuración en el servidor? ¿Por qué me prohíbe? Sólo copia compilado desde el desarrollo hasta la producción y funciona.
Startup.cs
public Startup(IConfiguration configuration)
{
Configuration = configuration;
var builder = new ConfigurationBuilder().AddUserSecrets<Startup>();
Konfiguration = builder.Build();
}
public IConfiguration Configuration { get; }
public IConfiguration Konfiguration { get; }
public void ConfigureServices(IServiceCollection services)
....
services.AddSingleton<IEmailSender, EmailSender>();
services.Configure<AuthMessageSenderOptions>(Configuration);
if (Configuration["SendGridKey"] != null)
return;
// linux''e secrets.json nenuskaitomas
services.Configure<AuthMessageSenderOptions>(options => {
options.SendGridKey = Konfiguration["SendGridKey"];
options.SendGridUser = Konfiguration["SendGridUser"];
});
}
HomeController.cs
private readonly IOptions<AuthMessageSenderOptions> _optionsAccessor;
public HomeController(..., IOptions<AuthMessageSenderOptions> optionsAccessor)
{
...
_optionsAccessor = optionsAccessor;
}
public IActionResult Index(...)
{
if (_optionsAccessor.Value.SendGridUser != null)
ModelState.AddModelError("", _optionsAccessor.Value.SendGridUser);
....
Continúe con "Habilitar la confirmación de la cuenta y la recuperación de contraseña" https://docs.microsoft.com/en-us/aspnet/core/security/authentication/accconfirm?view=aspnetcore-2.1&tabs=visual-studio#configure-email-provider
Seguí la Guía de almacenamiento seguro de secretos de aplicaciones durante el desarrollo en la documentación de asp.net durante el desarrollo, pero no describe cómo usarla al publicar en otra máquina para control de calidad, producción, etc. Lo que pensé que haría sería insertar en el appsettings.json durante la publicación, pero no lo hace. Acabé de tener que colocar mis claves de SendGrid y otra información confidencial directamente en appsettings.json, lo que realmente anula el propósito de los secretos de la aplicación.
¿Es la mejor manera de usar los secretos de la aplicación o hay otra forma de almacenar las claves de API y las contraseñas / usuarios de SQL en mis configuraciones?
No utilice los secretos de la aplicación en la producción. Siempre. Como dice el artículo DURANTE EL DESARROLLO.
Cómo publicar secretos en producción depende de su entorno de producción. Linux, Windows y Azure son compatibles con todas las variables de entorno: ahí es donde deben ir sus secretos, utilizando la interfaz de usuario que le proporcione su proveedor de alojamiento.
La documentación de configuración de la aplicación entra en esto con mayor detalle.