Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 出于安全原因,我是否需要一个单独的数据库来存储用户输入数据_Database_Rest_Amazon Web Services_Security_Architecture - Fatal编程技术网

Database 出于安全原因,我是否需要一个单独的数据库来存储用户输入数据

Database 出于安全原因,我是否需要一个单独的数据库来存储用户输入数据,database,rest,amazon-web-services,security,architecture,Database,Rest,Amazon Web Services,Security,Architecture,我们正在构建一个web应用程序,并计划在AWS上运行它。用MySQL创建了一个RDS实例。拟议的架构如下: 数据正在从公司数据集市上传到RDS中的核心数据库。另一方面,用户通过RESTAPI发送数据以发布数据。正如我们的一位架构师所建议的,此用户输入数据将保存在同一RDS内的单独DB中。然后,数据将定期复制到核心数据库中的表中。我们将有一个基于核心DB运行的规则引擎。无论何时检测到异常,都会向客户发送通知 整体结构似乎很好。不过,我要改变的一件事是,我们不需要两个单独的数据库,只需要一个数据库,

我们正在构建一个web应用程序,并计划在AWS上运行它。用MySQL创建了一个RDS实例。拟议的架构如下: 数据正在从公司数据集市上传到RDS中的核心数据库。另一方面,用户通过RESTAPI发送数据以发布数据。正如我们的一位架构师所建议的,此用户输入数据将保存在同一RDS内的单独DB中。然后,数据将定期复制到
核心数据库中的表中。我们将有一个基于
核心DB
运行的规则引擎。无论何时检测到异常,都会向客户发送通知

整体结构似乎很好。不过,我要改变的一件事是,我们不需要两个单独的数据库,只需要一个数据库,就可以在同一个数据库的表中包含用户输入数据。根据我们的架构师,独立DBs背后的逻辑是出于安全考虑。由于核心数据库将有来自我们公司的数据,因此最好是独立的。因此,来自客户端的http请求只会影响用户输入数据库

虽然这是有道理的,但我不确定这是否真的必要。首先,所有用户输入都经过身份验证。其次,web api提供了另一个针对数据库的保护层,因为它只允许某些请求,在本例中,这是post请求的两个端点。此外,如果有人仍然可以侵入RDS中的
用户输入数据库
,因为它驻留在同一个RDS实例上,再加上DBs之间有数据传输,他们不可能进入
核心


也就是说,我们真的需要单独的DBs吗?如果是这样,那么从
用户输入数据库
同步到
核心数据库
中的
用户输入TB
的最佳方式是什么?

出于安全原因,分离数据库并不能神奇地实现这一点。我的建议是:

  • 限制API层,例如仅具有写访问权限(以防意外删除数据)
  • 对于凭证数据,不要将其放在源代码中,您可以将其作为环境变量,例如
  • 对于RDS本身,请将其置于
  • 在同步数据方面,如果必须使用2 db

  • 如果两个数据库在模式上完全相同,则可以使用db复制功能(例如mysql复制)
  • 若并没有,那个么您可以将其发送到MessageBroker服务(SQS),然后创建一个工作进程来提取它,然后将其保存到目标数据库
  • 或者您可以使用其他服务,例如

  • 一个独立的数据库在任何方面都不会从根本上/自动地/神奇地更安全。有了db用户权限,就可以限制REST服务器对数据的访问,而db级别的权限(与表级别的权限相反,否则您将需要表级别的权限)可能会使描述更清晰,更不容易出错。。。但目前还不清楚这里是否有足够的信息来给出权威性的答案。您肯定应该限制RESTAPI使用的内部凭据,以便不可能进行无意访问。