问题
我们有一个大型Web应用程序,用于存储和显示敏感的HIPAA相关数据。我们目前正在研究如何改善HIPAA合规性并降低违规风险。
目前,有些功能和报告未能根据登录人员的权限(例如客户端搜索功能和某些旧版报告)正确限制客户端信息。
可能的解决方案
从编程角度处理问题
我们总是可以重写导致不合规的代码部分。麻烦的是,考虑到应用程序的规模,这种方法非常容易出错 - 可能会错过任何东西。
更改数据库以限制返回的数据
我们可以改变MySQL数据库结构,以反映应用程序中所需的必要权限限制。这样,没有人能够看到他们不应该看到的数据,因为数据库不会返回他们不应该看到的数据。
我的问题
应用程序本身有近300个表,其中大多数存储某种敏感数据。是否可以(并且可行)使用MySQL视图来限制数据访问?
如果是这样,最好的方法是什么?
答案 0 :(得分:3)
您可以通过调整视图中使用的查询来利用视图限制或显示您希望的任何数据。
您需要将原始表重命名为“原始表”,然后将您的视图命名为原始表的名称。
您的程序不会知道或关心它现在正在访问视图而不是表。它将继续像以前一样提取数据。您还可以为不希望返回实际值的字段包含空白或默认值。举个例子(如果你有一个字段“DOB”并且你不想再返回出生日期,你可以简单地将'01 -01-2001'写成DOB)。
您可以使用MYSQL网站上的示例来了解如何创建视图。
CREATE TABLE t (qty INT, price INT);
mysql> INSERT INTO t VALUES(3, 50);
mysql> CREATE VIEW v AS SELECT qty, price, qty*price AS value FROM t;
mysql> SELECT * FROM v;