我正在设计网络的各个部分。我目前对未来软件项目设计的想法:
DMZ 中的网络服务器。这个网络服务器有一个穿过防火墙的洞(在 sql 端口上)与 MSSQL 数据库对话,该数据库是所有数据管理的内部。
问题:与其在防火墙中设置一个孔来与数据库服务器通信,不如让一个内部 Web 服务器托管 DMZ 中的应用程序可以使用的 Web 服务,并在 Web 服务后面使用数据库逻辑(打了一个洞,只能与该网络服务器交谈。)
Web 服务实现将只允许在一个地方更新任何 API 更改——这就是我考虑它的原因——尽管它可能比直接数据库和查询访问要慢。
关于哪个更好的任何想法?
编辑:意识到除非我将所有应用程序/业务逻辑放在应用程序层中,否则我仍然需要在 sql 防火墙上打一个洞。由于我只想为 API 函数(影响所有应用程序的函数 - 例如“GetEmployeeByName”)添加一个层,我仍然需要从 DMZ 访问数据库......
倾向于最佳答案是:托管 Web 服务的内部 Web 服务 API 服务器 - 这些服务可由 DMZ 中的所有 Web 服务器或通过 DMZ 中的代理服务器使用。(因此只有一台服务器需要通过防火墙的 ssl 端口。)(当然所有内部服务器都可以访问。)