数据库安全准则和技巧

最近我被一个活动策划公司雇用,创build一个networking应用程序,允许在线支付特定事件并保存注册人名单。 在开始编写应用程序之前,我的雇主要求提供项目规范/要求的文档,以确保我完全理解此项目背后的想法,以便在向最终产品工作的同时最大限度地减less错误风险。

这是我第一次使用PaypalCaledon和其他在线支付处理器,我意识到我需要有一个非常安全的数据库,因为关键信息将被保留在服务器中(即信用卡的最后四位数字用于付款)。

我知道以下是好的做法:

  • 将数据库保存在独立的机器上(远离networking服务器),并只在需要时访问;
  • 将数据库保护在防火墙后面;
  • 为root用户和将访问数据库进行维护/pipe理的用户创build漫长而难以猜测的密码。

除此之外,我不知道还有什么可以做的更安全的数据库。 Microsoft SQL 2005/2008将用于构build数据库。

任何提示/build议如何我应该继续这样做?

先谢谢你,

-Christopher

在线信用卡处理的权威性指南是支付卡行业PCIDSS标准: https ://www.pcisecuritystandards.org/security_standards/pci_dss.shtml列表中的所有内容(以及更多)都在该文档中。

正确的做法是很多工作,你确定没有一个能够满足客户需求的应用程序/服务吗?

我会考虑:

  • 强制到服务器的encryption连接http://msdn.microsoft.com/en-us/library/ms191192.aspx

    • 启用审核: http : //msdn.microsoft.com/en-us/library/dd392015%28SQL.100%29.aspx

    • 考虑禁用SQLlogin到服务器,只允许Windows身份validation

    • configuration,保存和检查您的Windows和SQL Server日志,包括审计login/注销尝试。

    • 确保你的数据库备份文件是encryption的,并跟踪他们去的地方。

    • 确保你的服务器在锁着的门后面。

首先要做的是检查适用于业务和服务器位置的当地法律。 我很惊讶地发现,我们不能保存任何信用卡信息(服务器,打印输出等),甚至不能保留部分号码。

不只是根帐户,但服务器上的所有帐户都需要体面的密码。 根帐户甚至不应该远程访问。 它只能在服务器上本地使用,以“普通”用户身份login并通过sudo或su发出命令。 我也喜欢把login名作为密码难以猜测的想法。 不仅仅是那些用于访问数据的帐户,还有可以远程login的帐户,因为这有助于减缓powershell攻击。

我不能评论MS SQL,因为我不使用它,但是要记住的最重要的一点,特别是面对互联网的任何事情,都是最低访问原则。 换句话说,只授予任何用户或function所需的绝对最小访问权限。