#security #asp.net-core #encryption #connection-string #asp.net-core-2.2
#Безопасность #asp.net-core #шифрование #строка подключения #asp.net-core-2.2
Вопрос:
У меня есть приложение .NET Core, которое развернуто на Ubuntu (с использованием Kestrel за Nginx).
В приложении есть строка подключения к базе данных. Оно определено пустым в appsettings.json, и я установил его в файле службы Kestrel Ubuntu в качестве переменной среды службы, согласно руководству Microsoft:
# somevalue was escaped with systemd-escape "value"
Environment=ConnectionStrings__MyDatabaseConnection=somevalue
Однако мой клиент не согласен хранить необработанную строку в файле на сервере (и они правы).
Я мог бы зашифровать его, но тогда мне придется хранить ключ шифрования где-нибудь на сервере, что также неприемлемо — это просто продвигает ту же проблему дальше по линии.
Итак, я провел некоторый поиск решений в надежде найти какое-нибудь стандартное де-факто или прямолинейное решение «drop-in», но, к удивлению, ничего не смог найти.
Вот что я рассмотрел:
- Secret Manager — не вариант; просто отправляет тот же необработанный текст в профиль пользователя «как есть». Предназначен только для разработки.
- Azure Vault — не вариант, мы не используем Azure. Существуют аналогичные мощные системы, такие как Hashicorp Vault, но кажется излишним использовать что-то подобное (полномасштабный веб-сервис с нетривиальной конфигурацией и возможными скрытыми оговорками) для одной строки подключения.
Эта проблема с защитой строки подключения является последним, казалось бы, простым препятствием, которое не позволяет проекту быть принятым заказчиком.
Должно быть простое решение для добавления в мой проект, а также для предоставления администраторам заказчика инструмента для шифрования строки подключения в файле Kestrel service.
Какие другие разработчики .net core используют для защиты строк подключения на производственных серверах GNU / Linux?
Комментарии:
1. @Ревет. Спасибо, я предполагаю, что это привело к хранилищу Hashicorp. Я предполагаю, что мне придется использовать это тогда, но все же кажется излишним устанавливать такую крупномасштабную систему (по сути, отдельный веб-сервис) для хранения одной строки подключения на одном сервере. Я надеялся на что-то более простое.
2. Я нашел это интересное нестандартное решение: visualstudiomagazine.com/articles/2019/09/26 /…