跟踪数据访问

时间:2011-03-23 21:40:43

标签: mysql ruby-on-rails authentication logging encryption

背景故事

我在一家拥有在线网站的公司工作,该网站允许用户发送个人信息以进行收集。我们收集数据,并在线提供。用户可以选择与其他用户共享数据。

前进

在某些时候,这可能会成为FDA管理的医疗工具。在预料之中,我们希望建立一个日志系统,每当有人访问我们的用户数据时,无论是用户自己,另一个授权用户还是支持人员,都会显示这些数据。

当前架构

我们目前正在运行Ruby / Rails,并使用MySQL数据库。个人信息在数据库中加密。

支持数据访问

今天,支持人员可以通过以下三种方式之一访问数据:

  1. admin site管理站点仅限于我们开发的任何屏幕。虽然我们目前没有,但我们可以轻松添加日志记录,以便使用管理工具查看谁访问了哪些数据的审计跟踪。
  2. sql客户端我使用MySQLWorkbench来访问生产。但是,以这种方式连接时,所有个人信息(用户名,手机号码等)都会被加密。
  3. Ruby Rails控制台 - 最后,支持可以登录到其中一个生产框,并从命令行使用Ruby / Rails控制台。 Ruby将解密数据,因此我们可以做一些简单的事情,比如     U = User.find_all_by_state( '激活') 它将返回state ='active'的所有用户的记录集,并在结果集中解密他们的个人信息。
  4. 圣杯

    1. 登录
    2. 轻松获取支持
    3. 我希望有一种方法允许对数据进行简单的支持访问(一旦经过身份验证),但会记录访问(读取或更新)的所有内容。这样,如果我查看我的好友的前妻的数据,它会被记录到我无法进入的地方并清理审计线索。 (有关员工违反数据政策的示例,请参阅Google向Gmail员工解雇)。

      任何人都有这个问题的想法,想法,经验和建议吗?

2 个答案:

答案 0 :(得分:0)

嘿devguy。几个月前,这对我来说是一个问题。我们最终集中了我们的mysql queire,以便我们可以开始跟踪所有进出的信息。不幸的是,我写的课程是用PHP编写的,但它背后的想法可以让你很容易开始记录。

https://code.google.com/p/php-centralized-mysql-controller/

答案 1 :(得分:0)

尝试存储过程。使所有代码使用CRUD活动的存储过程。这定义了一个API,开发人员可以在全局实施业务规则时使用该API(不返回整个SSN值,但只返回最后4位数等)。

这也是外部API的基础。

如果您想要记录/审核,请将其放入过程中。

这可以保护您免受除DBA之外的所有人的伤害。