论文推荐| 面向虚拟地理环境的Linux平台地理分析模型服务化封装方法
面向虚拟地理环境的Linux平台地理分析模型服务化封装方法
谭羽丰1,2,3 , 陈旻1,2,3 , 张博文1,2,3 , 沈超然1,2,3 , 温永宁1,2,3
1. 虚拟地理环境教育部重点实验室, 江苏 南京 210023;
2. 江苏省地理信息资源开发与利用协同创新中心, 江苏 南京 210023;
3. 江苏省地理环境演化国家重点实验室培育建设点, 江苏 南京 210023
收稿日期:2018-03-18;修回日期:2018-05-28
基金项目:国家优青青年基金项目“地理建模与模拟”(41622108);国家重点基础研究发展计划(973项目)课题(2015CB953103);江苏省优势学科项目(164320H116)
第一作者简介:谭羽丰(1992-), 男, 硕士生, 研究方向为地理建模与模拟。E-mail:tanyufeng912@163.com
通信作者:陈旻, E-mail:chenmin0902@163.com
摘要:地理分析模型是对现实世界中地理过程的抽象与表达,是虚拟地理环境能够反映真实世界的重要工具。随着地理学的发展,跨领域、多学科合作式地理建模逐渐成为地理学的研究趋势,地理分析模型共享与重用也已经成为研究热点之一。然而,地理分析模型运行平台的差异性导致了其在共享与重用上存在困难,表现在用户难以直接透明共享不同平台下的模型。目前,地理分析模型运行平台主要包含Windows与Linux,Linux平台上存在大量模型,但相关模型服务共享与重用研究相对较少。本文面向Linux平台不同操作系统,分析其差异性及安全性,设计模型服务化的安全策略;面向Linux平台下地理分析模型的异构特征,设计了模型基本信息描述接口、行为接口及部署接口,实现Linux系统下地理分析模型的服务共享与重用。本文以system for automated geoscientific analyses(SAGA GIS)中的网格分析模型为例,对所设计的Linux平台下地理分析模型服务化封装方法进行了验证,显示了所设计封装策略的可行性,为Linux平台下地理分析模型的共享与重用提供了理论与方法基础。
关键词:地理分析模型 服务化封装 Linux 安全性
Service-oriented Encapsulation Method of Geo-analysis Model on Linux for Virtual Geographic Environments
TAN Yufeng1,2,3 , CHEN Min1,2,3 , ZHANG Bowen1,2,3 , SHEN Chaoran1,2,3 , WEN Yongning1,2,3
Abstract: Geo-analysis models are the abstraction and expression of real-world geographic phenomena and processes.Multidisciplinary and collaborative geographic modeling is currently becoming a main research trend in the field of geography.The service-oriented sharing and reuse of geo-analysis models have become a research direction.However, the heterogeneities in operating platforms lead to difficulties with the sharing and reuse of geo-analysis models.At present, the operating platforms for geo-analysis models mainly include Windows and Linux.A large number of geo-analysis models are developed depending on Linux, but there is less research related to the service-oriented sharing and reuse of these models.This article aims to analyze its differences and security and design a service-oriented security strategy for geo-analysis models on different Linux operating systems.Given the heterogeneities of geo-analysis models for Linux, the basic information description interface, behavior interface, and deployment interface were designed for the service-oriented sharing and reuse of geo-analysis models.The grid analysis model in the system for automated geoscientific analyses (SAGA GIS) was used as an example to demonstrate a service-oriented encapsulation method for geo-analysis models for Linux and validated.In summary, the proposed study can contribute to the theory and methods for the sharing and reuse of geo-analysis models on Linux.
Key words: geo-analysis models service-oriented encapsulation Linux security
地理建模与模拟环境是虚拟地理环境的核心子环境,是虚拟地理环境对现实世界进行预测与模拟的关键。地理分析模型的接入、高效利用是地理建模与模拟子环境实现的基础,需要充分利用已有的地理分析模型资源,与虚拟地理环境进行集成,这就涉及对已有地理模型资源的共享与重用问题[1-6]。随着地理科学的研究与发展,地理学家针对不同的研究目标、研究对象、研究区域以及不同的尺度,构建了大量的地理分析模型,这些地理分析模型对虚拟地理环境发展具有重要的现实意义[7-8]。由于地理分析模型来自多领域、多学科,且开发及使用标准不一,使得这些模型难以共享及重用,直接影响了网络环境下虚拟地理环境开放式构建的进程。
随着计算机技术的发展,由于平台的不同,地理分析模型共享与重用过程中的模型封装、模型运行、数据传递等关键环节具有较大的差异性,阻碍了模型在网络环境下的服务效能。当前地理分析模型运行环境主要集中于Windows平台与Linux平台,面向Windows平台下的地理分析模型封装已经有了较多的研究,如文献[9]借助地理信息服务组合研究了模型网络化共享策略;文献[10]基于代码迁移技术对WPS(web processing service)服务进行改进;文献[11-13]通过对地理分析模型的特点进行总结与分析,提出了面向开放式网络环境的地理模型服务化封装理论并进行了相关研究。但是,地理分析模型的服务化封装相关研究目前尚集中在Windows平台下,对Linux平台下的地理分析模型服务共享研究相对较少。Linux平台下具有较多数量的模型,并且在不断增加、丰富和完善。因此,在开放式网络环境下针对Linux平台的模型,设计其服务化封装策略,将有效推动地理分析模型共享与重用进程。相关难点存在于:
(1) Linux平台下有多个系统分支,且各系统具有多个版本,这些系统与版本的安全策略不尽相同,导致模型数据访问及程序执行时容易产生权限不足等相关问题。
(2) 运行在Linux平台下的地理分析模型通常存在结构复杂、数据异构等特点,需要寻求通用封装标准,以满足Linux平台的地理分析模型服务化封装。
(3) Linux平台下地理分析模型所依赖的运行环境较为复杂,包括众多的硬件环境、软件环境及依赖项等,模型环境配置描述也是模型服务化封装的难点之一。
面向以上难点,本文研究Linux平台下地理分析模型的封装方法,设计了安全策略及模型服务化接口,服务于地理分析模型在Linux平台不同操作系统下的可迁移部署及访问,以支持模型资源在网络环境下的共享与重用。
1 Linux平台下地理分析模型服务化封装架构设计
为了在网络环境中实现Linux平台下地理分析模型的服务共享与重用,本文面向Linux平台特性对模型服务化封装进行整体设计。如图 1所示,模型服务封装起源于模型描述,服务于模型部署及发布。模型描述是对模型信息的结构化表达,它包括模型的名称、用途、机理等基本信息,模型执行的权限及行为信息,部署所需的依赖环境、安全需求等部署相关信息。基于模型描述,模型的封装主要需要解决两方面问题:①Linux平台下模型服务化封装的安全性问题;②模型在Linux平台不同系统下的异构性问题。封装后的模型可以支持部署及调用,从而实现模型服务共享与重用。
图 1 基于Linux平台的地理分析模型服务化封装流程Fig. 1 Service-oriented encapsulation of geo-analysis model on Linux |
针对Linux平台下地理分析模型的特征及使用流程,模型服务化封装首先需要对Linux平台的安全性进行分析,主要分为两个方面:用户权限与防火墙配置。用户权限设计用于保障用户对于Linux平台下模型的顺利调用;防火墙设计保护模型资源及计算资源的运行安全。
其次,需要设计Linux平台下地理分析模型服务化封装的基本接口:模型基本信息描述接口、执行接口和部署接口。①模型基本信息描述接口负责对模型语义信息进行描述;②执行接口负责模型数据与执行行为的描述;③部署接口负责描述模型的部署信息、Linux平台不同系统权限与安全设置。模型提供者能够借助模型部署接口以结构化的方式提供模型部署所需的相关信息。
2 Linux平台下地理分析模型安全性分析及策略设计2.1 安全性问题分析
Linux平台的安全问题是地理分析模型封装必须克服的难点问题之一。为了确保计算资源硬软件环境、事件处理的安全性和可靠性,以及数据传输过程的机密性,需要设计一套安全策略以支撑模型封装的灵活配置。下面主要从权限设置、防火墙设置两个方面对安全策略进行具体分析。
2.1.1 权限设置
在Linux平台下,所有的事物都以文件的形式存在,系统安全的核心即为文件管理系统[14]。地理分析模型在计算节点上是以文件夹与文件的形式存在,所以Linux平台文件系统权限配置是模型运行的关键。
Linux操作系统的用户权限比Windows系统中的权限要严格。Linux对用户角色主要分3类:第1类是文件拥有者(User),即创建该文件的用户;第2类为文件拥有者所在的组(Group),当某个用户创建一个文件后,这个文件所在的组就是该用户所在的组,其中不包含文件拥有者;第3类是其他用户(Other),即除了User和Group以外的用户。用户权限属于文件的属性,Linux平台下提供了相关接口查询的文件属性,图 2为某一个文件的属性。
图 2 Linux平台下文件属性Fig. 2 File property on Linux |
文件的类型权限主要分5种,通常用文件类型权限字符串的第1个字符进行表示。当为[d]时,则代表该文件的类型为文件夹;当为[-]时,则表示是单个文件等。此外,其他字符每3个为一组,均为r、w、x 3个字母的组合,r代表可读(read),w代表可写(write)、x代表可执行(execute)。3个字母的顺序是固定的,当没有权限的时候会被[-]代替。如图 3所示,该文件类型为单个文件,文件拥有者的权限为可读、可写与可执行。
图 3 Linux平台下用户权限Fig. 3 User permission on Linux |
2.1.2 防火墙配置
服务化之后的地理分析模型需要部署在Linux平台计算节点上进行调用,网络安全问题至关重要,需要依据计算节点运行机制制定对应的防火墙策略,保障模型服务的稳定运行。
Linux平台下防火墙通过制定一些规则,对进入局域网的主机封包数据进行管理。本文基于Nefilter框架[15]对模型计算节点配置相应防火墙规则,控制模型相关服务的访问。该框架可以对流入与流出的数据进行细化控制,实现防火墙及数据包分隔等功能。借助Nefilter的配置工具iptables,可以对计算节点的数据包流入流出进行过滤,有效地阻止部分网络攻击和非法数据流入,保护数据资源、模型资源的安全。
2.2 面向Linux平台模型服务化封装安全性策略设计
基于以上分析,本节从用户权限的安全策略、防火墙配置策略两个方面对模型服务化安全策略进行设计。
(1) 从地理分析模型文件结构对用户权限进行设置,将具有相关联系的文件归到统一的文件夹,构建模型整体文件夹结构。制定相应的用户权限如图 4所示。
图 4 模型标准化文件权限控制Fig. 4 Model standardized package permission control |
Linux平台下运行地理分析模型程序,如果对文件的权限考虑不周全可能会造成文件没有访问权限或者被攻击。为保证模型运行时对相关文件的顺利调用,对各个模型相关文件进行权限设置。其中Model文件里储存内容为地理分析模型的启动文件和模型描述文档(model description language,MDL)等,模型启动文件是模型运行的核心文件;Assmbly文件夹存储了地理分析模型封装所需相关库文件以及必须依赖的运行库文件;Supportive文件夹存储了模型相关依赖项文件;Testify文件夹存储了模型的测试示例数据;Licence.txt为模型的版权信息和相关的开源声明,仅供模型使用者查看;Package.config文件为模型运行的入口文件配置、端口说明等。由此可见,地理分析模型的文件结构中,每个文件具有各自的职能与作用,要考虑到每个文件夹及文件在模型运行过程中的权限控制。首先,从整体上对模型的文件夹的权限进行统一控制,文件夹设置为可读、可写及可操作,文件设置为可读、不可写及不可操作。其次,在具体过程中对模型文件夹及文件的操作权限进一步的设置,例如模型执行程序、MDL、示例数据等文件需要对其设置为可读、可写与可操作。
(2) 本文基于Linux平台提供的Netfilter框架,研究服务化地理分析模型封装过程中软件防火墙的配置策略。
由于网络环境的不同,防火墙的基本策略制定需要根据不同环境制定不同的安全策略。在模型封装过程中,因为Linux平台下的计算节点是地理分析模型在网络环境中的枢纽,所以对此设计策略为:模型服务与其相关服务的防火墙出入站配置列为允许,如模型运行服务和数据库服务;被列为不允许的服务都是禁止,如一些DOS攻击等。此外,其他服务不进行处理,按照系统默认规则进行配置。
采用这种策略是为了保证计算节点的安全性,但可能造成其他的一些服务无法正常使用,所以要明确地规定计算节点的每项服务与相关的协议。图 5是Linux平台计算节点的防火墙规则的过滤流程图,对模型服务、模型相关服务以及相关禁止服务检测并进行相应的处理。
图 5 Linux平台下防火墙规则Fig. 5 Firewall ruleson Linux |
3 Linux平台下地理分析模型服务化封装接口设计
基于开放式网络环境下地理分析模型共享的本质需求[16-18],本文面向Linux平台下地理分析模型服务共享提出了一种封装策略,如图 6所示。该策略封装了模型的3类接口:①模型基本信息描述接口,以帮助用户更好地对模型进行基本信息的描述;②模型行为接口,包含了模型数据接口与模型执行行为接口,模型数据接口对模型数据进行统一化的表达,模型执行行为接口利用状态机响应模型(SM-ER模型)对模型的行为进行具体的描述;③模型部署接口,服务于模型在Linux平台不同系统下的部署。这些接口的设计同时兼顾用户权限、安全等问题,实现跨Linux平台系统的模型服务共享。
图 6 Linux平台下模型服务化封装接口设计图Fig. 6 Design for model service encapsulation interface on Linux |
3.1 基本信息描述接口设计及配置
本文参考本研究小组已经提出的相关模型基本信息描述接口设计[12],基于对Linux平台相关特性以及地理分析模型要素的分析,扩展了模型基本信息描述接口,实现了图形化可动态配置的模型描述接口生成工具。
原接口主要包含了模型类别集合(category collection)和本地化属性集合(localattri-butecollection)的接口。本文基于此进行了扩展,将模型不同节点抽象出统一的节点结构,对不同的节点进行结构化的描述。如图 7所示,ModelTreeNode为节点的数据结构,包含Name和Attribute两个属性;其中Name为节点的名称;Attribute为每个节点的特有属性,在不同的派生类中由不同的对象来表达,例如,在ModelCategoryObject类中由ModelCategory表达,在ModelLocalAttrbuteObject类中由ModelLocalAttrbute表达。在IAtrributeSet接口中,本文将Category-Collection与LocalAttributeCollection进行了改进,其中所操作的对象为ModelCategoryObject和ModelLocalAttributeObject。基于对该接口的扩展,用户可以对模型基本信息进行图形化动态可配置描述,从而使用户能够更直观地了解模型信息。根据改进模型基本信息接口生成的模型基本信息动态配置工具如图 8所示。
图 7 基于模型描述接口的自动化配置接口Fig. 7 Automated configuration interface based on model description interface |
图 8 模型基本信息生成工具Fig. 8 Configure tool of model basic information |
3.2 执行接口设计及实现
3.2.1 模型数据接口
由于各领域建模方法的差异性,使得不同地理分析模型的数据需求具有较大的差异性[19]。本研究小组在对大量地理分析模型数据进行系统分析的基础上,提出并设计了针对地理分析模型的统一数据表达与交换模型(universal data description and eXchange model, UDX),以此来描述复杂的地理模型数据语义及结构信息,目的在于屏蔽模型数据使用过程中的异构性[20]。UDX主要分为两个部分,一部分为UDX Data,负责承载模型数据;另一部分为UDX Schema,用于描述地理分析模型的数据结构与语义信息。由于数据接口描述不涉及Linux平台特性,本文直接借助UDX实现Linux平台下模型数据接口的设计,UDX也为模型数据交换控制的安全性奠定了基础。
3.2.2 模型执行行为接口
模型执行过程中涉及多个计算过程,通常情况下,模型需要与模型使用者进行频繁的交互操作。在Linux平台下,模型运行每个计算过程中的数据交换均需要对其权限进行控制。如图 9所示:本研究利用状态机-事件响应模型(the state-machine event response model, SM-ER模型)[21-22]对模型的计算过程进行描述,模型的运行流程由多个计算过程组成,并抽象为一个状态机;模型每个计算过程被抽象为一个状态;每个状态中的模型数据交换抽象为事件。在模型运算流程中,每个事件中均有对模型数据交换的权限控制,以保证模型输入输出数据的传输及存储安全。
图 9 兼顾权限控制的模型执行行为Fig. 9 The model execution behavior combining permissions control |
模型执行行为接口设计UML如图 10所示。ModelBehavior接口用来描述模型运行过程中的状态与行为,包含模型数据需求的描述RealatedDataSet和模型状态组StateGroup。RealatedDataSet描述模型执行行为的驱动数据;模型状态组StateGroup由一个或多个状态ModelState组成,每个ModelState表示模型运行时不同的状态,ModelState包含一个或多个ModelEvent,每个ModelEvent表示模型的数据交换行为。ModelEvent中PermissionDesc字段表示对此输入、输出数据的操作权限控制描述,通过对这一字段进行设置,从而对模型输入输出数据文件的权限进行设定,以达到模型对输入输出文件安全性进行控制的目的。
图 10 模型执行行为接口Fig. 10 Model behavior interface |
3.3 部署接口设计及实现
为了将地理分析模型部署在分布式网络下不同Linux计算节点上,以及降低Linux平台不同系统所带来的影响,保证地理分析模型的可移植性,根据计算机科学领域中的代码分层化设计思路,将模型部署接口分为两个部分:Linux平台系统的模型部署主体接口和环境相关接口。模型部署接口的整体架构设计如图 11所示。
图 11 模型部署接口设计图Fig. 11 Design for model deployment interface |
(1) 模型部署主体接口负责模型部署过程中共性部分,这样设计的目的使模型部署依赖与Linux平台系统环境特征解耦,使得模型部署具有可迁移性;模型部署主体接口(IModelDeployment)设计如图 12所示,由模型执行程序信息(ModelEntrance)、模型配置文档信息(ModelConfigure)、模型依赖项信息(ModelAssembly)及模型用户权限信息(ModelUserPermission)组成。
图 12 模型部署主体接口Fig. 12 Model deployment main interface |
(2) 环境相关接口是面向Linux平台不同系统下模型运行环境描述设计的接口,如图 13所示,主要包括环境基本信息检测(LinuxInfo)和环境配置(LinuxConfig)等。环境基本信息检测实现对系统版本(check_sys())、内核(check_kernel_version())以及其他基本信息的检测并根据检测结果选择部署方案。环境配置主要实现以下功能:①Linux平台环境下的防火墙策略(set_firewall()),根据Linux平台不同的系统动态设置防火墙;②依赖项(install_dependencies())安装,集成Linux平台不同系统的包管理工具对依赖项进行安装;③用户权限(set_user_permission()),对模型的使用权限进行设置;④错误监测(error_detect_depends()),对模型部署过程中遇到的环境配置问题中的错误进行输出。
图 13 模型部署环境接口Fig. 13 Model deployment environment interface |
面向Linux平台不同系统,可以根据模型部署接口对Linux平台下的模型部署相关信息进行描述。通过该接口,实现了对不同系统的透明使用,以满足模型可移植性部署的需求。
4 Linux平台下SAGA GIS下模型的服务化封装与验证
SAGA GIS是自动化的地理科学分析工具,是基于C++编程的地理信息系统分析软件,具有良好的可移植性,便于在Linux平台不同系统下模型服务化封装的实现。
本文以SAGA GIS网格分析模块中Residual Analysis残差分析模型为例,介绍了该服务化封装流程,以验证Linux平台模型服务化封装的可行性与实用性。
(1) 通过MDL对Residual Analysis模型进行描述,描述信息与模型接口的对应关系如图 14所示。
图 14 模型描述语言与接口映射关系Fig. 14 Relationship of MDL and interfaces |
(2) 根据模型数据接口对Residual Analysis模型的输入数据进行组织与准备,如图 15所示。
图 15 Residual Analysis模型输入数据UDX组织Fig. 15 UDX structure for residual analysis model input data |
(3) 对Residual Analysis模型输入、输出数据的行为及权限进行分析,模型执行过程中数据操作权限控制可以精确到的具体步骤,以适用于不同模型运行场景。基于模型行为接口对该模型进行封装,形成Linux平台下标准化的模型可执行程序。如图 16所示。
图 16 Residual Analysis模型行为接口Fig. 16 Residual Analysis model behavior interface |
(4) 通过模型部署接口对Residual Analysis模型封装后的标准化文件从3个方面进行部署。
第1步是对Residual Analysis模型权限的设置(set_user_permission()),如图 17所示。首先对模型文件夹及文件的整体结构权限进行初步设置,其次针对特定的文件夹及文件权限进行详细设置。
图 17 模型部署过程中权限设置Fig. 17 Permissions setting in model deployment |
第2步是对模型依赖的软硬件环境进行检测(check_sys(),check_kernel_version())并配置(install_dependencies())。该模型主要依赖的环境为GDAL(GIS的文件格式),TIFF(用于处理TIFF的格式的图像文件库函数)等。对于可配置的环境提供相应的安装方案,如该模型可以在Ubuntu与Centos系统下运行,但其依赖项的安装方式并不同,本文通过对Linux平台环境检测,利用不同系统下的包管理工具apt-get和yum分别处理依赖项安装的问题。针对不能利用包管理工具安装的软件,提供相应的源码安装方式。对于不可配置的环境提示模型封装者切换其他计算节点进行部署,如图 18所示。
图 18 模型部署过程中环境匹配Fig. 18 Environment matching in model deployment |
第3步是防火墙配置(set_firewall()),防火墙策略针对Linux平台不同系统的防火墙进行的配置。如图 19所示,CentOS6系统利用iptables工具对防火墙进行配置;CentOS7系统利用firewall-cmd工具对防火墙进行配置;Ubuntu与Debian系统可利用UFW工具对防火墙进行配置。对传进来的ModelPort端口参数进行处理,如:放行了8060端口,以便对Residual Analysis模型进行调用;放行了27017端口,以便对相关模型信息进行获取。
图 19 模型部署过程中防火墙设置Fig. 19 Firewall setting for model deployment |
通过该文件管理系统将Residual Analysis模型部署到Linux平台下的计算节点,发布与调用。如图 20所示:①为部署成功的状态,可以查看Residual Analysis模型基本信息;②为准备Residual Analysis残差分析输入的ASCII GRID数据;③为Residual Analysis运行状态;④为Residual Analysis输出的参数。成功部署的模型可以供使用者在网络环境下进行查询调用并产生相应的结果。模型使用者在此过程中无须考虑模型的运行环境、依赖项与权限问题,从而实现对地理分析模型的共享与重用。
图 20 Residual Analysis模型服务化流程Fig. 20 Service-oriented diagram of residual analysis model |
5 结论
本文研究了面向Linux平台下模型服务化封装的安全策略和接口设计,设计了Linux平台不同系统的模型封装与调用方法,实现了MDL动态配置工具,促进了Linux平台下的地理分析模型的共享与重用。Linux平台下的地理分析模型共享与重用,将推动虚拟地理环境建模与模拟环境的发展。然而,Linux安全涉及的方面还有很多,如模型运行过程中保证进程与线程安全性和大量地理数据传输与存储的可靠性等问题;此外,面向模型封装效率的提高,还需要开发一系列更友好的封装辅助工具;以上问题都有待进一步研究。
【引文格式】谭羽丰, 陈旻, 张博文, 等. 面向虚拟地理环境的Linux平台地理分析模型服务化封装方法. 测绘学报,2018,47(8):1031-1042. DOI: 10.11947/j.AGCS.2018.20180112
精
彩
回
顾
论文推荐| 张良培:基于分裂合并的多模型拟合方法在点云分割中的应用
论文推荐| 王密:高分辨率光学卫星影像高精度在轨实时云检测的流式计算
《测绘学报》 “数字摄影测量与机器视觉专辑”在CPGIS2018北京论坛发布