将 ArcGIS Server 安全性与 Oracle 数据库相集成
当用户请求使用某一 Oracle 数据库中数据的 GIS 资源时,ArcGIS Server 可将用户的标识向下传递到数据库,从而能够强制进行基于用户标识的访问控制。此功能目前不适用于其他数据库系统。
使用数据库级别的安全性时,除了或代替 ArcGIS Server Web 服务的权限,可对用户授予对数据库中的表格(和/或列和行)的权限。按照下面的说明进行操作以配置 Oracle 数据库的集成安全性。
为地图制作者创建一个数据库帐户
要支持集成安全性,地图文档的制作者必须具备所需的数据库权限。您需要定义用于制作地图文档的数据库帐户。作为数据库管理员,可通过如下方式创建权限并将其分配给将负责制作地图的用户:
CREATE USER <map author> IDENTIFIED BY <map author password>
DEFAULT TABLESPACE <tablespace_name>
TEMPORARY TABLESPACE <temp_tablespace_name>;
GRANT CONNECT, RESOURCE TO <map author>;
有关用于创建用户的附加信息和要求,请参阅 Oracle 文档。
为 ArcGIS Web 服务用户创建一个数据库帐户
对于要使用的集成安全性,每个 ArcGIS Web 服务用户都必须具有一个相应的数据库帐户。作为数据库管理员,可以为将访问 ArcGIS Web 服务的每个用户创建数据库帐户。还需要通过地图制作者的数据库帐户授予每个用户连接权限。
CREATE USER <ArcGIS Web user> IDENTIFIED by <ArcGIS Web user>
DEFAULT TABLESPACE <tablespace_name>
TEMPORARY TABLESPACE <temp_tablespace_name>;
GRANT CONNECT,RESOURCE to <ArcGIS Web user>;
ALTER USER <ArcGIS Web user> GRANT CONNECT THROUGH <map author>;
CREATE USER "<domain name>\<user name>" IDENTIFIED by <user name>
可根据需要对每个创建的数据库帐户授予权限,以与用户被授予的 Oracle 地理数据库的使用权限相一致。以下示例中定义了两个角色,以便向 ArcGIS Web 服务用户授予权限。定义的第一个角色可以使数据库在两个地理数据库图层中进行选择(查看数据的权限),第二个角色可以编辑图层。
--Role for displaying boundary layers
CREATE ROLE sel_boundary_role NOT IDENTIFIED;
GRANT SELECT ON <map author>.States TO sel_boundary_role;
GRANT SELECT ON <map author>.Counties TO sel_boundary_role;
GRANT sel_boundary_role to <user one>;
-- Role for displaying transportation layer
CREATE ROLE sel_trans_role NOT IDENTIFIED;
GRANT SELECT,UPDATE,INSERT,DELETE ON <map author>.Roads TO sel_trans_role;
GRANT sel_trans_role to <user two>;
还可以配置 Oracle 数据库中各行(要素)和各列(属性字段)的权限。有关详细信息,请参阅 Oracle 数据库文档。
制作文档并将其发布到 ArcGIS Server
您可以使用 ArcMap 创建文档。在添加地理数据库资源时,需要使用定义地图制作者中介绍的地图制作者数据库帐户的凭据。将地图文档发布至 ArcGIS Server。请注意,地图服务功能(例如 WMS 和 KML)将强制实行与标准 ArcGIS Web 服务 (SOAP/REST) 相同的安全性限制。
启用 Oracle 的集成安全性
定义数据库帐户后,需要在 ArcGIS Server 标识存储中创建与 Oracle 用户和角色完全匹配的用户和角色。要添加新用户,请参阅在管理器中添加新用户。要添加新角色,请参阅在管理器中添加新角色。
在 ArcGIS Server 标识存储中创建了用户和角色后,您将需要配置 ArcGIS Server 以将用户标识向下传递到 Oracle 数据库。要启用数据库集成安全性,请按照下面的步骤进行操作:
- 打开 ArcGIS Server 管理员目录 (http://myserver:6080/arcgis/admin) 并以主站点管理员身份或具有管理访问权限的用户身份登录。
- 单击系统 > 属性 > 更新。
- 在属性文本框中,输入下面的 JSON 代码:
{"pushIdentityToDatabase" : "true" }
- 单击更新保存更改。
测试集成安全性
创建一个使用 ArcGIS Web 服务并支持集成安全性的 Web 地图应用程序。在 Web 浏览器中打开该 Web 应用程序。只有用户授予权限的图层/要素应该在 Web 应用程序中显示。通过创建使用不同用户凭据的新的 Web 地图应用程序,您可以重复进行此测试。