首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何允许应用程序的其他用户从其计算机上访问RDS?

如何允许应用程序的其他用户从其计算机上访问RDS?
EN

Stack Overflow用户
提问于 2019-05-07 17:46:56
回答 1查看 120关注 0票数 0

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

当我在我的家庭计算机上使用应用程序时,当我试图连接到数据库时,我会收到一个错误。

代码语言:javascript
复制
pymysql.connect(db=dbname, host=host, port=port, user=user, password=password)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-07 21:05:40

关于安全的附带说明:

授予远程应用程序对数据库的直接访问权限通常是一个非常糟糕的主意,特别是在没有给每个用户/应用程序自己的密码的情况下。

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

而且,您正在锁定--在您的数据库模式中,将来无法进行更改。假设您有一个具有特定列的表,并且您的应用程序直接访问该表。将来,如果修改表,则需要同时更新正在使用数据库的每个应用程序。如果其他人在自己的系统上运行应用程序,这是不可行的。

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

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56027975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档