我需要创建一个应用程序(严格来说是python 3.3),用户将在线保存/加载他们的设置到远程托管数据库。出于安全原因,我不希望更改数据库从侦听除localhost之外的任何其他内容,因此我认为对我来说最好的解决方案是在保存/加载发生之前使程序创建一些ssh隧道。
此政策会使我的数据库不安全吗?
我怎么能做这个工作?我尝试安装paramiko,但它不是python 3+准备好了。 我也想也许我可以在应用程序的安装,油灰托盘和一些适当的脚本中包括,以便我可以创建该隧道,但我在这里寻找一些聪明和有效的东西。当然,我真的更愿意避免每次隧道激活时出现任何额外的托盘图标或贝壳。
我在这里问,这样我就可以听到一个有远见的人的意见。因为我缺乏那个:)。你的建议是什么?
事先提前答案 0 :(得分:0)
我正在处理类似的问题(尝试使用Docker的远程API,目前不提供身份验证)。我目前正在使用bgtunnel,虽然我偶尔会遇到一些错误(通常通过网页刷新解决) - 乍一看是因为当一个连接已经存在时尝试建立连接。这可以使用一些thread.isAlive()
东西来解决,但总而言之,管理连接有点混乱 - 它已经存在了吗?我应该在任何请求之前检查或尝试建立它并在异常时重做API调用。这有点棘手。我也开始探索Paramiko,希望从Python处理它可能更容易一些 - porting to Python 3的过程似乎已经完成了。
那就是说,我希望任何像样的数据库都有足够好的烘焙认证和加密,我不应该害怕在没有任何ssh隧道的情况下远程使用它。从这个SO answer可以看出Postrges可以这样配置。这意味着你可以踢出ssh,这是堆栈中的一件事,而不是想到。他们正在开发Docker远程API中的远程身份验证,此时我也很乐意这样做:)