演练:以 SQL Server 用户和角色实现安全性
本演练将介绍如何实现 Web 应用程序和 GIS 服务的安全性。在本演练中,用户和角色存储在 Microsoft SQL Server Express 数据库中。SQL Server 是用于用户和角色的几个选项之一。当服务器用户位于 Internet 中时,通常会使用此选项;而当服务器用户位于本地网络中时,也可以使用此选项。
在本演练中,您将根据需要安装 SQL Server Express、在管理器中配置用户和角色的位置、为 Web 应用程序和 GIS Web 服务设置权限并启用 GIS Web 服务的安全性。
本演练将启用 GIS Web 服务的安全性。启用服务安全性后,您将需要管理所有服务的权限。仅当您准备继续管理权限时,才应启用安全性。
以下是本演练的步骤:
安装演练所需的先决条件
在继续执行本演练之前,可能需要安装以下项中的一个或两个:
- SQL Server Express: 如果尚未安装 Microsoft SQL Server Express(或者不确定是否已安装),请遵照安装 Microsoft SQL Server 2008 Express 中的说明。仅执行该部分,不执行以下部分。然后返回至本页面,继续进行演练。
- SSL 证书: 在本演练中访问受保护的 GIS Web 服务需要 Web 服务器支持 HTTPS 的使用,而这需要将“安全套接字层”(SSL) 证书安装在 Web 服务器中。如果您不确定是否已安装 SSL 证书,请参照确定是否已安装 SSL 证书中的步骤。如果尚未安装任何证书,必须执行以下一种操作:
- 向证书颁发机构请求证书。如果您的 Web 服务器是为客户提供应用程序或服务的生产服务器或面向公众的 Web 服务器,使用此选项很适合。有关详细信息,请参阅从证书颁发机构获取 SSL 证书并进行安装。
- 创建自己的证书以供本地使用。此选项仅适合开发和测试使用。有关信息和说明,请参阅使用自签名 SSL 证书。
- 禁用 SSL 的要求。此选项仅适合开发计算机使用。由于同 ArcGIS Server 一起安装的令牌服务不需要 HTTPS,因此密码将以明文形式通过网络进行传送,这样具有网络访问权限的任何用户即可将密码轻松捕获。客户端也可能向用户显示关于登录信息非安全传输的警告。要使用此选项,请参阅令牌服务所需的安全连接 (HTTPS/SSL) 中的说明。
在管理器中配置用户和角色位置
安装完先决条件后,使用管理器将 SQL Server Express 配置为用户和角色位置。
- 启动 ArcGIS Server 管理器并登录。
- 在管理器中,展开安全性面板并单击设置。
-
单击配置链接。
- 在打开的用户位置对话框中,选择SQL Server。单击下一步。
-
在指定 SQL Server 设置所用对话框的服务器文本框中,输入数据库服务器名称。
如果 SQL Server Express 安装在本地计算机中,则可使用 localhost。对于 SQL Server Express,请将 \SQLEXPRESS 添加到名称的末端,例如 localhost\SQLEXPRESS。
注:如果您已更改默认的 SQL Server Express 实例名称,请将 SQLEXPRESS 替换为您所选择的实例名称。
-
单击连接以显示可用数据库和选项的列表。
如果连接失败,请检查并确保数据库服务器正在运行、可通过网络进行访问以及用于登录管理器的帐户有权管理 SQL Server。
- 或者,选中使用信任的连接以允许运行 ASP.NET 的帐户通过 Windows 身份验证对用户进行验证和检查角色。如果您已经使用混合模式身份验证对 SQL Server 进行配置并需要输入 SQL 数据库登录信息,也可以取消选中使用信任的连接。如果情况允许,建议您使用信任的连接选项。
- 单击创建新数据库选项,然后输入名称(如 aspnetdb)。请确保已选中向数据库添加“所有用户”、“匿名用户”和“验证用户”角色选项。单击下一步。
- 在密码恢复面板中,将选项保留为未选中状态。如果需要输入恢复密码所需的邮件服务器的设置,可稍后重新运行该向导。单击完成。向导随即关闭,并在位置框中显示 SQL Server 用户和角色。
请注意,应将服务的安全性设置为未启用。此时不要启用安全性。您将在本演练的最后一步中启用安全性。启用安全性是最后一步,因为首先需要设置 Web 服务的权限。启用安全性之后,只有那些其角色已经过允许的用户才能访问 GIS Web 服务。
添加用户和角色
在指定应用程序或服务的权限之前,需要先添加一些用户和角色。
-
在管理器中,单击左侧的安全性选项卡,然后单击用户。如果只按上述步骤创建了数据库,则不会列出任何用户。
- 在用户 面板中,单击添加用户链接以显示用于添加新用户的对话框。
-
输入新用户的信息。以下是建议的用户信息,也可以输入您自己的用户信息:
- 用户名:staff1
- 密码:staff1$
- 电子邮件:staff1@yourcompany.com
- 安全性问题:您第一只宠物的名字是什么?
- 安全应答:Fido
警告:默认情况下,密码必须至少包含 7 个字符,并且至少有 1 个字符不是字母数字(例如,@、#、$ 或 %,但不能使用 &)。
- 由于尚未定义任何角色,因此将相关选项留空。单击添加以添加新用户。管理器返回至用户 列表并显示新用户。
- 添加另一个用户,如 engineer1。执行编写密码等操作。也可以添加更多用户。
-
单击安全性 部分中的角色链接。当前不存在任何角色。
- 在角色 面板中,单击添加角色链接以显示用于添加新角色的对话框。
-
输入角色的名称,例如 Staff。随后高亮显示您先前创建的用户(如 staff1),然后单击添加按钮将其添加到角色成员列表。
- 单击添加角色以添加角色并返回至角色 列表。新角色随后显示在列表中。
-
添加另一个角色(如 Engineers),然后将先前创建的第二个用户添加到此角色。
请注意,可以通过展开角色列表的方式显示角色的成员。
- 您也可以添加更多用户和角色。始终将每名用户至少添加到一个角色。服务和应用程序的权限基于角色而非单个用户。
保护 Web 应用程序
现在,即可通过限制指定角色的访问权限的方式来保护 Web 应用程序了。
-
在管理器中创建新的 Web 应用程序。
应用程序可以是简单的、只提供地图服务并且没有额外的工具或任务的应用程序。如果需要创建应用程序,可遵照创建 Web 应用程序教程中的说明进行。您可以使用一个现有的应用程序,但是此应用程序的所有用户都需要以本演练过程中所允许的角色用户身份登录。
- 由于用户将使用网页上的表格进行登录,因此,您可以通过要求用户使用 HTTPS 来连接应用程序的方式对登录帐户加以保护。仅当按先决条件中的说明安装完 SSL 证书之后,才能执行此操作。创建应用程序时,您可以在管理器中为该应用程序的 URL 指定 HTTPS,具体方法是:在第一个向导面板中,选中高级选项中的 https。
-
在管理器中,单击应用程序列出 Web 应用程序。在列表中找到要保护的应用程序。
在权限列中,可以看到未锁定的图标 。这表明使用此应用程序不受限制,因而用户无需登录即可使用此应用程序。
- 单击权限图标 ,这将显示 Web 应用程序的权限 对话框。
- 选中启用此 Web 应用程序的安全性复选框。这将启用可用角色列表和允许角色列表。
-
高亮显示可用角色列表中的 Staff 角色(或上述步骤中所添加的其他角色)。单击添加按钮将此角色添加到允许的角色列表中。
- 单击保存保存权限并返回到应用程序列表。请注意,此时的权限图标将变为锁定的图标 ,这表示现在需要登录才能访问此应用程序。
-
通过单击应用程序在 Web 应用程序列表中的 URL 超链接来测试应用程序。
应用程序将在新的浏览器窗口中打开,然后重新定向到“登录”页面。输入经您允许成为角色成员的用户(例如上述步骤中所添加的用户 staff1)的用户名和密码。登录成功后,应用程序将前进到 ArcGIS Server Web 应用程序页面。
-
在 Web 应用程序页面中,单击注销链接。
应用程序返回到登录 页面。或者,您可以尝试使用另一个在角色成员资格方面不被允许的用户登录帐户进行登录。您将无法登录。此时请关闭应用程序并返回到管理器。
为 GIS Web 服务设置权限
除了保护 Web 应用程序之外,您还可以使用管理器来限制对 GIS Web 服务的访问。本部分将介绍如何设置服务权限。只有您完成以下有关应用服务安全性的部分时,才会真正实施这些权限。此操作流程用于配置服务权限并应用安全性,从而使用户可以在整个安全过程中继续访问服务。
本演练的目的是配置安全性,以便在默认情况下,用户无需使用登录帐户即可访问服务。然后,您将对某些服务进行设置以要求用户使用登录帐户来访问服务。通过将某个文件夹的访问权限限定给指定角色可完成此操作。此方法可适用于安全服务和开放服务相结合的站点。如果您的组织希望将所有服务限制为使用登录帐户访问,那么,您可能需要使用与下述方法不同的方法。
- 在管理器中,确保服务器的根文件夹中至少有一个服务。如果没有任何服务,请添加一个服务。可参阅教程发布地图服务创建服务。
-
向服务器的服务添加文件夹,方法是:单击管理文件夹,然后在弹出的下拉列表中单击添加。
在添加文件夹文本框中输入文件夹名称,例如 SecureServices。单击确定添加此文件夹。
- 将一个服务添加到此新文件夹中。使用发布 GIS 资源添加服务,同时确保指定 SecureServices 文件夹的位置。(也可以使用添加新服务 向导,但请确保服务位置列表中显示 SecureServices 文件夹。还可以使用 ArcCatalog 来添加服务。)可根据需要在本演练结束之后删除服务和文件夹。
- 将根文件夹的权限设置为允许任何用户访问服务,无论用户是否提供登录帐户。当您希望默认情况下允许所有用户访问服务但某些服务或文件夹需要有效登录时,此方法非常合适。要设置此权限,请确保服务位置框中显示的是服务器名称(根),这里的服务器名称是服务器的计算机名称(必要时,单击下拉列表选择此项)。然后单击管理文件夹,并从下拉列表中选择权限(为便于理解,请参见上图)。弹出的“权限”对话框中将显示文件夹名称(本例中为根)。
-
在权限对话框中,选择“任何人”角色,然后单击添加。
“任何人”角色将移动到允许的角色列表中。不必添加任何其他角色,因为“任何人”角色涵盖了所有用户(无论是否提供登录帐户)。请注意关于服务安全性尚未启用的警告消息;您将在下一部分中启用安全性。单击保存保存权限列表。
- 限制对之前创建的文件夹的访问权限。在服务位置列表中,选择文件夹 (SecureServices),单击管理文件夹,然后单击权限。
- 在权限 对话框中,单击允许的角色列表中的“任何人”角色,然后单击移除。角色将被移动到可用角色列表中。
- 接下来,单击允许的角色,例如 Staff。可根据需要将多个角色添加为允许的角色。单击保存保存权限列表。
现在已经为服务配置了权限。然而,安全性尚未实施。也就是说,此时任何用户都可以在不登录的情况下访问 SecureServices 文件夹中的服务。下一部分将启用安全性,这将强制执行已配置访问权限。
对 GIS Web 服务应用安全性
保护 GIS Web 服务的最后一步是对服务应用安全性。此步骤将对 GIS Web 服务进行限制,以便只有那些其角色已经过允许的用户才能访问此类服务。在执行此步骤之前,已经应用的所有权限实际上并未生效并且任何用户都可以访问任何服务。您不应该在未配置先前部分中所介绍的权限之前执行这些步骤。
警告:启用了服务安全性之后,不能在管理器中禁用此功能(必要时,请参阅“服务器帮助”页面有关手动禁用安全性的信息)。服务安全性应该是一个单向的过程。如果尚未做好启用 GIS Web 服务安全性的准备,可以跳过本演练的这部分。
- 在管理器中,单击左侧的安全性选项卡,然后单击设置。
-
在安全性设置 面板中,读取 GIS 服务的安全性下的信息。请注意,安装 ArcGIS Server 时,安全性会被设置为未启用。
- 单击启用。将显示一条消息,提醒您在启用服务安全性之前设置权限。单击启用服务的安全性按钮进行确认。返回到安全性设置 面板,现在指示器将显示安全性已启用。
- 单击管理器左侧的服务选项卡。在服务列表中,权限图标现在显示为锁定图标 。如果看到一个带有红色惊叹号的图标 ,它表示服务有一个空的权限列表。所有用户都无法访问这些服务,直到将至少一个角色添加到每个服务的允许的角色列表中为止。
- 要验证服务的安全性是否生效,可使用 ArcCatalog 连接到您的服务。在本地计算机或可以访问 ArcGIS Server 的 Web 服务器的计算机上启动 ArcCatalog。
- 在 ArcCatalog 中,展开目录树中的 GIS 服务器结点。双击添加 ArcGIS Server 项。
- 在添加 ArcGIS Server 对话框中,单击使用 GIS 服务。单击下一步。
- 在下一个面板中,单击 Internet 作为连接类型,然后输入您服务器的 URL,例如 http://myserver/arcgis/services。对于此连接,请将身份验证对话框留空。单击完成。此时该对话框将关闭,并在 GIS 服务器列表中出现一个新的连接(例如 arcgis on myserver)。
- 展开此节点。在服务器的根目录下查看服务。然而,在先前的连接中保护的文件夹 (SecureServices) 此时不可见。由于您已允许“任何人”角色访问根文件夹,因此根文件夹中以及未覆盖根文件夹设置的任何文件夹中的服务对所有用户(即使没有登录帐户)都是可见的。由于没有使用正确的登录帐户进行连接,因此 SecureServices 文件夹对此连接不可用。
-
通过执行上述步骤中的 6 到 8 在 ArcCatalog 中添加另一个 GIS 服务器连接。输入相同的服务器 URL,但对于步骤 8,在连接对话框的身份验证部分中输入用户名和密码时,请使用上述步骤中为特定用户(例如 staff1)创建的登录信息,该特定用户属于能够访问 SecureServices 文件夹的角色中的用户。单击完成添加此连接。
- 展开此连接(例如 arcgis on myserver [2])。现在您将看到 SecureServices 文件夹以及允许“任何人”访问的所有服务和文件夹。
- 完成后,关闭 ArcCatalog 和管理器。
您的 Web 服务现已受到保护。允许特定角色访问的服务仅对此类角色中的用户可用。如您所见,对于服务或包含的文件夹,向允许的角色的列表中添加“任何人”角色之后,无法提供登录帐户的用户便可对服务进行访问了。
可以在各种不同的客户端(包括 ArcGIS Desktop、Web ADF 应用程序和 JavaScript API 应用程序)中使用受保护的服务。要将一个受保护的服务添加到 Web ADF 应用程序,可添加一个新的 ArcGIS Server Internet 连接,并在管理器或 Visual Studio 连接对话框的“标识”文本框中输入相应的用户名和密码。
如有必要,可移除本演练过程中所创建的所有服务、文件夹、用户或角色。请记住,一旦启用了服务的安全性,就必须管理所有文件夹和服务的权限。如果添加了一个服务但未添加任何允许的角色,所有的用户都将无法访问此服务(将显示一个用于提醒此问题的警告图标 )。确保至少有一个默认权限集的一个方法是将权限添加到根文件夹或子文件夹的包含文件夹中。由于服务可以继承其包含文件夹的权限,因此配置服务安全性会变得更为容易。