Каков наилучший способ централизации и защиты строк подключения?

Каков наилучший способ централизации и защиты строк соединений, используемых приложениями? В моей среде у нас много внутренних приложений. Для доступа к базе данных для каждого приложения требуется одна или несколько строк подключения. У нас есть цель централизовать все эти строки подключения (в частности, SQL-логины и пароли), чтобы мы могли менять пароли в одном месте, а не в 35 различных файлах .config, записи в реестре и т.д.

В настоящее время мы используем домашний компонент, который извлекает информацию о строках соединения из базы данных доступа, это охватывает требование централизации, но не особенно безопасно. Кроме того, у нас есть приложения, написанные на языках от классических asp, vb6, delphi, С++,.net, поэтому решение должно использоваться всеми этими приложениями.

Кто-нибудь имеет представление о том, как это сделать лучше, или нам нужно переработать весь наш подход к тому, как наши приложения обращаются к базе данных.

Ответ 1

Вы можете использовать сервер Windows для создания пользователей, которым разрешен доступ к вашей базе данных SQL Server. Затем вы можете использовать встроенный вход в Windows в строки подключения.

BTW Хранение паролей в общедоступном MDB делает их релевантными. То же, что и их нет.

Ответ 2

Компания, с которой я работаю, использовала подобную ситуацию вместо базы данных SQL Server. В результате мы создали COM-совместимую DLL.net для упрощения и защиты API в базе данных и обеспечения того, чтобы одна и та же логика использовалась между классическими пакетами asp,.Net и DTS. Он отлично зарекомендовал себя в течение года, и в то время как есть некоторые элементы рефакторинга, которые многие из нас хотели бы сделать с этим, было бы замечательно решать такие проблемы, как миграция серверов или переименование.

Я думаю, что вы на правильном пути; однако я бы рекомендовал следующие изменения:

  • Попробуйте перейти на настоящий сервер базы данных. Доступ отлично подходит для MS Office, но не для чего-то такого масштаба.
  • Создайте административную консоль, которая позволяет выполнять аудит того, кто добавляет и редактирует информацию (защищенную, кто имеет доступ к тем же настройкам).
  • Создайте COM-совместимую DLL, чтобы она могла быть использована другими системами безопасным и последовательным образом.

EDIT:

Что-то, что я заметил после нескольких лет работы в такой системе, это то, что он немного прижимает руки к некоторым решениям. Многие инструменты там (например, nHibernate, Elmah и т.д. В мире .Net) действительно ограничены, когда строка соединения больше не находится в конфигурационных файлах. Многие могут быть легко изменены для использования вашего API; однако для этого требуется больше времени, чтобы исследовать, хотите ли вы его использовать. Просто FYI на этом.

Ответ 3

Невозможно ли перейти к Window Integrated Security в строки подключения, тогда вам не нужно беспокоиться об аспекте безопасности (если вам не требуется обеспечить фактическое местоположение соединения, которое я предполагаю).