SuperMap GIS系统安全的控制

前言

        随着信息技术的发展,信息安全问题变得愈加重要和严峻,而服务式 GIS 的广泛应用使得 GIS 服务安全得到了更多的关注,GIS 应用更多地从单机转向了网络应用,而 GIS 功能实现更多的由客户端转向了服务器端,由二维 GIS 向二三维一体化的 GIS,Service GIS 软件产品的安全性、三维服务中数据的安全性已经越来越重要。如何保护 GIS 服务器的安全、保护 GIS 服务内容安全、保证 GIS 服务正常运行,成为服务式 GIS 必然要解决的问题。

        SuperMap GIS 服务器提供了安全控制功能用以保障管理安全和服务安全。服务管理器是管理整个 GIS 系统的门户,关系到服务器的正常运转,只有管理员可以访问服务管理器。对于只有指定用户可以访问的受保护 GIS 服务,则只有授权的用户才能访问其服务资源。

一、基于 Token 的认证

        这里可以参考之前的博客:SuperMap iServer加密服务,并且在SuperMap iClient通过token调用

二、基于角色的访问控制

        除了上面所描述的情况外,有时候iServer访问服务时并没有管理员权限,而只是一个普通用户,想要实现对同一个服务,不同用户拥有不同的权限,有的用户可以访问,有的用户不能访问;那这个时候就需要针对不同的用户角色对同一个服务设置不同的访问权限。具体操作流程如下:

1.先创建不同的用户和角色

        接下来我们就通过来设置不同的用户和角色来实现基于角色的访问控制;首先需要创建不同的用户和角色,然后给不同的角色分配不同的用户。

注:这里添加的service01和service02并没有将其角色类型设置为“服务管理员”,因为当设置其为“服务管理员”后该角色就拥有除访问服务实例外,还拥有管理服务实例,如发布、编辑、删除等权限,与预期的设想不同。

用户名称

关联角色

角色类型

iServer

ADMIN

内置的系统管理员

user01

service01

普通用户

user02

service02

普通用户

0b7eaf044d2f851e60f2378eb2a86da3.png8155ca5271758c586efc36df17d28d8e.png

        经过以上步骤,我们就已经创建好需要测试使用到的用户和角色,接下来就需要对这两个用户和角色分别授权来达到同一个服务不同用户拥有不同的访问权限的功能。

2.再针对不同用户和角色进行服务授权

        SuperMap iServer 提供了服务级别的权限控制,可以对每一个服务实例分别进行角色授权,也可以对多个服务实例进行批量授权,服务实例与角色之间是多对多关系。如果系统管理员对某一角色授予了服务访问的权限,则与该角色关联的所有用户和用户组(主要指隶属于该用户组的用户)就同时拥有了该服务的访问权限。

        通过上面的操作针对不同用户和角色配置相应的权限个功能,这个时候我们就可以看到,当前角色对于服务的授权信息中显示的是均可以访问所有服务,接下来就需要我们对服务进行授权配置;

         登录服务管理器 WebManager,依次点击“服务”、“服务管理”,在服务页面点击某个具体的服务,进入到服务基本信息描述页面,然后选择“安全”,即可查看每个服务实例的安全状态:如果锁的标识为灰色,代表该服务实例是匿名可访问的,即没有锁定;如果锁的标识为蓝色,则该服务需要登录验证后才可以访问。鼠标放在锁上后,点击“授权”按钮可以查看和修改该服务实例的授权信息,也可以选择多个服务实例后点击页面右上角的“批量授权”按钮。

        这里我们会发现:默认情况下,iServer中所有的服务均是“匿名用户可访问”;这个时候所有的服务均可在不登录的情况下直接访问浏览,那么为了数据的安全,我们就需要将对应的服务做安全授权的操作。比如这里,我们对”http://localhost:8090/iserver/manager/services/map-world“world地图服务做安全授权的操作,对与不同的用户,我们分别设置不同的权限。

服务授权方式

授权方式

详细描述

匿名可访问

即任何匿名用户都可以访问。SuperMap iServer 提供的示范服务默认对所有匿名用户可访问。

任何登录用户可访问

勾选后所有登录的用户都可以访问当前服务。

设置可访问服务实例的角色

只有当“任何登录用户可访问”按钮处于未勾选状态时才起作用,用于为服务实例绑定角色,只有与该角色关联的用户和用户组(主要指隶属于该用户组的用户)才拥有该服务的访问权限 。

禁止访问角色

勾选后将禁止指定的角色访问当前服务。服务授权机制采用禁止优先策略,因此只要某个角色在禁止访问的列表中,关联的用户就不能访问服务,直到将该角色从禁止列表中移除。

        这里我们对角色service01授予可访问的权限,对角色service02授予禁止访问的权限,然后我们可以通过在角色管理中可以看到相应角色所对应的的”服务授权信息“:

3.获取Token并验证

        SuperMap iServer 提供了一种基于 Token(令牌)的用户身份验证机制,使用户在访问受保护的服务资源时仅需提供 Token,而不需要提供用户名和密码。Token 是包含用户名、有效期和某些专有信息并通过共享密钥加密的信息字符串。用户向 SuperMap iServer 申请 Token 时需要提供用户名和密码,服务端验证通过后会将相应的 Token 返回给用户。

        通过http://localhost:8090/iserver/services/security/tokens来获取相应的token,按照第二步中的功能,这里我们不能使用通过iServer自带的管理员用户申请到token来验证,而是应该针对不同的用户来申请对应的token,比如这里我们通过user01和user02两个用户分别申请到两个token,那么按照第二步中的配置,应该是出现如下的情况:

        在前端加载world地图服务时,不带token会提示401,未授权的安全权限问题;这是因为当前的world地图服务本身已经进行了安全授权,只有授权的用户才能访问。

        在加上通过user01申请到的token后,world地图服务能正常加载出来,这是因为当前使用的token是通过user01用户申请的,而且针对当前的user01用户的角色service01是授权允许访问world地图服务的,所以在前端能够正常加载显示。

        而在加上通过user02申请到的token后,访问world地图服务报401,地图不显示;这是因为当前使用的token是通过user02用户申请的,而针对当前的user02用户的角色service02是禁止访问当前world地图服务的,所以在前端加载时地图不会正常显示,而且也会报401身份认证失败问题。

扩展

        在iServer中提供有安全模块,可以通过基于用户身份识别的认证和授权,实现对服务的访问控制。无论是 SuperMap 服务的管理者、服务发布者还是服务的访问使用者都可以通过安全模块进行管理,且支持将单个服务实例授权给指定的角色并限制其操作权限。当安全模块启用后,服务就受到了保护,只有授权的角色所对应的用户才能访问该服务的资源。

iServer内置角色说明

        权限——是角色对服务或服务管理器的访问能力。权限是与角色对应的,管理员可以将单个或多个服务的某种权限授予角色,而用户只能通过关联已授权的角色来获取相应的权限。

        角色——是一组权限的集合。一个角色可以关联多个用户,一个用户可以关联多个角色,用户与角色的关联是多对多的。

角色名称

角色说明

ADMIN

内置的系统管理员,此角色默认拥有整个 SuperMap GIS 服务器 的管理权限,可以登录服务管理器执行对服务、安全、系统集群等配置,拥有对整个服务器的管理权限,需要慎重使用。关联了 ADMIN 角色的用户可以对其他关联 ADMIN 角色的用户进行添加、编辑和删除。

PUBLISHER

内置的服务发布者,此角色默认拥有服务发布和服务实例管理的权限,如发布服务、启用/禁用服务实例,以及添加、修改、或删除服务提供者、服务组件、服务接口等。

NOPASSWORD

第三方登录用户对应的角色,包括 QQ,微博、CAS 账户等不通过 SuperMap GIS 服务器存储的用户,这些用户无法通过 GIS 服务器修改密码。

PORTAL_USER

内置的 SuperMap iPortal 普通用户角色,拥有使用 iPortal 门户的权限,包括使用、创建和共享门户资源。

iServer内置用户组说明

        THIRD_PART_AUTHORIZED:内置的第三方登录用户组,默认关联了 NOPASSWORD、UNAUTHORIZED 角色,管理员可通过该用户组对 QQ、微博和 LDAP 等第三方存储的用户进行管理。

iServer用户说明

        用户——是访问服务的个人或程序,当用户创建(或注册)后就会存储在用户列表里。

        SuperMap GIS 服务器初始化的时候创建的系统管理员账户,具有对整个 GIS 服务器的管理权限,包括对 ADMIN 角色的用户的添加、修改和删除。系统初始化的时候创建的系统管理员账户不能被编辑和删除。

        基于角色的访问控制可以限制未授权用户对服务的访问,但同时还需要对用户进行认证和授权才能使具有访问权限的用户顺利访问服务。

        认证——是验证用户身份的过程,SuperMap iServer 提供了基于 HTTP Form 的认证基于 Token 的认证

        授权——是验证经过认证的用户是否具有所请求服务的访问权限的过程。

        SuperMap iServer 提供了服务级别的权限控制,可以对每一个服务实例分别进行角色授权,也可以对多个服务实例进行批量授权,服务实例与角色之间是多对多关系。如果系统管理员对某一角色授予了服务访问的权限,则与该角色关联的所有用户和用户组(主要指隶属于该用户组的用户)就同时拥有了该服务的访问权限。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值