将用户数据与其他数据分开

时间:2015-06-29 14:30:49

标签: mysql ruby-on-rails

出于“安全原因”,我们的客户希望将用户表与所有其他表分开。鉴于我们的应用程序是使用RoR和MySQL构建并在Unicorn和Nginx上运行,这是一个很好的做法吗?

我可以想到两种可能的方式:

  • 创建两个不同的登录帐户,一个用于用户表,另一个用于其他表。

OR

  • 为用户数据设置单独的数据库。

我认为这两种解决方案都可能会在迁移和其他任务中产生一些问题,我不知道这是否是保护用户数据的有效方法。我是初级开发人员,我不熟悉某些数据库和安全性概念。有什么建议吗?

2 个答案:

答案 0 :(得分:0)

一个非常常见的模式是让users表字面上只包含用户帐户的详细信息,并且不包含该帐户背后的实际人员的详细信息。即,它将具有用户名,电子邮件,密码或加密密码&盐或其他什么,但没有别的 - 甚至没有名字。所以,所有"胶水"这使得系统工作保留在常规数据库的users表中。

然后,帐户背后的真实人员的详细信息(姓名,电话号码,地址,卡片详细信息等)存储在不同的表或表中,其中任一表中的外键指向另一个表。您可以将它们存储在不同的数据库中,但我不知道这是否会使其更安全。更好的方法可能是使用用户的个人数据加密表,或者可能加密整个数据库。见

http://thinkdiff.net/mysql/encrypt-mysql-data-using-aes-techniques/

我觉得你的客户对互联网安全知之甚少,只需要确保一些黑客不会把所有客户都放在一边。信用卡详细信息在线,最近在几个高调案件中发生过。为了满足这些要求,我建议你仔细研究并实施至少两种不同的安全策略,每种策略都可以被认为是足够的。

答案 1 :(得分:0)

向客户保证不起作用,因为这是启动的验收标准。最后,我使用单独的登录凭据和用户权限创建了两个单独的数据库。为了管理多个数据库迁移,我最初使用了多数据库迁移gem,然后将其自定义为我自己的gem。 当我发布这个问题时(我仍然是),我是SO的新手,我现在明白这个话题太广了,不能在一个SO问题中被问到。无论如何,感谢您的建议,我希望答案可以帮助其他人。