0

我想为我编写的一些从 MS SQL Server 提取数据的 Python 函数构建一个 GUI。我的老板希望我与团队的其他成员分享 Python 和 SQL 的魔力,而无需他们学习任何编码。

我决定使用 Flask 创建 webapp 并使用 pyinstaller 创建可执行文件。我希望它的工作方式与 Jupyter Notebook 类似,您可以在其中单击文件并在浏览器中打开笔记本。

我能够拼凑一些代码来获得 GUI 的工作原型。问题是我不知道如何部署它。我需要 GUI/Webapp 仅在本地计算机上为我发送文件的用户运行,并且我不希望通过 Internet 访问它(因为专有公司数据、安全问题等)。

我能找到的用于部署 Flask 的唯一文档是使用 Web 服务器的常规路线。

所以问题是,任何人都可以提供有关如何部署我的 GUI WebApp 的任何指导,以便它只对拥有文件的用户可用,而不是在万维网上?

谢谢!

4

2 回答 2

1

所以,一些假设——因为你是一个企业并且你正在使用一个 SQLServer——你可能有 Active Directory,并且你想要访问这个应用程序的计算机都连接到那个域(所以,实际上,您或您的系统管理员确实可以完全控制这些计算机)。

此外,该应用程序的主要功能是访问 SQLServer 以在对数据执行某些操作之前使用数据填充自身。如果您正在部署该应用程序,我猜您可能还包括 SQLServer 登录详细信息。

考虑到这一点,我只会在自己的机器上为网络上的 Flask 应用程序提供服务(如果你有选择的话,甚至可能是 SQLServer 机器),然后要么在应用程序中实现以 AD 为源进行身份验证的安全性,要么只是拥有您可以分发给用户的简单用户/通行证身份验证。默认情况下,在线随机计算机将无法访问该应用程序,除非您已将防火墙设置为故意将 WAN 流量路由到该应用程序。

这样,您就可以控制 Flask 服务器——更新只需要在某一时刻进行,从而使开发更容易,用户只需打开您发送的电子邮件中的链接,或者您在他们的桌面上留下的快捷方式。

于 2019-08-15T20:01:37.447 回答
0

不幸的是,您无法控制给用户的计算机。

您正在使用烧瓶,因此您的应用程序是一个 Web 应用程序,它将把您的数据暴露给某个端口。我相信默认的烧瓶端口是 5000。

无论如何,如果您的用户在他们的防火墙中打开了给定的端口,并且在您连接到的任何路由器上也打开了该端口,那么您的应用程序将是公开可见的。

您无法从您的 python 应用程序代码中执行任何操作来防止这种情况发生。

说了这么多,如果你在 5000 上运行,你的用户不太可能公开这个端口。如果您在端口 80 或 8080 上运行,那么您可能会暴露某些东西的可能性更高。

一个后续问题是您的 Web 应用程序连接到的数据库在哪里?它也在您的用户机器上吗?如果不是,并且无论您在哪台机器上运行它,您的网络应用程序都可以连接到它,我会更担心您的数据库被公开暴露。

于 2019-08-15T19:45:04.767 回答