我有一个在 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/