5

我参与创建基于 Web 的业务解决方案。这个想法是客户将使用它,将他们的业务流程和信息集中到一个地方,并通过系统间通信获得附加的业务价值。简而言之,他们将把它作为日常工作的核心工具,并高度依赖它。

需要解决的一个问题是如何让这个网络系统足够安全,成为我们和客户都满意的替代方案。我正在向曾经或处于相同情况的其他人寻求好的建议。

在我们的特定场景中,我们目前正在研究使用 Java SE 6、Tomcat(作为 Servlet 容器,我们将使用 Wicket 时需要)、Hibernate(与我们的数据库交互)和 MySQL(作为 DBMS)。

我认为其他技术用户也会对这个问题和建议感兴趣。由于许多问题都是关于 HDD 故障、网络可访问性和其他问题的一般问题。

随时提出您的任何建议!我仍然提供一些问题和想法让我们继续前进:

  • 该系统需要可通过 Internet 访问。在决定如何托管它时,我们应该考虑什么?(即我们是否需要我们的网络主机有多个物理路径将它们连接到互联网和类似的问题。)
  • 有这类事情的检查清单吗?也许是 ISO 标准或通过查看文章/检查清单/学术论文/书籍来了解我们走在正确轨道上的其他方式?
  • 在项目的后期,我们认为让在该领域具有丰富经验的人参与是一个好主意。在这种情况下,我们不是在寻找普通的 Web 开发人员。很可能更多的咨询公司会告诉我们他们有能力提供这种专业知识,而不是实际。关于我们如何与合适的人取得联系的任何提示?(我们的总部设在斯堪的纳维亚半岛,所以最好在那里找人。)
  • 多高的起床时间才足够好?99.99% 似乎是一个合理的目标。但是任何停机时间都可能导致我们的客户失去业务。
  • 我们如何保证每个客户只能访问自己的数据?由于系统将能够访问它自己的数据库,这似乎很难。涉及大量测试的正确开发过程实际上是我们所拥有的关于用户权限的全部内容。
  • 我们如何处理硬盘故障?RAID 5 与每日增量备份和每周完整备份相结合是否足够?或者你会选择RAID 6吗?
  • 如果一台服务器足以为客户端提供服务。你还会使用集群吗?(我会这么认为。)在这种情况下,集群中有多少个节点?
  • 您将使用哪种备份策略?
  • 您认为将系统托管在计算机云中是一个不错的选择吗?(即由亚马逊、谷歌或其他公司提供。)
  • 你会使用硬盘加密吗?如果是这样,是哪一种?(一个澄清:是的,如果有人偷了硬盘,这只是一件好事,但这仍然增加了安全性,并且可以防止(物理)入侵者访问重要的客户业务数据。)
  • 为客户提供一种自己进行备份的方法也是一个不错的选择吗?这些客户不会以技术为导向。那么在这种情况下,下载包含 Microsoft Office 文件的 ZIP 存档中的信息可能是一个好方法吗?
  • 您将如何监控解决方案?
  • 您认为我们应该在内部做哪些事情,哪些事情应该外包?当然,我们将开发我们自己的核心系统。
  • 如果你觉得系统是安全的,作为一个技术人员。您如何让非技术人员相信它是安全可靠的?

感谢您的时间!我希望你有一些意见可以分享。稍后可能会添加更多问题。

4

4 回答 4

2

我也在我的个人时间和工作中制作网络应用程序,所以我能理解你为什么问上述问题。虽然在工作中没有讨论上述问题,但我在个人工作中非常关注这些事情。我不能回答你所有的问题,但对于我能回答的问题,我会这样说:

您将如何监控解决方案?我正在开发一个 ASP.NET Web 应用程序,因此我正在使用性能监视器、日志记录、跟踪(尽管仅适用于开发人员)、运行状况监视和我正在编写的自定义 Sql Server 性能监视系统(尽管在此之前得到推出后,我将使用 AdventNet 的 AppManager)。

Which of these things do you think we should do in house and which should be out sourced? We will develop the core system our self's, of course.

这是一个很好的问题,因为我一直在做同样的决定。我会将不属于我技能的东西外包(所以如果我需要做 3d 工作,就外包)。此外,坚持团队的优势,专注于业务功能,因为这会取悦/吸引用户(我是从面向家庭用户的网络应用程序的商业角度说的),并将关键的内部系统外包例如备份、监控、日志记录等(由于我有可用的成本/财务资源,我没有将其外包,并且我制作东西以便我可以学习 - 因此即使这是一个长期的方法,也可以自己编写代码 - 但我喜欢它)。

Are there check lists for these kinds of things? Maybe ISO standards or some other way of seeing that we are on the right track by looking through an article/check list/academic paper/book?

您说您正在使用 Java/MySQL/Hibernate,但 Microsoft 有一些关于 Web 应用程序安全性的优秀指南,并且通常构建可扩展且安全的应用程序(基于 Web 和 Windows)。查看 Microsoft 模式和实践。

Do you think hosting the system in a computer cloud is a good alternative? (i.e. as provided by Amazon, Google or others.)

是的。这既便宜又有效,并且可以减轻您的内部架构的压力(我正在考虑如何使用 CDN 和 Amazon EC2 来存储静态文件)。我说的是静态文件,因此您可以存储不经常更改的内容,并且可以缓存这些内容。

If you feel that the system is secure, as a technical person. How do you convince a non technical person that it's safe and secure?

要求他们造成破坏。

How do we guarantee that each customer only will be able to access its own data? As the system will be able to access it's own database, it seems hard. A proper development process, involving lots of testing, is really all we have regarding user privileges.

我不确定我是否理解这个问题在问什么,但您可以使用登录系统、成员资格/角色(尽管这只是 ASP.NET)和存储过程来确保用户只能看到他或她自己的数据和不是其他人。

我也会对其余问题的答案感兴趣。

于 2008-10-23T13:35:32.310 回答
2

免责声明:我不是网络工程师。我跳过了我觉得无法回答的问题

该系统需要可通过 Internet 访问。在决定如何托管它时,我们应该考虑什么?(即我们是否需要我们的网络主机有多个物理路径将它们连接到互联网和类似的问题。)

我会根据需要扩大规模。在您的第一阶段,您可能不需要多余的一切。一旦人们依赖您来满足他们的业务需求,请升级您网络中最不稳定的部分。如果您的互联网不可靠,请使用辅助管道。如果你的开关坏了,把它们加倍。

多高的起床时间才足够好?99.99% 似乎是一个合理的目标。但是任何停机时间都可能导致我们的客户失去业务。

九号。不要为正常运行时间支付比停机时间损失更多的费用。如果您因意外停机一个小时而损失 50K,则您应该支付大约 50K 以将停机时间控制在一个小时以内。4 Nines 是一年 52 分钟的停机时间。这对你来说合理吗?五个九是极其困难的。开始的四个九可能更困难。我在一家金融公司工作,我们运行大约 98% 到 99%,计划停机时间的大约 50-80%。我们过得很好。

我们如何保证每个客户只能访问自己的数据?由于系统将能够访问它自己的数据库,这似乎很难。涉及大量测试的正确开发过程实际上是我们所拥有的关于用户权限的全部内容。

我们有同样的问题。优秀的开发人员、适当的开发实践、自动化测试、手动测试、开发工具(例如,在公共上下文中使用对象时会引发警告的修饰专有数据的属性)、代码扫描器(例如,寻找使用具有专有数据的表的过程和代码)指标而不引用它),代码审查,等等。

您将使用哪种备份策略?

我能负担得起的最好的。如果可能的话,我会说每小时 24 小时,每天 3 周,每周无限。

您认为将系统托管在计算机云中是一个不错的选择吗?(即由亚马逊、谷歌或其他公司提供。)

Joel 喜欢说您的核心业务不应该外包。如果您的核心业务是存储文件,也许不是。如果你的核心业务是附属于文件,似乎是合理的。

你会使用硬盘加密吗?如果是这样,是哪一种?

这只有在有人偷了你的硬盘时才有用,如果他们入侵了你的系统,这将无济于事。您正在错误地查看加密。你不想为了加密而加密——你想要它真正有用的地方。HTTPS 是一种很好的加密方式。也许(-也许-)逐个文档加密每个文档,并要求用户提供密钥来解密它。

为客户提供一种自己进行备份的方法也是一个不错的选择吗?这些客户不会以技术为导向。那么在这种情况下,下载包含 Microsoft Office 文件的 ZIP 存档中的信息可能是一个好方法吗?

无论如何,这是一个很好的功能。将其作为备份计费是合理的,但如果您真的想为他们的 netops 提供备份解决方案,它需要比这更强大。

您将如何监控解决方案?

向我的黑莓发送 SMS 警报,对使用情况进行完整性检查,有人 24/7 全天候待命,能够对系统进行故障排除。

如果你觉得系统是安全的,作为一个技术人员。您如何让非技术人员相信它是安全可靠的?

非技术人员?在整个网站上放置挂锁。或者,说服他们的技术朋友这是安全的(通过让他们看到您的安全性),并让朋友向非技术人员担保。

于 2008-10-23T13:51:05.663 回答
1
该系统需要可通过 Internet 访问。在决定如何托管它时,我们应该考虑什么?

我会考虑一些事情。首先,您的托管服务提供商需要提供从托管位置到 Internet 的多个独立网络路径。其次,您愿意为您的机器投资什么级别的物理安全?通常,至少在英国,您(大部分)按 U(高度单位)租用 co-lo 空间,这意味着在同一个机架(甚至可能是同一个机房​​)中工作的任何人都可以访问您的机器。如果您租用整个机架,则可以拥有自己的钥匙。

多高的起床时间才足够好?99.99% 似乎是一个合理的目标。但是任何停机时间都可能导致我们的客户失去业务。

首先,考虑何时需要存在此正常运行时间。99.99% 听起来不错,但如果客户只需要在周一至周五 08:00-20:00 访问,您的可用性可能会略低于 50%,而不会降低客户满意度。还要考虑到您将不得不进行可能影响应用程序可用性的维护(数据库检查、备份和其他事情),所以我会确保将其包含在服务级别保证中(或者作为“...窗口中的 X% 可用性” ”或“X% 的可用性在宣布的、计划外的中断之外”)。

如果一台服务器足以为客户端提供服务。你还会使用集群吗?(我会这么认为。)在这种情况下,集群中有多少个节点?

如果一台服务器在可预见的未来足够好,我个人不会打扰集群,但我会确保在 co-lo 站点上有相同的机器,关闭电源,所以一台机器的修复时间最短。

您认为将系统托管在计算机云中是一个不错的选择吗?(即由亚马逊、谷歌或其他公司提供。)

对于数据云提供商的正常运行时间、数据隐私和类似情况,您有什么保证?您不能(或至少不应该)向您的客户保证更多。此外,如果您可以在斯堪的纳维亚托管您的机器,您可能比从美国托管的计算云提供类似服务的人拥有网络优势。老实说,我不知道是否有任何计算云提供商在斯堪的纳维亚拥有服务器,但他们可能很乐意回答这个问题。

您认为我们应该在内部做哪些事情,哪些事情应该外包?当然,我们将开发我们自己的核心系统。

“那要看”。您在内部做的越多,您向其他服装支付的费用就越少。另一方面,如果你能找到好的外围服务提供商(数据中心设计,可能是基本机器构建,可能是服务监控,可能是安全监控,可能每周 X 天来更换备份磁带并将旧磁带带到保险箱地点)。在内部做这件事的一个好处是它可以成为你员工的动力。另一方面,如果你的一名或多名员工被公共汽车撞到,你在内部做的越多,你暴露的风险就越大。所以,对于你在内部做的任何事情,确保你至少有两个

于 2009-02-26T13:41:42.980 回答
0

该系统需要可通过 Internet 访问。在决定如何托管它时,我们应该考虑什么?(即我们是否需要我们的网络主机有多个物理路径将它们连接到互联网和类似的问题。)

如果您想要 99% 的正常运行时间,那么您会的。我会看一家名为 Server Vault 的公司。

有这类事情的检查清单吗?也许是 ISO 标准或通过查看文章/检查清单/学术论文/书籍来了解我们走在正确轨道上的其他方式?

官方清单,不是我见过的。通常,这意味着要针对每场灾难和缓解措施制定政策并制定政策。

在项目的后期,我们认为让在该领域具有丰富经验的人参与是一个好主意。在这种情况下,我们不是在寻找普通的 Web 开发人员。很可能更多的咨询公司会告诉我们他们有能力提供这种专业知识,而不是实际。关于我们如何与合适的人取得联系的任何提示?(我们的总部设在斯堪的纳维亚半岛,所以最好在那里找人。)

我会咨询 Internet Security Solutions 或 At Stake。我相信它们遍布世界各地。

多高的起床时间才足够好?99.99% 似乎是一个合理的目标。但是任何停机时间都可能导致我们的客户失去业务。

如果您真的希望您的客户让他们的业务依赖于您构建的产品,那么停机时间确实是不可接受的。您可以通过拥有集群服务器和 DR 站点来实现这一点。在这一点上,这对你来说可能是可行的,所以我会说一个月有几个小时的维护窗口是可以接受的。您将不得不检查您的客户所在的位置,因为您可能在半夜为您的客户休息。

How do we guarantee that each customer only will be able to access

自己的数据?由于系统将能够访问它自己的数据库,这似乎很难。涉及大量测试的正确开发过程实际上是我们所拥有的关于用户权限的全部内容。

大量的测试。我建议经常进行渗透测试,以确保您不会在某处留下漏洞。

我们如何处理硬盘故障?RAID 5 与每日增量备份和每周完整备份相结合是否足够?或者你会选择RAID 6吗?

我会选择某种类型的 Raid 和多个服务器。如果服务器出现故障,您将需要某种监控来提醒您。根据您托管它的位置,他们可能有某种您可以雇用他们的监控解决方案,因此他们将负责让您知道是否有东西脱机。我建议使用 Nagios 进行服务器监控。

If one server is enough to serve the clients. Would you still use a cluster? (I would think so.) And in that case, how many nodes would you have in the cluster? 

是的,你永远不知道会发生什么。

   Which backup strategy would you use?

具有 DR 站点、日志传送(我知道 sql server 我知道有一个过程可以使多个数据库服务器保持同步)和夜间备份的集群解决方案。所有备份应运至异地并保存至少 7 天。它们还应该被加密以确保数据安全。

Do you think hosting the system in a computer cloud is a good alternative? (i.e. as provided by Amazon, Google or others.) 

我不知道我是否会相信它们,而且我听说它们非常昂贵。对于任务关键型系统,我使用我所知道的并使用经过验证的技术。这是我的意见。他们可能工作正常。

Would you use hard disk encryption? And if so, which kind? (One clarification: Yes it's only good if someone steals the hard disk, but that's still added security and may prevent (physical) intruders access to vital client business data.) 

可能不是。它会使服务器速度减慢太多。我宁愿使用我可以信任的托管服务来保证服务器的安全。

Is providing the customer with a way to do their own backups as well a good alternative? These customers won't be technically oriented. So in that case downloading the information in a ZIP archive containing Microsoft Office files might be a good way? 

提供选项可能会很好,但如果您可以向他们展示全面的备份策略,我会说这就足够了。

How would you monitor the solution? 

像 Nagios 之类的东西,并聘请托管服务来观察服务器的运行状况。对于 100% 的正常运行时间,它确实需要在 NOC 之类的地方,有人总是在那里监视服务器监视器。

您认为我们应该在内部做哪些事情,哪些事情应该外包?当然,我们将开发我们自己的核心系统。

做你觉得舒服和擅长的事情。这听起来像是编程和测试。我会雇人来做服务器设置、托管和监控。关键是不要选择出价最低的人。和会做好事的人一起去。

If you feel that the system is secure, as a technical person. How do you convince a non technical person that it's safe and secure? 

您有一套书面的政策和程序可以遵循。您有一个您使用的所有供应商的列表,其中包含从他们那里购买的商品以及它们的运行方式。您确保与您签约的所有供应商都是有信誉的并且有良好的业绩记录。

于 2009-03-04T22:24:06.763 回答