Как получить безопасный доступ к базе данных PostgreSQL извне - PullRequest
0 голосов
/ 10 мая 2019

У меня в Heroku работает приложение-колба, которое читает и записывает базу данных Heroku PostgreSQL. Затем я хочу, чтобы на компьютере клиента работало локальное приложение на Python, которое читает только из этой базы данных. Идея состоит в том, чтобы иметь возможность настроить программу, работающую локально из любой точки мира, с помощью веб-приложения, работающего на Heroku.

Приложение фляги уже запущено и корректно изменяет базу данных. Теперь мне нужно подключиться к этой базе данных с компьютера, на котором запущено приложение python.

Для внешнего подключения к базе данных Heroku Postgres Heroku предлагает следующее [решение] (https://devcenter.heroku.com/articles/connecting-to-heroku-postgres-databases-from-outside-of-heroku#credentials/)

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

Использование PostgreSQL было моим первым подходом, но я наткнулся на эту проблему. Прав ли я в том, что это проблема?

Мой второй подход - использовать API Google Drive для привязки моего веб-приложения к моему локальному приложению. Веб-приложение изменит файл, и локальное приложение будет читать его с правами пользователя READ-ONLY. Таким образом, если локальное приложение каким-либо образом перестроено или взломано, критическая информация не раскрывается. Я думаю, что я могу сделать это с Google Drive API.

Есть ли лучший подход? Я использую бесплатные инструменты, и данные, обрабатываемые базой данных или google-drive API, пока невелики. Мне кажется, что если я захочу масштабировать приложение, Google Drive API не будет лучшим решением.

1 Ответ

2 голосов
/ 10 мая 2019

Если ваш код должен выполняться на клиентских компьютерах, возможно, лучше всего запустить API на стороне сервера и подключиться к нему вместо прямых подключений к базе данных.Таким образом, вы не будете предоставлять свои учетные данные базы данных или учетные данные Heroku своим пользователям.

По умолчанию URL-адреса базы данных Heroku предоставляют доступ для чтения / записи.Помещение API между вашей базой данных и вашим клиентским кодом также позволяет вам применять поведение только для чтения из второй кодовой базы.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...