当前基于开源软件、产品构建的存储底座无处不在,既有基于Hadoop HDFS分布式文件系统的搭建大数据平台,也有以CephFS为基石,满足对象、块和文件多场景存储需求的开源分布式存储底座,还有基于TrueNAS所构建的NAS网络存储系统。这些开源软件的引入一方面给企业项目落地提供了丰富的技术选择性,推进企业科技创新;另一方面又势必加大了企业IT运维难度,并随之而来带来大量安全风险。本议题旨在分析有哪些运维与安全风险,以及可能的应对策略。
本期为大家带来《迈向YB数据时代》第7期“精细运营”栏目中的议题三:
基于开源软件、产品构建的存储底座有哪些运维与安全风险?
【栏目主编】邓毓 江西农信运维技术经理:本议题由平安科技存储产品研发工程师白小龙、中国邮政储蓄银行数据库架构师董爱军发表针对议题下关键点的主张,几位专家的主张在金电信科数据库架构师时朋泉、某金融机构架构师刘艳春及我本人等多位专家的复议后,形成了一定的共识,希望可以对同行有一定的参考。
白小龙 平安科技存储产品研发工程师:
开源软件具有它的优势,但用不好就可能成为一把双刃剑,该实践可以作为其他开源存储软件引入的一种参考,用于提升其运维效率和减少安全风险。
一、引言
在当今企业信息技术领域,基于开源软件和产品构建的存储底座已经变得无处不在。这一趋势不仅表现在大数据领域,如基于Hadoop HDFS的分布式文件系统的搭建,还涉及到多场景存储需求的开源分布式存储底座,比如以CephFS为基石的系统,以及基于TrueNAS构建的NAS网络存储系统。这些开源解决方案的引入为企业带来了丰富的技术选择,推动了科技创新,甚至可以带来降本并提升系统的灵活性和扩展性,但与此同时,也带来了更为复杂的运维和安全挑战。
本文旨在通过深入探讨一个实际案例,分析基于开源软件、产品构建的存储底座在运维和安全方面的挑战,并提供有效的解决方案。
CephFS是一种弹性、可扩展且高度可靠的分布式文件系统,因其开源特性,采用分布式架构、自动化管理以及多协议支持等特点成为众多公司的选择。
下文将从多个维度分析引入CephFS带来的运维方面的挑战,以及如何利用开源软件和工具来解决问题。
二、运维成本问题
1. 运维挑战
系统集成:引入开源存储系统需要考虑与现有系统的集成,开源存储系统通常都比较复杂的架构和繁琐的配置,尤其是在初次部署时会有很大的技术挑战。
开源软件:系统中依赖的开源软件也会存在漏洞,这部分漏洞对系统的影响也不能忽视,需要及时的更新修复漏洞,投入更多的运维成本。
运维能力要求:开源存储系统涉及不同的技术栈和架构,存储系统的稳定性需要运维人员掌控,掌握多种技术,增加了技能要求和学习成本。
版本迭代:开源项目的代码持续演进,版本更新频繁,为了引入新的特性和修复旧版本的缺陷,线上环境也会更频繁的跟进升级,加上升级时可能因为兼容性、配置修改等问题,增大了系统的维护难度。
性能调优和监控:不同开源存储系统的架构和工作原理不同,需要研究对性能有影响的各种指标并根据业务场景做针对性的调优,这种工作要配合监控一起来做,并持续进行,因此需要建立完善的监控体系,以及时发现和解决潜在问题。
2. 解决方案实践
当前有大量的开源软件可以帮助我们提升运维的效率,本小节将描述如何利用开源软件解决上一小节提到的运维痛点。
自动化部署和配置:使用Jenkins对存储系统进行自动化的集成和部署。使用Ansible作为自动化工具,简化CephFS集群的部署和维护。通过定义清晰的配置文件和任务,实现对CephFS的快速且一致性的部署,从而减少了人工操作所需的时间和成本。依赖的开源软件也可以通过自动化的升级管理提升运维效率。
容器化技术的应用:利用Docker等容器技术,将CephFS组件容器化,提高了系统的可移植性和可扩展性。容器化技术使得系统更加灵活,可以更轻松地应对不同规模和负载的变化。
性能监控和优化:使用Prometheus和Grafana用于性能监控和告警,实时追踪系统性能并进行优化。这包括对存储节点、网络带宽和负载等方面的监控,以及根据监控结果进行性能调整。这组工具可以实时收集CephFS的性能数据,生成直观的图表,并在系统性能出现异常时发出警报,帮助运维人员快速发现和解决问题。同时Prometheus社区有各种开源的exporter可以供我们选择,可以进一步提升监控的运维效率。
三、安全风险问题
引入CephFS也带来了安全风险,包括未经授权的访问、数据泄露、未正确履行开源义务而带来法律、信誉和商业风险等问题。需要认真评估这些挑战和风险,并采取相应的管理和安全措施,以确保系统的稳定性和安全性。这包括精心制定的部署计划、定期的安全审计、持续的更新和合理的培训计划。本章节将阐述安全风险遇到的挑战及应对策略。
1. 安全风险挑战
代码缺陷:部分开源代码可能没有被充分的测试和验证,存在一些缺陷,留下安全隐患。
依赖社区迭代:当开源存储系统存在缺陷时,需要等待社区版本来修复,难免会存在修复不及时的问题,导致缺陷在生产环境长时间暴露。
配置管理错误:开源存储系统,尤其是本案例中的CephFS具有烦杂的配置选项,配置不当可能导致安全漏洞的产生,例如开放了不必要的端口或未正确设置访问控制。
漏洞管理:开源存储系统的版本不断更新,如果未及时升级到最新版本,因其开源特性,更容易被攻击者利用已知漏洞进行攻击,这种攻击一般成本低,破坏力更大。
权限认证问题:对于一些开源存储系统,缺乏强大的身份认证和授权机制可能导致未经授权的访问,增加了数据泄露和篡改的风险。
开源协议:开源不等于免费和自由,开源软件允许用户自由地使用、修改和分发代码,但是需要遵循开源协议,正确履行开源义务。未正确履行开源义务将会带来法务和舆论风险。
开源协议管理机制:制定开源协议的管理及开源协议义务履行审视机制,持续关注开源许可的变化,避免因为开源协议带来的不合规风险。
2. 安全风险应对思路
安全风险的应对实际上没有一个完全之策。如下是我们积累的一些经验参考。
数据加密:引入数据加密机制,保障数据在传输和存储过程中的安全性。通过使用CephFS提供的加密特性,包括客户端和存储节点之间的TLS/SSL通信加密,以及数据在磁盘上的加密存储。这种全面的数据加密策略有效地减轻了数据泄露和非法访问的风险。
认证与权限管控:实施细粒度的访问控制策略,限制对CephFS存储资源的未经授权访问。与内部的身份认证系统联动,例如LDAP或ActiveDirectory,并与CephFS的认证机制结合,确保只有经过认证的用户和系统可以访问存储底座。此外,引入多因素身份验证(MFA)提高访问的安全性,特别是对于具有高敏感性数据的存储场景。
漏洞扫描:采用漏洞扫描工具,例如OpenVAS或Nessus,对CephFS存储底座进行定期扫描,发现潜在的漏洞和安全风险。通过这些工具,运维团队能够及时了解系统的漏洞状况,并采取相应的补救措施。
安全巡检:定期进行安全巡检,追踪系统的使用日志、权限变更和访问记录,确保所有的操作都是合法和符合规定的。可以借助开源安全信息和事件管理(SIEM)工具,如ELK Stack(Elasticsearch, Logstash, Kibana)来实现。
漏洞更新机制:建立定期的安全更新流程,及时应用CephFS软件的最新版本和安全补丁。持续关注Ceph社区和安全渠道的公告,及时了解到潜在的安全风险,并迅速采取措施进行修复。结合使用自动化工具Ceph Ansible,实现自动升级和安全更新,确保系统在最新状态下运行。
安全培训:持续进行安全培训,提高运维团队乃至存储团队对安全问题的敏感性和应对能力。培训内容包括CephFS的实践、安全配置、常见攻击手法等方面。加强员工的安全意识,使其能够主动报告异常行为,并在发生安全事件时能够迅速响应和协助解决问题。
四、结论
本文描述了基于CephFS搭建存储软件底座在运维与安全方面带来的挑战以及应对这些挑战的实践策略。实践策略大量使用了开源工具和软件,以自动化部署、容器化技术、配合监控的持续化参数调优提升运维效率;以数据加密,访问权限控制,漏洞修复机制,风险巡检,风险意识培训等措施减少安全风险去提升运维效率和系统稳定性。
开源软件具有它的优势,但用不好就可能成为一把双刃剑,该实践可以作为其他开源存储软件引入的一种参考,用于提升其运维效率和减少安全风险。企业需要结合自己的实际情况选择使用开源软件工具以及使用的程度。
董爱军 中国邮政储蓄银行数据库架构师:
随着云计算和大数据时代的到来,存储底座扮演着越来越重要的角色。在构建存储底座的过程中,选择基于开源软件和产品的方案已经成为了一个非常流行的选择。然而,在利用开源软件和产品构建存储底座的过程中,我们需要关注到运维和安全风险问题。
一、开源软件、产品构建的存储底座案例
案例背景:某单位拥有海量的用户数据和业务数据,需要构建一个可靠的存储底座来存储和管理这些数据。选择了基于开源软件和产品来构建存储底座,以满足其业务需求。
方案概述:该存储底座方案使用了Hadoop分布式文件系统(HDFS)作为数据存储层,同时结合了开源的NoSQL数据库Apache Cassandra来存储和管理结构化数据。
在使用HDFS和Cassandra构建数据存储层的架构中,HDFS用于存储非结构化的大数据,而Cassandra用于存储和管理结构化的数据。具体而言,我们可以将结构化数据存储在Cassandra的表中,每个表可以根据需要定义不同的列族和索引。同时,HDFS可以作为Cassandra的外部存储,将Cassandra中的大数据存储在HDFS中,以降低存储成本和提高数据的可靠性。
1. 数据存储
HDFS作为数据存储层,负责存储大规模的结构化和非结构化数据。HDFS将数据切分成多个块,并将这些块存储在不同的节点上,以实现数据的分布式存储和并行处理。同时,HDFS提供了高可靠性和容错性,可以自动处理节点故障和数据的备份等问题。
2. 数据管理
Cassandra作为数据管理层,负责对结构化数据进行存储和管理。Cassandra使用一个基于主键的数据模型,支持快速的读写操作,并可以自动处理数据的故障恢复和数据分片等问题。同时,Cassandra具有高可伸缩性和高性能,可以处理大规模数据的存储和查询需求。
3. 数据同步
HDFS和Cassandra之间可以通过数据同步机制实现数据的实时同步。当新的数据写入HDFS时,可以通过数据同步工具将数据同步到Cassandra中。这样可以保证数据在HDFS和Cassandra之间的一致性,并且可以利用Cassandra的高性能和高可用性来进行数据的查询和分析。
二、安全风险问题分析
HDFS在安全风险上面临以下问题:
(1)缺乏安全认证机制:Hadoop中没有用户身份认证机制,任何用户都可以伪装成其他用户访问其在HDFS上的数据,获取MapReduce产生的结果,从而存在恶意攻击者假冒身份,篡改HDFS上他人的数据,提交恶意作业破坏系统、修改节点服务器的状态等隐患。
(2)缺乏适合的访问控制机制:具有Hadoop使用权限的用户可以不受限制地浏览DataNode上存储的数据,甚至可以轻易地修改和删除这些数据。同时,用户还可以随意修改或者终止其他用户的作业。
(3)缺乏关键行为审计:无法对用户的操作行为进行审计,无法及时发现和处理异常行为。
(4)缺乏静态加密和动态加密:数据在传输过程中可能会被恶意攻击者窃取或篡改,缺乏加密措施会导致数据的安全性受到威胁增加。
为了避免安全风险问题,如下措施可以尝试:
(1)建立安全认证机制:采用Kerberos身份认证机制加强hdfs的安全认证,确保只有合法在Kerberos注册授权的用户才可以访问HDFS。
(2)实施访问控制机制:通过角色访问控制(RBAC)或基于属性的访问控制(ABAC),限制用户对数据的访问权限,防止数据被篡改或删除。对于基于HDFS之上构建的hive、hbase等应用软件使用ranger精细化操作单元和用户操作权限。
(3)建立审计机制:使用ranger,对用户的操作行为进行记录和分析,及时发现和处理异常行为。
(4)实施静态加密和动态加密:开启数据加密,开启dfs.encrypt.data.transfer参数来控制数据传输过程中的加密,确保数据在传输过程中不会被窃取或篡改。
(5)加强服务器安全:对Hadoop服务器进行安全配置,例如限制远程访问、启用防火墙等措施,防止服务器被攻击。
(6)定期进行安全审计和漏洞扫描:及时发现和处理安全漏洞,确保系统的安全性。
Cassandra开源分布式数据库在安全风险上面临的问题主要包括:
(1)认证和授权问题:Cassandra缺乏统一的安全认证机制,默认使用用户名+密码方式,使得访问控制不严格,没有细粒度的权限控制,可能导致未经授权的访问。
(2)数据安全问题:Cassandra的数据存储在本地磁盘上,如果攻击者能够访问到数据节点,他们可能会窃取或篡改数据。此外,如果数据未正确加密,也可能会在网络传输过程中被窃取。
(3)集群内部通信安全问题:Cassandra集群内部节点之间的通信未加密,可能会被中间人攻击。
相比而言,由于Cassandra是开源的分布式数据库,黑客更容易解读代码进行攻击,为避免安全风险问题,如下措施可以尝试:
(1)建立统一的身份认证机制:使用Kerberos等身份认证机制,确保只有合法用户可以访问Cassandra。
(2)加强数据安全保护:对数据进行加密存储,使用SSL/TLS等加密协议对数据传输进行加密,防止数据被窃取或篡改。
(3)保障集群内部通信安全:使用SSL/TLS等加密协议对集群内部节点之间的通信进行加密,防止中间人攻击。
三、思考
开源软件治理是对很多企业级用户而言是一项艰巨的任务,从安全性、合规性和安全性方面都面临挑战。企业需要根据自己的实际情况,包括人力资源、技术资源等,酌情选择是否基于开源软件和产品构建存储底座。
在构建基于开源软件和产品的存储底座时,组织需要开展开源软件治理,以确保系统的稳定性、安全性和合规性。
以下是一些常规的开展开源软件治理的建议。
(1)建立开源软件治理策略:明确开源软件的使用范围、选型标准和引入流程,确保使用的开源软件符合企业的战略目标和业务需求。
(2)开源社区参与:积极参与开源社区的建设和维护工作,与社区成员保持良好的沟通和合作,及时获取最新的软件版本和技术支持。
(3)代码审查与漏洞管理:建立代码审查机制,对引入的开源软件进行代码审查和漏洞扫描。及时发现并修复潜在的安全漏洞和问题,确保系统的安全性和稳定性。
(4)文档管理和版本控制:为使用的开源软件建立文档库和版本控制系统,方便团队成员之间的协作和学习。同时,确保在升级或替换开源软件时保持文档和版本的连续性和一致性。
(5)配置管理:通过配置管理工具来管理和部署组件的配置,确保组件之间的兼容性和一致性。
(6)内部开源软件审查:对选择的开源软件和产品进行内部审查和评估,确保其符合组织的需求和安全标准。可以建立开源软件评估团队,负责审查和评估开源软件的可行性和安全性。
结合本方案,我们还采用了下面的开源软件治理方案。
(1)开展自动化测试:每次从社区获取到最新的版本之后,都会利用自动化测试工具对HDFS和Cassandra进行测试,包括功能测试、性能测试和安全测试等。
(2)跟踪和修复漏洞:建立专门的安全团队,负责漏洞跟踪和修复机制,及时发现和修复漏洞,对于无法修复的漏洞分析其影响范围。
(3)针对使用过程中发现的HDFS和Cassandra的开源软件问题,积极向社区反馈,提供脱敏后的运行日志,环境信息等,寻求社区的支持与帮助,解决问题。
(4)长期维护运维文档:包括安装、配置、使用和管理等方面的内容,以帮助后来者更好地使用软件。
(5)不定期开展培训和教育:帮助同事们更好地了解和使用HDFS和Cassandra,提高使用的技术水平和应用能力。
结束语
开源技术是一把双刃剑,开源带来的运维安全与风险问题不容忽视。存储是企业数据的基石,务必要确保生产系统存储架构的安全与稳定。对企业级用户而言,基于开源软件和产品构建关键业务存储底座需慎之又慎。