我工作的小公司的领导层对 SaaS 非常感兴趣,并正在推动我们的产品进行 SaaS 部署——我对此感到担忧,因为该产品的部分功能基于用户能够使用商业智能工具针对应用程序的底层数据库编写报告。
当我询问我们计划如何在 SaaS 模型中提供该功能时,我得到的回答是,我们将在互联网上公开数据库服务器,并允许人们查询数据库,就像它在他们的公司网络中运行一样。
这让我害怕极了,但我不知道我是不是有点偏执,或者是否有真正值得担心的理由。
所以我的问题是:是否可以适当加强 Oracle 数据库服务器的安全性,这样我们就不必担心它会暴露在互联网上?如果可以,我应该研究哪些资源来学习如何做到这一点?数据库将存储我们的客户不想向世界公开的专有信息,然而将此功能置于 VPN 后面的提议已被断然拒绝。
我搜索过的关于如何强化 Oracle 数据库的文章几乎都包含类似“永远不要在防火墙上戳漏洞”这样的陈述,因此这里的正确答案可能是“尽快更新你的简历”,但我很感激你能给出的任何建议。
答案1
公开数据库并不是巨大的与 world+dog 经常暴露的其他一些服务相比,这个问题并不严重……除了它是一个复杂的系统,具有许多潜在的漏洞,包括权限升级。我会确保您不会将数据库暴露给公共查询,并且需要 SSL 才能运行,等等。我想说这是可能的,但是是的,您应该谨慎行事,并且应该为面向公众的数据库维护一个单独的数据库安装。如果您的公司不愿意为此支付许可费用,是的,请逃之夭夭。
从客户/支持方面来看,如果客户的 ISP 阻止某些类型的端口或流量,则直接连接到数据库可能会出现问题。
在 SaaS 模型中,您通常希望程序员编写一个可从应用程序查询的 API。这种性质的 API 通常通过 https 运行,并在 HTTP 响应中将数据返回给应用程序。额外的好处:它可以在网络运行的任何地方工作,使用 memcached 或其他缓存技术缓存结果集以减少数据库服务器上的负载非常容易,并且 http 身份验证得到了很好的支持和测试。
答案2
我将在 DMZ 中设置第二个数据库服务器,并将转储导入该数据库,并使该数据库公开可用。
答案3
我相信你会同意,从定义上讲,访问和安全是一种权衡。而你的任务是让敏感数据可访问。
简短的回答是,您可以使用防火墙技巧、可靠的网络架构、更新的补丁集、访问审计和大量备份来降低很多风险。
密码管理也是一件很难完成的事情,通常应用程序帐户的密码永不过期,并且设置了物理/网络访问控制,以确保知道密码的前员工无法访问数据。如果您的数据库服务器暴露在整个互联网上,这似乎是一件很难做到的事情。
您可能还想定义一个“我们受到了损害,现在该怎么办?”策略,以便为每个相关人员设定期望,并在您的运气用完时制定行动计划。
答案4
SaaS 就是商品。
将数据库服务器暴露到互联网上——不太好。
为什么他们需要公开它?是因为 RPC 而他们不想使用静态 RPC 端口吗?
但是有一些很棒的应用程序防火墙,如果你锁定 DB 的 endmapper 端口,然后对其进行防火墙 - 你可以使用 ACL、IP 限制等做一些好事。
您还需要审核事件日志、漏洞扫描等。