日期:2014-05-16  浏览次数:20464 次

ArcGIS 10.1 for Server 安全机制(5)数据库集成安全

1  常见用户需求

在发布和使用GIS服务的过程中,经常会遇到如下的一些需求:

1)       同一个服务,不同用户访问不同的图层

2)       同一个图层,只允许个别用户进行编辑

3)       图层中包含的敏感信息,只允许少数用户访问

4)       图层中的特殊字段,只允许个别用户编辑

5)       同一个图层,不同部门的用户只能访问相关的要素

6)       ……

这是很常见的一些服务安全控制需求,针对这些需求,ArcGIS提供了完整的解决方案—数据库集成安全。

2  数据库集成安全

数据库集成安全是将ArcGIS Server安全机制与数据库的安全体系进行集成,使ArcGIS Server服务能够对数据源进行更细粒度的安全控制。目前数据库集成安全暂时只支持Oracle数据库。

2.1 访问粒度

通过数据库集成安全,可以达到以下三级访问粒度:

1)       控制用户是否有权限访问特定图层 / 表

2)       控制用户是否有权限访问特定属性 / 列

3)       控制用户是否有权限访问特定要素 / 记录

2.2 实现原理

要实现数据库集成安全,需要进行如下几个步骤:

1)       建立与Server角色对应的数据库角色

2)       建立与Server用户对应的数据库用户

3)       将对表、列、记录的访问权限授予数据库角色

3  如何实现

3.1 图层访问控制

3.1.1 创建地图编辑账户

为了支持数据库集成安全,编辑地图的用户需要具备所需的数据库权限。因此首先创建地图编辑用户(使用数据库管理员账户创建),SQL语句如下:

CREATE USER mapeditor IDENTIFIED BY mapeditor
DEFAULT TABLESPACE huangdsde
TEMPORARY TABLESPACE temp;
然后给用户授予必需的权限:

GRANT CONNECT, RESOURCE TO mapeditor;

注意:这里的用户名必须采用小写格式。

3.1.2 数据入库

首先使用mapeditor用户连接SDE数据库,然后将所用到的几个图层导入SDE中,如下图:

本例涉及到如下几个图层数据:

GEO_REGION(三级流域)、GEO_WATERBYDOY_EDGE(水系轴线)、GEO_TITIAN(梯田)、GEO_UD_WS(地下水水源地)、GEO_SUR_WS(地表水水源地)、GEO_WM_CO(水利行业单位)、GEO_HEHU_PWK(排污口)、GEO_HEHU_QSK(取水口)、GEO_OS_STATION(观测设施)。

3.1.3 创建地图服务账户

为了与数据库安全集成,需要为每个ArcGIS Server Web服务用户创建对应的数据库账户。本文创建两个数据库用户,分别是供水单位普通员工“huangdong”和业务员“yelloweast”,SQL语句如下:

--供水单位普通员工
CREATE USER huangdong IDENTIFIED by huangdong
DEFAULT TABLESPACE huangdsde
TEMPORARY TABLESPACE temp;
--为huangdong赋予数据库访问权限
GRANT CONNECT,RESOURCE TO huangdong;
--授权huangdong通过mapeditor访问SDE数据
ALTER USER huangdong GRANTCONNECT THROUGH mapeditor;
 
--供水单位业务员
CREATE USER yelloweast IDENTIFIED by yelloweast
DEFAULT TABLESPACE huangdsde
TEMPORARY TABLESPACE temp;
--为yelloweast赋予数据库访问权限
GRANT CONNECT,RESOURCE TO yelloweast;
--授权yelloweast通过mapeditor访问SDE数据
ALTER USER yelloweast GRANT CONNECT THROUGH mapeditor;
注意:这里的用户名必须采用小写格式。

3.1.4 为用户赋予图层访问权限

接下来需要为上述两个用户赋予对图层的访问权限,首先是创建相应的角色,为角色赋予图层访问权限,然后再将角