ArcGIS Server安全机制dotNET版.docx
《ArcGIS Server安全机制dotNET版.docx》由会员分享,可在线阅读,更多相关《ArcGIS Server安全机制dotNET版.docx(21页珍藏版)》请在冰豆网上搜索。
ArcGISServer安全机制dotNET版
第一篇:
ArcGISServer9.3安全管理机制(dotNET版)
来源:
http:
//bbs.esrichina-
一、概览
1连接ArcGISServer的两种方式
(1)Local:
对于此种连接方式,客户端(如Desktop)直接通过LocalConnection连接到GISServer(SOM&SOC),AGS通过Windows用户组保证安全性,即agsusers和agsadmin组。
添加到agsusers用户组中的成员可以使用GISServer,添加到agsadmin用户组中的成员可以管理agsserver。
9.2和9.3中都采用此种方式来保证GISServer的安全性。
(2)Internet:
对于此种连接方式,客户端(Desktop,Explorer或Web浏览器)通过www方式链接到WebServer(WebServices&WebApplications)。
AGS通过ArcGISServerManager来管理WebServer的安全性。
如图:
2控制资源的访问权限
对于WebApplications,不同的用户对于app的访问权限不同。
比如,分析人员可以访问用于地图分析的webapp,而制图人员可以访问用于地图编辑的webapp;对于WebServices,不同的用户对于各种services的访问权限也不同。
比如,所有用户都可以使用一台GISServer上的用于地图浏览的service,而只有分析人员能够使用具有地图分析功能的service,制图人员则可以访问用于地图编辑的service。
如图:
3AGS通过三个步骤来实现自己的安全机制。
Users&Roles
用户&角色。
将不同需求的用户赋予不同的角色(将用户分组),同一个Role的用户拥有相同的权限。
Authentication
识别。
通过用户名和密码来识别用户身份。
Authorization
授权。
根据识别出来的用户身份赋予其相应的权限。
4存储Users&Roles的途径:
Windows,SQLServer,自定义途径。
(1)Windows:
如采取此种方式,则相同roles的用户分到同一用户组中。
Authenticate(用户身份识别)由IIS来完成。
一般对局域网用户采取此种方式,因为本机上可能已经存储了网内的账户信息。
通过计算机管理,本地用户和组来操作。
如图:
首先禁用匿名账户访问,然后根据需求使用下面不同的选项。
(2)SQLServer:
将用户和角色信息存储在SQLServer数据库中(一般是SQLServer2005Express,因为VS开发环境附带此数据库;Server的安装盘上也有)。
通过ArcGISServerManager来操作。
Authentication的工作由ASP.NET完成。
具体操作:
进入manager,左侧security,configurelocationsuseSQLServer。
如图:
之后具体操作可根据屏幕提示完成。
(3)自定义途径:
如OracleProvider或XMLProvider。
Authentication的工作由ASP.NET完成。
如果自定义的方式提供了相应api,则可以在agsmanager中进行操作,否则使用与之配套的工具进行操作。
获得了customprovider后,通过修改ags的安全配置文件,在manager中增加操作选项。
具体请参见帮助。
略。
至此,完成了对用户身份鉴别的准备工作。
为方便后面描述,我们在manager中,security,roles中创建browser,analyst,editor三个角色,在security,users中创建一个user1用户(用户密码至少由7个字符组成,并且须包含字母数字意外的字符,如_,#,$,%等),将此用户添加到browser角色中。
如图:
二、WebApplicaitons的安全管理
1定义用户与角色。
(见上一节内容)
2设置webapp权限。
权限存储在app本身中,通过web.config来赋予不同角色不同的访问权限。
如图:
此图中,浏览器发出请求,根据user存储位置的不同,来判断是由IIS还是ASP.NET来完成识别用户身份和角色的工作;然后由ASP.NET根据用户身份赋予其一定权限来访问webapp。
需要注意的是,根据前面的设置,如果是由IIS完成Authentication,则需要禁用IIS中的匿名用户访问;如果是由ASP.NET完成Authentication,则可以继续启用IIS的匿名用户访问。
接下来的操作:
manager中,application,点击需要进行安全管理的应用程序后面的小锁,在弹出的对话框中添加允许访问此应用程序的角色(用户组),则该角色中的所有用户可以通过登陆来访问此应用程序。
未添加的角色中的用户或其他用户不能访问此程序。
在前面添加的user1可以通过登陆访问此程序(设置了应用程序权限后,登陆页面由ags自动生成),其他用户则不能访问。
这样就实现了对WebApplicaitons的安全管理。
对webapp进行安全管理后的登陆界面:
此外,可以在manager中相应的Applicaiton高级选项中:
选择https(默认是http)来启用SSL加密web通信,从而有效保护通信不被泄漏。
这需要在IIS的设置中,选择DigestAuthentication一项。
如图:
这样就完成了对WebApplicaitons的安全管理工作。
三、对WebServices的安全管理
我们也可以对GISServer上发布的Services进行安全管理。
不同于对WebApp的安全管理,如果一个service启用了安全机制,那么安全验证由使用这个service的webapp来提供,这是自动完成的,而每一个使用此webapp的用户则不需要注意到这些细节(而对webapp进行管理之后,每个使用此webapp的用户都得通过登陆来通过安全验证以使用此webapp);如果是通过客户端比如Desktop来使用一个启用了安全机制的service,则需要在catalog中进行验证后使用,如图:
(addgisserver,useservices,填写用户名和密码。
是在manager中创建的用户和相应的密码)。
与前面相同,访问启用了安全管理的services首先要完成对用户身份的Authentication,根据users&roles存储位置的不同来决定是由IIS还是ASP.NET来完成此项工作;在Authentication之后,由SOM根据用户身份来赋予用户对service的访问权限。
如图:
首先需要说明一下GISServer中services的组织方式。
9.3中可以通过文件夹来组织发布的services,即将services发布到不同的文件夹中(不论是在manager或catalog中发布service的时候都有相应的选项)。
如图:
在上图中,根文件夹中有一个service(左下角的),每一个客户端都可以使用这个service;在根文件夹中创建了一个internal文件夹,里边有两个services。
而对internal这个文件夹赋予相应的role:
anylists,则只有anlysts角色的用户才能使用这个文件夹底下的services。
对右下角这个service(在internal文件夹中)赋予editor角色,则只有editor角色的用户才能访问这个服务,即使是analysts角色也不能访问。
可以看出,可以在文件夹和各服务两个级别对service进行安全管理,而每个service的设置会覆盖父文件夹的设置。
那么如何对services进行安全管理呢?
也是通过manager来完成。
首先需要在manager,security,settings中启用对services的安全管理,如图:
启用后:
注意:
一旦启用了对services的安全管理,则无法在manager中关闭这个功能(至于在什么地方来关闭它,我想……这和没有钥匙却要开保险柜是一个道理)。
因为设计中考虑,既然开启了对services的安全管理,则不允许任意一个可以访问manager的人来轻易禁用已经设计好或者已经在使用的安全管理了。
具体操作,可以在manager,services,managefolder,permissions中来添加对一个文件夹的角色管理,
也可通过每个service后面的小锁来针对单独的serivce进行角色管理。
至此,就实现了ArcGISServer9.3中的安全管理机制。
第二篇:
ArcGISServer9.3中权限管理(dotNet版)
来源:
http:
//bbs.esrichina-
要保障ArcGISServer的安全实际上要做两方面的工作:
Secruinglocalconnections(本地连接安全)和SecuringInternetconnectionsandwebApplications(英特尔连接和Web应用的安全)。
关于本地连接的安全控制这里不多说了,ArcGISServer的PostInstaller会自动创建agsuser和agsadmin两个组。
如果是Server的User的话,必须添加到agsuser组里,如果是Server的administrator的话,必须得加入到agsadmin组里。
其实,这部分的工作默认按照PostInstaller的步骤就可以完成。
所以这里关键是讨论后一部分的内容,如何利用ArcGISServer93的Manager来保障WebApplication和WebServices的安全,即用户和权限控制。
ArcGISServer安全机制如图:
登录到ArcGISServerManager,相较于9.2,会发现左侧的目录树多添加了一栏:
Security,如图:
展开Security,有三项,分别是Users,Roles和Settings。
在使用ServerManager所自带的权限管理之前,首先必须切换到Setting,对Location进行设置。
Location你可以指定放到SQLServer、Windows本地或者其它自定义的方式(包括其它的数据库和XML等)。
自定义的方式在这里就不说了,有兴趣的话,可以参照:
ServerExpress以及使用本地用户和组。
当然,在我们开始之前,有一些准备工作是需要做的。
(1)安装好ArcGISServer,包括Manager,WebServices以及TokenServices。
(2)安装SSL证书,使你的WebServer可以通过Https的方式来进行访问。
如果你操作系统是WindowsServer2003和windowsXP,你必须下载IIS6.0ResourceKit来安装数字证书,但这个证书是只供测试用。
1) 下载IIS6.0ResourceKit,并安装
2) 打开Start>Programs>IISResource>SelfSSL>SelfSSL,打开SelfSSL,在SelfSSL的命令行中敲入:
SelfSSL/V:
365/N:
CN=/T
3) 敲入exit
打开IIS,选择默认网站,点击选属性,选择目录安全性,你会发现此时查看证书一栏可以用了。
这样就说明SSL证书已经安装好了。
如图:
(3)如果你选用在SQLServerExpress中存储用户和角色,你还必须安装SQLServerExpress。
ArcGIS安装光盘中就带着。
直接安装即可。
首先,我们讨论将用户跟角色存储在SQLServerExpress中的情况
(1)Manager>Security>Setting>configue,将用户和角色存储到SQLServerExpress中。
如图:
首先出现的是选择用户的存储位置,我们选择SQLServer。
点击Connect,测试与SQLServerExpress的连接,这时要确保你的机器上安装了SQLServerExpress,并且SQLServerExpress的服务是启动的,如图:
将UsedTrustedConnection和AddEveryone,AnonymousandAuthenticatedUsersrolestodatabase勾起来。
在Createanewdatabase中输入新建的数据库的名字,当然也可以放到已经存在的数据库里。
选择Next,出现是否允许用户通过E-mail来重设密码,这里不选,如图:
点击完成,完成对Security存储位置的设置。
(2)Manager>Security>Users,我们要在这里为ArcGISServer添加一个权限用户。
选择AddUser,弹出添加用户的界面,填写相关的信息。
这里需要注意的是用户的密码,必须设七位以上,而且至少有一位是非字符的,如@,#,$,or%等。
如图:
(3)Manager>Secrurity>Roles,这里我们要为ArcGISServer添加一个角色,选择AddRole,弹出添加角色的界面,将步骤二所新建的用户添加到角色中去。
如图:
这样我们就能用所创建的用户和角色对WebApplication和WebServices进行权限管理了。
(4)WebApplication进行权限管理,Manager>WebApplication,选择某一个WebApplication中对应的权限设置的对话框,将Enablesecurityforthiswebapplication勾起来,将需要赋权限的值从左边选到右边的AllowedRoles中去,点击Save,如图:
这里打开刚刚设置的WebApplication,例如:
http:
//grace/securityapp2/,会出现登录对话框,如图:
(5)WebServices的权限管理。
Manager>Security>Settings。
首先要将SecurityforWebServicesEnable。
当你点击Enable按钮的时候,他会激活之后无法在页面上disable,没有关系,继续,我们在稍后会讲到如何disablesecurityforwebservices。
设置好了,Manager>Security>WebServices,用对WebApplication加密类似的方法对WebServices进行加密。
因为Manager页面上没有提供disablesecurityforwebservices的方法,这里介绍一下。
很简单,只要到ArcGIS的安装目录下,例如C:
\ProgramFiles\ArcGIS\server\system,打开server.dat文件,将true中的true改为false即可。
OK,关于用SQLServerExpress中存储用户和角色对ArcGISServer进行权限管理就讲到这里。
下面简单讲一下利用windows用户和组对ArcGISServer进行权限管理。
步骤跟上面也差不多,所以会论述得相对简单一些。
打用windows用户和组管理,新建一个组,testgp,然后新建一个用户test,并将其加入到testgp组中。
打开ArcGIS serverManager,切换到Security>Setting,将User和Role的Location选成Windowsusersandgroups。
然后用跟上面一样的方法对WebApplication和Services进行加密。
所不同的是,在对WebApplciation进行加密的时候,需要在IIS中将匿名访问去掉即可,但至少选择一种验证方式,我们这里采用的是集成windows身份验证,如图:
打开Manager>Application,跟SQLServer存储的操作是一样的,点击Save。
此时,再点击Manager>Application中的链接,就会弹出认证的对话框,输入正确的用户名和密码即可。
对WebServices的加密的操作也一样的
在确保输入的用户名跟密码正确的情况下,如果在认证对话框中一直输入用户跟密码通不过,那么原因是在你的windows的权限设置上,请检查以下几个方面。
(1)guest帐户是否启动,是否设置密码。
(2)gpedit.msc修改组策略:
是否在禁止从网络访问计算机中将guest用户删除。
(3)gpedit.msc安全策略:
是否默认XP系统是本地用户以来宾方式通过验证改为XP经典的以本地用户方式。