段春华
(扬州市国土资源局,江苏 扬州 225002)
近年来,由于地理信息技术的快速发展和人们对空间位置信息需求的不断提高,基于地理信息的应用已成为当前社会的关注热点,如“天地图”、百度地图、谷歌地球等,都已与百姓生活密不可分。随着网络传输速度的爆发性增长,利用网络发布空间数据为用户提供空间数据浏览、查询和分析等功能,形成一个网络化的地理空间平台将是GIS系统发展的必然趋势[1]。目前主流地理信息软件已不需要集成电子地图等地理信息数据,只需由客户端发起访问请求即可。客户端软件也可大大“瘦身”,不必再动辄占据数百兆的存储空间。与此同时,应用与数据相分离的方式也使开发者能够专注于应用层的功能开发,这无疑大大提高了应用系统的灵活性,降低了开发成本,也可在一定程度上减少重复投资和建设。
在线地理信息服务在提供极大便利性的同时也存在一定隐忧,最重要的一点就是访问安全性控制。由于地理信息服务的数据集通常是由测绘成果经加工处理后生成,具有一定特殊性,某些测绘成果还可能有保密需求,只能在一定范围内或只能由特定用户使用。目前常用的地理信息服务接口有SOAP、REST、WMTS等,均是通过一个 URL地址进行访问,用户不仅能够通过接口调用服务,还能对服务地址进行解析并下载数据。因此,必须对访问权限进行严格控制,使非授权用户无法访问具有保密要求的服务资源,已授权用户无法进行越权操作。
ArcGIS Server是当前地理信息行业应用最广泛的服务器端软件。本文以ArcGIS Server为例,讨论地理信息服务安全控制技术。ArcGIS Server是一个用于构建集中管理、支持多用户的企业级GIS应用的平台,它提供了丰富的GIS功能,例如地图、定位器和用在中央服务器应用中的软件对象等。
ArcGIS提供了完善的安全机制。同一地图服务不同部门且不同用户具有不同的权限,只能在许可下进行操作。这让实际业务过程中不同部门、不同区域之间的权责控制变得简单。ArcGIS安全控制技术主要有两种实现方法:Http认证和令牌(Token)认证。
Http认证是客户端应用程序与服务器端进行权限认证的一种方式。它采用“质询-响应”机制。“质询”是服务器端对客户端的质询,即要求客户端发送认证信息;“响应”是客户端对“质询”的响应,即发送带有认证信息的请求[2]。认证过程通常包含以下几个步骤:① 客户端发送不包含认证信息的Request;② 服务器返回401Unauthorized给客户端;③ 客户端把用户名密码加密后放在数据报的头部(header)再次发送给服务器端;④ 服务器端对数据报进行解析,获取认证信息,确定是否进行授权。图1为ArcGIS Server进行Http认证的窗口,该窗口要求提供用户名和密码。
图1 ArcGIS Server进行Http认证的窗口
ArcGIS Server还提供了一种基于令牌(Token)的专有身份验证机制,使用户能够通过提供令牌而不是用户名与密码来进行自我身份验证。Arc-GIS Server令牌是包含用户名、令牌有效期和某些专有信息的加密信息字符串。要获得令牌,用户需要提供有效的用户名和密码。ArcGIS Server会验证所提供的凭据发布令牌。用户在访问受保护资源时需提供此令牌。
ArcGIS Server令牌具有一定生命周期,分为短期令牌和长期令牌。短期令牌使授权用户可以临时访问某一受控的地理信息服务,令牌将在用户访问结束后很短时间内失效。短期令牌给用户的临时访问提供了便利,但需要频繁向服务器请求令牌,在一定程度上加重了服务器的负载。长期令牌则指定了生命周期。在生命周期内,用户可使用同一令牌多次访问受控的地理信息服务,不需要反复请求。在实际应用中,对合法的用户组,一般可分配长期令牌。
ArcGIS Server令牌的传输一般采用HTTPS/SSL创建安全链接,避免在网络传输的过程中信息被非法截取而导致用户名、密码泄露。
数字扬州地理信息公共服务平台是一套地理信息在线服务系统。通过统一的接口,系统向扬州市国土、规划、环保、公安等对地理空间信息具有迫切需求的单位提供高质量、不间断的地理信息服务。它也是数字扬州地理空间框架的重要组成部分。“数字扬州”所有测绘地理信息成果经过处理加工后均形成在线数据集,通过此平台统一发布。平台建成后,除确实无法在线接入的专网应用,一律不再提供离线数据。同时要求各应用部门通过公共服务平台发布自有的专题业务数据,倡导共建共享,减少重复建设。
公共服务平台面临的主要安全风险包括:① 身份冒充:由于网络是个虚拟社会,无法像现实社会那样认定人的身份,也就为恶意者提供了冒充他人的绝好机会和手段;② 信息失密:“扬州市地理信息公共服务平台”的数据集由测绘成果加工而成,具有一定特殊性和保密要求,一旦泄密,损失及影响将无法估量;③ 信息篡改:信息在处理、传输过程中恶意攻击者可能会对信息进行修改、删除,极大威胁业务的顺利进行。
基于上述风险,数字扬州地理信息公共服务平台安全总体目标是:结合当前信息安全技术发展水平,设计一套科学合理的深层防御安全保障体系,形成有效的安全防护能力、隐患发现能力、应急反应能力和系统恢复能力,从物理、网络、系统、应用和管理等方面保证系统安全、高效、可靠运行,保证信息的机密性、完整性、可用性和操作性,避免各种潜在威胁。
据此,数字扬州地理信息公共服务平台的安全体系设计分为安全基础设施、应用系统安全和安全管理保障体系3部分。根据“分域保护、分级保护”策略,制定相应安全措施,形成数字扬州地理信息公共服务平台整体安全保障体系框架,如图2所示。
图2 数字扬州地理信息公共服务平台安全体系框架
数字扬州地理信息公共服务平台目前主要提供REST风格的在线地理信息服务。REST用来定义一个Web服务应用程序编程接口(API),并通过HTTP进行资源管理[3]。也就是说用户通过一个URL即可访问任何已发布的地理信息资源。REST风格服务的这种特性在给用户带来便利性的同时也存在一定的安全风险。平台数据集来自于测绘成果资料,具有一定特殊性。虽然整个服务系统运行于政务专网内,但对外并没有物理隔离。因此,必须对公共服务平台进行严格的安全控制,在保证授权用户正常访问的同时,避免非授权用户的非法访问和数据的非法窃取。
采用ArcGIS Server令牌作为安全控制的关键技术能够很好地满足安全性要求。一方面,通过长生命周期的令牌用户不需频繁向服务器申请权限,降低了服务器的负载,提高了应用程序的灵活性。另一方面,通过应用层的定制开发能够实现用户自助申请令牌,基本不需人工干预,大大减少了公共服务平台管理员的工作量,提高了运行和管理效率。
综上所述,数字扬州地理信息公共服务平台采用ArcGIS Server令牌作为权限控制策略来确保在线地理信息服务的安全性,配置和应用流程如下文所述。
系统如图3所示。
(1)登陆 ArcGIS Server Manager系统。
图3 配置令牌服务器
(2)打开Security→Setting→Security Store功能模块,配置成采用外部数据库(External Database)方式,输入外部数据库的驱动、地址、用户名和密码。
(3)驱动oracle.jdbc.driver.OracleDriver。
地址:jdbc:oracle:thin;服务器IP地址:1521:orcl;用户名:geoshare_platform;密码:admin
(4)打开 Security→Setting→Security for GIS Services功能模块,配置“ArcGIS令牌服务认证(Arc-GIS Token Service Authentication)”时采用“远程令牌服务(Use remote token service)”方式。其中“ArcGIS Token Service Authentication”配置如下:
① Shared key for encrypting token 为:geoshare;
② Token Service URL 为:http://服务器IP地址:8081/RemoteTokenServer。
数字扬州地理信息公共服务平台基于ArcGIS Server for Java Platform 和SCY-OneMap构建,利用已有的组件,不需进行底层开发,只需专注于应用层的功能定制。在安全控制模块中进行应用层开发的目的是实现用户一站式自助注册、自助申请服务访问权限而不需管理员干预。图4为用户进行权限申请的界面。
图4 用户自助申请服务权限界面
地理信息服务权限申请流程包含以下几个步骤:① 用户访问数字扬州地理信息公共服务平台地图资源页面;② 在线填写资源申请表,并上传共建共享协议电子档;③ 等待管理员审核授权,审核通过后登录用户信息安全加密服务系统,获取令牌字符串。
用户在获取令牌后,需将其作为服务请求参数方可正常调用地理信息服务。以下是一段FLEX端应用程序调用地理信息服务的示例代码:
<?xml version="1.0"encoding="utf-8"?>
<s:Application
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:esri="http://www.esri.com/2008/ags"
pageTitle="Yangzhou Map Show">
<esri:Map id="myMap" logoVisible="false">
<esri:ArcGISTiledMapServiceLayer show="layerShowHandler(event)"
url=http://10.36.225.20:8080/RemoteR-est/services/yzsl/MapServer visible="true"
token =" nMQ _yixXzXuKJIrjxCX2735WvLNnh20kNaXloEh1BO yIasFy6Zm8dhrQAxTjHNb4"/>
</esri:Map>
</s:Application>
公共服务平台的令牌服务器在收到应用程序发出的访问请求时会核对url中的令牌参数,即“Token”属性中的字符串,根据定义好的用户组权限返回相应地理信息资源数据,并将应用程序访问记录写入管理日志中供管理员诊断和参考。
通过采用ArcGIS Server令牌技术数字扬州地理信息公共服务平台建立了较为完善安全的机制,为地理信息数据的安全性和完整性提供了较好保障。平台自2014年7月上线试运行以来,情况良好,根据访问日志的统计情况,未出现非授权用户访问受保护资源、已注册用户越权操作及数据窃取等情况,基本达到了安全体系的设计要求。
但是,数字扬州地理信息公共服务平台的安全控制体系还存在一定的不足,未来需进一步对应用层进行优化。一方面要简化用户权限申请的流程,地图资源页面需添加多浏览器的支持。另一方面要解决经NAT转换后无法跟踪应用程序实际访问IP地址的问题。此外,在防火墙透析等方面还需深入研究。
[1] 储征伟,杨娅丽.地理信息系统应用现状及发展趋势[J].现代测绘,2011(1):22-25.
[2] 陈远志.HTTP认证及其在 Web平台中的实现[J].中国数据通信,2004(10):78-84.
[3] 周兆滨,王琴,顾亮.等.使用ArcGIS REST构建高性能 WebGIS服务[J].制造业自动化,2010(8):178-179,216.
[4] 张望.基于ArcGIS Server的网络地理信息服务研究与实践[D].长沙:中南大学,2009.