Разрешения на развертывание изменений схемы базы данных - PullRequest
0 голосов
/ 08 октября 2011

У меня есть приложение Python, которое подключено к Microsoft SQL Server 2000. Приложение проверяет наличие обновлений при запуске и автоматически применяет их.Вскоре ему также потребуется обработать изменения схемы базы данных.Основываясь на моих исследованиях, кажется, что создание базового сценария моей текущей базы данных, а затем создание нового сценария для каждого изменения схемы - это путь.Таким образом, любая версия базы данных может быть обновлена ​​до последней версии.

Мой вопрос: как мне управлять разрешениями для этих обновлений?Сейчас около 50 человек используют мое приложение, большинство из которых имеют доступ только для чтения.В идеале я хотел бы, чтобы любой пользователь мог вносить необходимые изменения, такие как создание или изменение таблиц, чтобы первый человек, получивший новое обновление, применил новые изменения схемы.Если этого не произойдет, то он / она может вообще не использовать приложение, пока кто-то с соответствующими разрешениями не обновит базу данных.

Я могу увидеть проблему, возникающую, если каждый пользователь может обновить схему.Что может помешать им войти в SQL Server Management Studio и вызвать такие проблемы, как удаление таблиц и т. Д.?

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

1 Ответ

0 голосов
/ 08 октября 2011

Вы хотите ограничить права администратора пользователей, но в то же время вы хотите, чтобы они выполняли действия администратора ... Проблема "курицы и яйца" :-)

Вариант 1. Использование веб-приложения

Преобразование вашей программы для запуска в качестве веб-приложения.

Немного радикально, однако, гораздо проще в обслуживании.Пользователям больше не нужно устанавливать Python, централизованные обновления и общий пул соединений с базой данных.

Это решает проблему аутентификации database .Пользователи аутентифицируют себя в веб-приложении, а не в базе данных.

Я использую liquibase для управления схемами базы данных.Он имеет слушатель сервлета , который может автоматически обновлять базу данных при развертывании новой версии моего приложения.(Liquibase также имеет интерфейс командной строки для использования альтернативными технологиями, такими как Python).

Вариант 2: шифрование пароля администратора

Вы шифруете пароль администратора и делаете его доступным для извлечения текстового файла.с корпоративного веб-сервера, позволяя любому пользовательскому приложению загружать его при запуске.

Существует проблема безопасности с этим решением .... Чтобы расшифровать пароль администратора, необходимо встроить общий секретный ключ вваше приложение на python .... Это безопасность по неизвестности.

...