Как защитить строки подключения к базе данных в производственных средах ASP.NET Core на Ubuntu?

#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 /…