假设我有一个我的 Web 应用程序需要访问的 PHI 数据库,我需要如何保护 Web 应用程序用来访问该数据库的 Web 服务器上的凭据?
存储标准用户/通行证组合是符合 HIPAA 的方法,还是我必须找出更安全的方法?
配置文件示例(作为 dbConfig.something.php 存储在 Web 根目录之外)
$phiDb => array(
'dbUser' => 'webPHIUser',
'dbPass' => 'webPHIPass',
);
假设我有一个我的 Web 应用程序需要访问的 PHI 数据库,我需要如何保护 Web 应用程序用来访问该数据库的 Web 服务器上的凭据?
存储标准用户/通行证组合是符合 HIPAA 的方法,还是我必须找出更安全的方法?
配置文件示例(作为 dbConfig.something.php 存储在 Web 根目录之外)
$phiDb => array(
'dbUser' => 'webPHIUser',
'dbPass' => 'webPHIPass',
);
因此,根据 HHS 安全指南,用户名和密码组合足以验证个人身份。 但是...在配置文件中以明文形式存储用户密码通常不是推荐的设计模式。当然不是允许访问数据库的每个用户及其明文密码的列表。我不是 PHI/HIPAA 审核员,但我强烈希望如果我向审核员展示此设计,他可能会对此提出异议。
您可以采取一些措施来限制您的风险:
1) 根本不存储密码。相反,只存储访问用户数据库进行身份验证所需的密码,而不是包含 PHI 的数据库的密码。数据库密码可以使用 KDF 从用户的应用程序密码中派生,并且可以在身份验证时派生,而不是被存储。
2)存储密码,但加密配置文件。为了防止这成为简单的混淆,您需要将加密密钥存储在比另一个配置文件更安全的地方,例如在 HSM 中。
3) 确保阻止间接数据库访问,以防凭证被盗。数据库服务器应该有防火墙,并且应该通过白名单进行访问。在大多数情况下,应仅授予应用程序(Web)服务器访问数据库服务器的权限。这样,即使有人窃取了凭据,他们也不能简单地从自己的机器上登录数据库。此外,由于必须按照规则对数据进行加密,因此如果您使用应用程序而不是数据库级别的函数进行解密,即使恶意用户确实设法从应用程序外部访问数据库,他们也无法访问未加密的数据。