赞
踩
华为桌面云解决方案概述
注意:在2013年10月,本文已更新以反映推荐的新S-TAP配置。
本文的作者来自IBM和10gen,MongoDB公司,他们合作对MongoDB的InfoSphere Guardium进行了认证。 这是一次很棒的练习,因为我们了解了彼此的产品和用例。 我们真的很想写一些东西,以帮助那些熟悉关系数据库和InfoSphere Guardium的人们更多地了解为什么组织为某些类型的应用程序采用MongoDB。 从InfoSphere Guardium的角度来看,我们的基础结构已扩展到涵盖MongoDB中不同的消息协议,但是管理员和信息安全人员将遵循相同的过程来启用MongoDB进行审核,报告等。
我们还希望使MongoDB用户至少对InfoSphere Guardium中的功能有所了解,以帮助其组织达到审核和合规性目标,防止数据泄漏并帮助发现风险活动,例如使用服务器端JavaScript。
尽管本文着重于对MongoDB的支持,但InfoSphere Guardium 9.0 GPU Patch 50包含许多附加功能。 该补丁计划于2013年6月下旬发布,增强功能包括:
InfoSphere Guardium 9.1于2013年10月25日发布。增强功能包括对SAP HANA的支持,对Hadoop的增强的支持以及异常(异常)检测。 有关9.1中增强功能的更多信息,请参见详细的发行说明或幻灯片,以及有关此主题的Guardium技术讲座的重播。
实现目标令人兴奋,但还需要比单篇文章覆盖的空间更多。 因此,为了广泛涵盖某些主题,并为其他主题提供分步说明,我们创建了一系列三篇文章:
来自端点设备的数据激增,不断增长的用户数量以及诸如云计算,社交业务和大数据之类的新计算模型对数据访问和分析产生了需求,这些需求可以处理这些数量惊人的数据。 快速增长的NoSQL数据库类的价值是能够处理这些趋势所需的更高的速度和数据量,同时还可以通过动态模式实现更大的敏捷性。 例如,动态模式可以使组织快速响应不断变化的法规。
特别是,MongoDB在为您带来这些好处的同时,还提供了通用操作数据存储所必需的丰富查询功能。 它通过文档模型提供更高的开发人员生产力和敏捷性; 它可以在适合于关系型数据库或典型NoSQL数据库的情况下使用,或者可以用于新的数据库。
图1展示了MongoDB体系结构的高级视图,并介绍了一些关键概念,这些概念对于理解您是否负责为MongoDB配置InfoSphere Guardium具有重要意义。 (此图表示分片的环境。MongoDB也可以独立运行。)MongoDB使用自动分片实现水平可伸缩性,并使用副本集实现高可用性。 客户端连接到MongoDB进程(在分片环境中的mongos),如果安全性已打开,则可以选择对其进行身份验证,并执行数据库中文档的插入,查询和更新。 mongos将查询路由到适当的分片(mongod)以完成特定命令。
由于MongoDB使用文档数据模型,因此它是一种NoSQL数据库,称为文档数据库。 文档使用JSON(JavaScript对象表示法)以分层方式建模,因此它们仅包含名称-值对。 这些值可以是一个单独的类型化值,一个数组,也可以自己记录(以及它们的组合)以匹配您在应用程序中拥有的任何对象。 该模型可以提供快速查询,因为数据可以彼此相邻地存储在文档中,而不是散布在多个表中并且需要连接。 清单1显示了一个JSON文档的示例。
- {
- "_id" : 1,
- "name" : { "first" : "John", "last" : "Backus" },
- "contribs" : [ "Fortran", "ALGOL", "Backus-Naur Form", "FP" ],
- "awards" : [
- {
- "award" : "W.W. McDowell Award",
- "year" : 1967,
- "by" : "IEEE Computer Society"
- },
- { "award" : "Draper Prize",
- "year" : 1993,
- "by" : "National Academy of Engineering"
- }
- ]
- }
通过此文档结构,您可以像在应用程序中对对象进行建模的方式一样,将数据存储在MongoDB中,因此,它具有很大的上市时间和敏捷性优势(特别是结合了动态的,未预定义的架构)。
在后台,文档以二进制JSON格式(BSON)进行存储以提高效率,但是您无需处理JSON文档以外的任何内容。
表1比较了关系和MongoDB的概念。
关系概念 | 相当于MongoDB | 评论 |
---|---|---|
数据库/架构 | 数据库 | 其他的容器 |
表 | 采集 | |
行 | 文件 | |
柱 | 领域 | 字段是在文档级别定义的,而不是在集合中定义的。 换句话说,没有关系数据库那样的预定义架构。 |
指数 | 指数 |
Mongo的其余功能旨在使您能够使用此文档结构和您喜欢的编程语言,而无需花费大量时间来管理数据库。 高可用性,性能和自动分片(分区)的构建方式使应用程序不必太担心它们,因此应用程序开发团队可以专注于快速满足业务需求。
随着越来越多的企业希望MongoDB满足特定的应用程序需求,他们可能会面临满足组织中已建立的数据库也必须执行的安全性和合规性要求的需求。
MongoDB在其Wiki页面上概述了一套很好的安全性最佳实践。 (你可以找到链接相关信息 。)另外,为了解决一些基本的安全痛点的MongoDB在2.4版本中,提供以下安全增强功能:
现在来看一些有关网络配置,身份验证,角色使用和防止JavaScript注入攻击的最佳实践。
为了降低MongoDB的安全风险,建议在可信任的环境中运行MongoDB及其所有组件,并使用适当的防火墙控件,MongoDB组件之间的紧密绑定以及特定的IP端口。 当您运行分片群集时,查询流量通常通过称为mongos的单独进程进行路由。
如图2所示,特权用户或其他用户有可能直接登录到分片中的mongod实例。 因此,我们的建议不仅是使用防火墙来尽可能多地锁定对分片的访问,而且还要对分片实施InfoSphere Guardium监视以捕获该活动。 正如您将在本系列文章的第2部分中了解到的那样,可以通过以下方式配置Guardium,以避免重复计算消息流量,同时仍然在分片和mongos服务器上捕获本地流量。
设置监视实际上有很多选项,但这是提高效率的合理选择,同时为管理员提供了必要的监视功能。
另外,使用非默认端口运行是一种安全性最佳实践。 为了便于理解,我们确实使用缺省端口配置(对于mongos为27017,对于分片服务器为27018),但是当使用非缺省端口时,InfoSphere Guardium可以正常工作。
一个明显的建议是在启用身份验证的情况下运行MongoDB。 (缺省情况下,未启用身份验证。)从监视和审计的角度来看,身份验证也很关键,以使InfoSphere Guardium能够选择数据库用户名。 如果未启用身份验证,则将在报告的“数据库用户名”字段中看到字符串“ NO_AUTH”。 (在InfoSphere Guardium在会话中间开始监视并且不接听数据库用户的情况下,您也可能很少看到NO_AUTH。)
从MongoDB的角度来看,2.4之前的身份验证仅限于使用仅在Mongo中管理且未集成到企业用户管理系统中的用户名和密码进行的基本身份验证。 身份验证后,角色最少,只有只读或完全访问权限。 在2.4企业版中,添加了其他功能,包括对Kerberos的支持
在2.4中,MongoDB支持许多新角色,其作用范围可以大致分为服务器级角色和数据库级角色。 在这两种情况下,都有一些角色专注于用户管理,集群管理和应用程序访问。
默认报告标题确实使用SQL术语。 由于InfoSphere Guardium是异构的,因此许多不同的数据库将在整个企业中使用相同的策略和报告。 但是,如果您有特定的MongoDB报告,并且不想在报告标题中包括SQL,则可以根据需要自定义报告标题。
由于这些角色中的某些角色基本上等同于超级用户,因此确保仔细分配和监视这些角色非常重要。
请注意,使用InfoSphere Guardium,您可以监视和审计环境或任何逻辑数据库对system.users集合的更改,因此可以确保仅颁发适当的授权。 图3显示了一个示例报告,在该报告中,您可以看到数据库用户Indrani授予Kathy和Sundari读写角色,这转换为MongoDB中system.users集合上的插入。
由于MongoDB使用BSON(二进制JSON)而不是字符串,因此传统SQL注入类型攻击对MongoDB而言不是重要的问题。 但是,仍然需要注意一些情况,包括使用以下操作,这些操作使您可以在服务器上直接运行任意JavaScript表达式:
有多种方法可以降低风险(包括关闭所有服务器端脚本),但是首先您需要能够确定在何处使用这些操作。 使用InfoSphere Guardium,这些操作中JavaScript被记录并报告为对象。 这样做的意义在于,您可以将警报或策略违例设置为在访问警报或策略违例时发生。 这对于在测试环境中发现和识别这些风险用途以及在部署到生产环境之前进行必要的代码审查很有用。 图4中的示例报告(查看大图 )显示$eval
被报告为JavaScript对象。 您还将看到完整的命令文本,因此可以在上下文中查看其用法。 如果您想随着时间的推移进行监视,则可以创建一个定期计划的报告,该报告将指示何时重新使用这些操作之一。
对于任何对真正的数据库审计感兴趣的组织,以及可能对诸如支付卡行业(PCI)或Sarbanes-Oxley(SOX)要求之类的法规要求感兴趣的任何组织,InfoSphere Guardium都是对本机MongoDB功能的重要而有用的补充。 与其他数据库一样,MongoDB中的本机安全性和身份验证功能实际上不足以满足全球众多法规和合规性要求。 这些要求中的大多数都要求在日志记录和验证谁以及何时为数据库事务执行操作方面具有更强大的责任感。
InfoSphere Guardium已部署在世界各地的大型和小型组织中,以解决各种数据库的数据保护和合规性问题。 该解决方案是灵活,强大和有效的。 MongoDB用户可以期望看到的好处是:
请注意,消息的一部分被解析并存储为动词(有时称为命令)和对象,这意味着这些实体是可用于指定策略规则的项目,如本系列的第2部分中将看到的。 例如,您可以指定在发出查找时触发的规则,或指定任何人触摸敏感数据对象组中的对象时触发的规则。
这些警报可以使用电子邮件发送,也可以通过SNMP发送到另一个监视系统。 与IBM QRadar和HP ArcSight消息类型的内置集成还可以用于将警报条件从syslog自动转发到那些系统。
通过其非侵入式架构(请参见图6),InfoSphere Guardium可以提供对数据活动的完全可见性,而无需在MongoDB集群上进行任何配置更改。
对于那些熟悉InfoSphere Guardium的人,您可以在MongoDB服务器上安装S-TAP(轻量级软件代理)。 S-TAP是位于操作系统中的轻量级代理。 当Mongo服务器收到来自客户端的数据请求时,S-TAP将复制网络数据包,并将其发送到经过加固的,防篡改的硬件或软件设备,该设备称为收集器,用于在InfoSphere Guardium存储库中进行解析,分析和登录。 。
InfoSphere Guardium系统的真正智能在于收集器。 在这里,消息被分解为各个组成部分,并登录到收集器上的内部存储库中,并采取任何必要的措施,例如生成实时警报,记录活动或阻止特定的本地用户。 通过将大部分活动(分析和日志记录)卸载到强化的收集器上,可以将对Mongo应用程序的性能影响降到最低(在许多情况下不超过2-4%),并且您可以有效地实行职责分离。
基于InfoSphere Guardium角色的Web控制台无需MongoDB管理员就可以对警报,报告定义,合规性工作流程和设置(例如归档计划)进行集中管理,从而实现了审计员所需职责的分离和简化合规性活动。
对于那些刚接触InfoSphere Guardium的人来说,对数据如何流经系统的基本了解可以帮助您有效地理解和使用系统的其他部分,例如策略配置,报告和警报。
在描述流程时请参考图7:
注意: MongoDB客户端可能会对实际输入的内容(语法糖等)进行一些转换。 InfoSphere Guardium仅收集实际在网络上流动的内容。 在此示例中,用户Joe输入以下命令:
- test.CreditCard.insert({
- "Name" : "Sundari",
- "profile" : [
- {"CCN" : "11999002"},
- {"log" : ["new", "customer"]}
- ],
- });
在我们的三部分文章系列的第一部分中,我们介绍了联合解决方案的基本基础,包括概述MongoDB和InfoSphere Guardium,以及InfoSphere Guardium如何与MongoDB一起工作以在数据保护和保护方面提供重要价值。合规性。 此外,InfoSphere Guardium提供了强大而灵活的基础架构,用于自动化审核和合规性任务,从而尽可能减轻了IT人员的负担。
在第2部分中,我们将解决为MongoDB配置S-TAP的细节,并逐步讲解如何使用安全策略来完成一些常见用例,包括监视管理员访问,警报和反复失败的登录。
翻译自: https://www.ibm.com/developerworks/data/library/techarticle/dm-1306mongodb/index.html
华为桌面云解决方案概述
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。