【问题标题】:How do I allow other users of my application to access RDS from their computer?如何允许我的应用程序的其他用户从他们的计算机访问 RDS?
【发布时间】:2019-09-25 10:24:40
【问题描述】:

我正在为我的公司创建一个库存应用程序。该应用程序通过 RDS 存储其库存信息。我正在使用 MySQL 并有 pymysql 进行连接。在整个开发过程中,我从创建数据库的笔记本电脑连接起来没有任何问题。我想知道如何允许其他计算机与该应用程序连接。有没有办法避免将每个单独的 IP 地址添加到安全组?我只是希望那些下载了应用程序的人无需额外的登录凭据即可访问。

当我在家用计算机上使用该应用程序时,我在尝试连接到数据库时收到错误消息。

pymysql.connect(db=dbname, host=host, port=port, user=user, password=password)

【问题讨论】:

  • 值得一读d1.awsstatic.com/whitepapers/Security/…。如果您必须将数据库公开到互联网,我认为您应该要求所有连接都使用 SSL,然后将源 IP 列入白名单。
  • 非常感谢!
  • 当您说它“在我的笔记本电脑上运行良好”时,我认为您是通过工作网络使用它?如果您将笔记本电脑带回家并从那里尝试会发生什么?尝试确定问题是与您访问的哪里有关,还是与哪台计算机有关。您收到的错误是什么?

标签: python amazon-web-services amazon-rds pymysql


【解决方案1】:

关于安全的旁注:

授予远程应用程序直接访问您的数据库的权限通常是一个非常糟糕的主意,尤其是在不为每个用户/应用程序提供自己的密码的情况下。

您实际上是向拥有凭据的任何人开放您的数据库,并且您将这些凭据包含在应用程序本身中。有人可以获得这些凭据,并且可能会对数据库的内容造成相当大的破坏。

此外,您正在锁定您的数据库架构,将来无法更改。假设您有一个包含特定列的表,并且您的应用程序直接访问该表。将来,如果您修改表,您应该需要同时更新每个使用数据库的应用程序。如果其他人在他们自己的系统上运行应用程序,这实际上是不可行的。

更好的方法是公开 API 并让应用程序使用 API 来访问数据:

  • API 应该管理身份验证,因此您可以确定允许谁进入,更重要的是,跟踪谁在做什么。这也将避免必须添加每个单独的用户 IP 地址的问题,因为您将管理一个身份验证层。
  • API 将应用一层业务逻辑,而不是允许远程应用程序做它想做的任何事情。这会阻止远程用户执行诸如删除整个数据库之类的操作。这也意味着,远程应用程序需要通过定义的 API (通常以 Action + 参数的形式)传递信息,而不是简单地传递 SQL 语句。
  • 它为应用程序提供了一个稳定的界面,允许您在后端进行更改(例如更改表格的内容),同时仍向客户端应用程序提供相同的界面。

经验法则:只有一个应用程序服务器应该直接访问给定的数据库。您可能有多个服务器运行相同的软件以提供高可用性并支持高负载流量,但不要让客户端应用程序直接访问数据库。这就是使“3 层”应用程序比“2 层”应用程序好得多的原因。 (Client - Server - Database)

【讨论】:

  • 您能否详细介绍一下“公开 API”?我正在自学编程并了解 API 是什么,但没有创建/编写它们的经验。此应用程序将是一个小型库存数据库,最多只能由小公司内的 5 人使用;如果这有什么不同的话。
  • 该应用程序也不是基于网络的。它是使用 tkinter 构建的独立计算机应用程序。
  • 我还从应用程序中添加了其中一个窗口的图像。侧面和顶层窗口内的按钮调用打开与数据库的连接、进行更改然后关闭连接的方法。
  • 作为一个 Python 程序,您的用户(大概)可以访问应用程序代码,并且能够看到如何与数据库交互。然后他们可以运行他们希望的任何数据库命令,包括查看和删除其他人的数据。这是因为没有“业务逻辑”层来检查他们在做什么。请参阅:3-Tier Architecture: A Complete Overview - JReportWhat is N-Tier Architecture? Examples, Tutorials & More
  • 谢谢!有机会我会去看看的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-24
  • 1970-01-01
  • 2013-01-14
  • 2018-12-03
  • 1970-01-01
  • 2019-12-31
相关资源
最近更新 更多