python - 如何以安全的方式从外部访问 PostgreSQL 数据库

标签 python postgresql heroku

我有一个在 Heroku 上运行的 Flask 应用程序,它读写 Heroku PostgreSQL 数据库。然后我想让一个本地 python 应用程序在客户端计算机上运行,​​它只从这个数据库中读取。这个想法是能够通过在 Heroku 上运行的 Web 应用程序配置在世界任何地方本地运行的程序。

flask 应用程序已经启动并运行并正确修改数据库。 现在,我必须通过本地运行 python 应用程序的计算机连接到此数据库。

要从外部连接到 Heroku Postgres DB,Heroku 提供以下[解决方案] ( https://devcenter.heroku.com/articles/connecting-to-heroku-postgres-databases-from-outside-of-heroku#credentials/ )

我想通过客户端计算机上运行的本地应用程序访问此云数据库。但是,要获取 DATABASE_URL,有时我必须使用我的帐户电子邮件和密码登录 Heroku,以便访问所有内容。我希望有一种方法可以让具有受限权限的用户访问这个外部数据库。就我而言,我想通过一个只能读取数据的用户访问它,而将我的 Heroku 帐户排除在外。

使用 PostgreSQL 是我的第一个方法,但我偶然发现了这个问题。我是对的,这是一个问题吗?

我的第二种方法是使用 google drive API 将我的网络应用程序链接到我的本地应用程序。 Web 应用程序将修改一个文件,而本地应用程序将使用具有只读权限的用户读取该文件。这样,如果本地应用程序以某种方式遭到逆向工程或黑客攻击,则不会泄露任何关键信息。我想我可以使用 google drive API 来做到这一点。

有更好的方法吗?我正在使用免费工具,目前由数据库或 google-drive API 处理的数据是轻量级的。我觉得如果我想扩展应用程序,google drive API 不是最佳解决方案。

最佳答案

如果您的代码必须在客户端的计算机上运行,​​最好的选择可能是运行服务器端 API 并连接到它,而不是建立直接的数据库连接。这样您就不会向用户公开您的数据库凭据或 Heroku 凭据。

默认情况下,Heroku 数据库 URL 提供读/写访问权限。在您的数据库和面向客户的代码之间放置一个 API 还可以让您从第二个代码库强制执行只读行为。

如果由于某种原因这不可行,您可以 create new read-only credentials for your database并在一个非常小的服务器端 API 中公开这个新的只读数据库 URL。您的第二个应用程序可以从您的 API 加载连接信息,然后直接进行数据库查询。

关于python - 如何以安全的方式从外部访问 PostgreSQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56067775/

相关文章:

windows - postgres COPY (...) TO PROGRAM on Windows 给出错误

django - 按其中一个键的值拆分字典(将其保存为单个数据)

python - 机器人已启动,但/start 命令没有执行任何操作

database - Heroku:删除附加组件后可以恢复数据库吗?

python - SqlAlchemy 向类中添加新字段并在表中创建相应的列

python : ImportError: No module named numpy

sql - 'one'表中的一对多join和group by id

ruby-on-rails - 如何查看从 heroku pg :info? 引用的所有 "Connections"

python - 如何从位于不同模块的两个类中选择一个

python - Eclipse CDT 中的 pretty-print : unable to look at any variable