有关安全性的多个 ArcGIS Server Web 实例
一个 ArcGIS Server 实例仅支持一个用户位置、角色位置及身份验证方法的组合(有关用户和角色的详细信息,请参阅有关设置用户和角色的概述)。如果需要支持多种类型的身份验证方法或用户/角色存储,可以设置多个 ArcGIS Server 实例。
通常,每个 ArcGIS Server 系统均包含一个与服务器对象管理器 (SOM) 相连的实例。本部分描述了将多个 ArcGIS Server 实例连接到一个 SOM 的配置。
例如,您在内部网络中可能拥有多个用户,并想要允许这些用户使用其 Windows 帐户登录。但是,对于 Internet 上的外部用户,您想要在 SQL Server 数据库中设置帐户。由于一个 ArcGIS Server 实例仅支持一个用户位置,因此您将为每个用户类型设置单独的实例。
管理多个实例时需要考虑以下两个问题:
- 与服务之间建立的 Internet 连接的权限存储在 SOM 中。如果有多个实例使用 SOM,这些实例将共享同一个权限集。因为权限是基于角色进行分配的,所以您需要精心地管理权限,以使每个实例中的角色正常工作,并且用户也因而正常工作。有关详细信息,请参阅以下部分:管理具有多个实例的权限。
- 如果为某个服务启用了 Web 制图服务 (WMS) 功能,则所有实例都将共享该服务的功能信息。服务的 OnlineResource URL 将被设置为这些实例之一。有关详细信息,请参阅知识库文章 35672,WMS 功能中的 OnlineResource URL 为何使用不同的 ArcGIS Web 实例?。
添加 ArcGIS Server 实例
<ArcGIS Server 安装目录>\DotNet\AddInstance.exe 中包含一个用于添加和移除实例的实用程序。从 Windows 资源管理器中双击这个可执行程序,可打开此工具。按照向导中的说明添加新实例。
为实例选择的名称将反映在其他用户访问实例时所使用的 URL 中。例如,如果输入 ArcGIS2,则服务 URL 可能为 http://myserver/ArcGIS2/services。
完成向导后,可能需要几分钟的时间来创建实例。如果您决定稍后将某个实例移除,则可以使用同一个实用程序。
使用新实例
新实例拥有自己的管理器。要访问该管理器,请转到开始 > (所有)程序 > ArcGIS > ArcGIS Server for the Microsoft .NET Framework > ArcGIS Server 管理器 <实例名称>。使用新管理器为新实例配置用户和角色存储。您将注意到,服务 面板中列出的服务及其权限与原始管理器中列出的相同。有关在多个实例中管理权限的重要信息,请参阅下一部分。
新实例不会列出使用其他实例创建的 Web 应用程序。每个实例均会维护使用该实例创建的各自的应用程序列表。
每个实例均位于创建该实例的 IIS Web 服务器目录下。例如,如果您在端口 80 上的默认网站中创建了一个名为 ArcGIS2 的新实例,并且 IIS 服务器使用默认位置,那么该实例的位置将是 C:\Inetpub\wwwroot\ArcGIS2。新实例所包含的文件夹集(其中包括 Rest、Services 和 Security)将与原始实例所包含的文件夹集相同。
管理具有多个 ArcGIS Server 实例的权限
因为权限存储在 SOM 中,所以共享 SOM 的多个 ArcGIS Server 实例也将共享相同的服务权限集。单击服务或文件夹的权限按钮时,您将看到通过实例的管理器添加的角色权限。
必须对文件夹和服务的权限加以管理,以便这两个实例中的用户可以对服务进行相应的访问。由于权限是基于角色而非用户进行分配的,因此必须确保所需服务允许每个实例的角色。因为使用其中任何一个管理器的管理员都能看到相同的允许角色列表,所以可能会误将另一个管理器中所允许的角色移除。
建议您采用以下两种策略之一来管理角色和权限:
- 在两个实例中均使用相同的角色名称,然后将每个实例中的用户添加到这些共享角色。如果您想要允许两个实例中的用户访问具有相同权限规则的服务,这将非常适合。例如,您可以在服务器上将名为“规划员”的组添加到 Windows 组中,然后将 Windows 用户添加到该组。接下来,在将 SQL Server 用于角色的管理器中,您还要添加一个“规划员”角色并向该角色添加 SQL Server 用户。这样,当您允许“规划员”角色访问某个服务时,两个实例中的用户便都可通过一个“规划员”权限规则来使用该服务。
- 针对两个实例中的角色使用互不相同且易于识别的名称。当您希望每个实例中的用户具有不同的规则时,这将非常适合。例如,您可以为内部用户创建一个名为“内部编辑者”的 Windows 组,在管理器中设置为将 SQL Server 用于角色,然后添加一个名为“外部观察者”的角色。“内部”和“外部”前缀用于指示每个角色的不同位置,这样一来,在一个实例中使用管理器的某个用户便不会误将为另一个实例中的用户所添加的角色移除。
请注意,当其中一个实例使用 ASP.NET 成员时,三个内置角色(任何人、经验证的用户和匿名用户)将应用于所有实例。例如,假设您正在针对一个实例使用 Microsoft SQL Server 成员资格提供程序,而针对另一个实例使用 Windows 操作系统用户和组。这样,当您授予对 SQL Server 实例中的根 Web 服务文件夹的访问权限时,所有 Windows 用户在与网络建立连接后便可看到所有 Web 服务。