我在一家私人医疗诊所工作,我们计划通过网页安装预约系统。预约系统是一个 PHP 应用程序,将其记录存储在 SQL 数据库中,该数据库可以位于 Web 服务器本身或远程服务器上。
由于使用情况,数据库将包含非常敏感的个人信息*,必须对公众保密。
强化对数据库的访问是一方面,但我猜测数据的一个重要入口点是 PHP 应用程序本身。
有没有推荐的方法将敏感数据与公共访问隔离?我可以想象一个如下的系统:
公共-> 通过可公开访问的服务器上的 PHP 应用程序访问 ->带有屏蔽敏感条目的 SQL 数据库<-通过强化 ssh 隧道同步->带有完整条目的私有 SQL 数据库<- 通过非公共服务器上的 PHP 应用程序访问 ->员工
这样,即使 PHP 应用程序将数据公开,敏感数据也会受到保护。此外,获取对公开 SQL 数据库本身的访问权限也并不那么重要。
两个数据库之间的映射将通过每个条目的唯一哈希码进行。实际上,这只是假名化,而不是匿名化。但它仍然是一个额外的安全层。
我只是不知道是否有现成的方法来实现这样的功能。基本上,SQL 数据库中任何带有屏蔽敏感条目的更改都应触发同步并随后进行屏蔽(因为来自公共领域的客户条目需要屏蔽)。
有没有更好的实现?我会非常高兴收到任何建议。
* 患者会在公共数据库中输入敏感数据,我们需要这些数据来完成我们的工作(我们需要姓名、联系方式和一些医疗信息)。但一旦输入这些数据,就应该将其转移到私人数据库,并在公共数据库中不可用。
但是,我还是不想对预制的 PHP 应用程序进行模糊测试。屏蔽公共数据库中的数据(例如,使用 *s)将使 PHP 应用程序正常工作
不!如果以任何方式按照第一个数据库中的描述处理数据,那么其中的一些记录将保留在事务日志或内存中,而“坏人”仍然能够获取它。
这是一个比数据同步更大的基础设施问题。任何后端数据库都不应在互联网上直接“公开访问”,尤其是包含个人身份信息 (PII) 或个人健康信息 (PHI) 的数据库。您尝试做的事情肯定有法律方面的问题,受 HIPAA(在美国)或 GDPR(在欧洲)等法律的管辖,具体取决于医疗实践的地点和您的患者。您必须清楚哪些国家和地方法律将适用于此应用程序。
考虑到这一点,您需要考虑使用以下技术:Web 应用程序防火墙、反向代理 Web 服务器、应用程序服务器、适当分段的网络(所有数据库资产都位于私有网络中)、适当加密的通信和数据存储、符合所有监管要求的应用程序和数据库软件、强化的操作系统、已发布的信息安全政策(详细说明您在保护患者数据方面的法律合规性)等。您选择的数据库应该能够根据用户的角色自动保护数据,在适当的情况下编辑信息并审核对需要法律保护的所有内容的访问。从安全性的角度来看,PHP 可能也不是您最好的编程语言选择。
最重要的是,你几乎肯定不能只是从 GitHub 或类似的地方抓取一些 FOSS 软件,然后将其放在公开的服务器上,并期望它以任何方式保护 PII 数据和你的患者机密性。根据你的描述(存储联系信息和一些医疗数据),这类事情需要专业的设计和实施,包括法律审查和专门从事信息保护的独立审计,否则即使在你的数据没有被盗的不太可能发生的情况下,你的医疗机构也很容易面临政府罚款和诉讼。在某些司法管辖区,对处理不当的患者数据甚至可能承担刑事责任。与尝试在内部建立(和维护)自己的技术堆栈相比,与已经提供这些保护的外部服务签订合同几乎肯定会减少麻烦(和风险)。