在保护 ArcGIS Server 时,务必使 ArcGIS Server 也在安全环境下运行。可遵循多种安全性最佳做法,以确保获得最高安全性。
请求并配置自己的服务器证书
ArcGIS Server 预先配置了自签名的证书,这样,可初始测试服务器并帮助您快速验证是否安装成功。然而,在绝大多数情况下,组织在使用服务器之前需要从受信任的证书颁发机构 (CA) 请求证书并配置服务器。这可能是由您的组织颁发的域证书或 CA 签名的证书。
与 ArcGIS Server 一样,ArcGIS Enterprise 门户也预先配置了自签名证书。如果要将您的站点与门户联合,应从受信任的 CA 请求证书并配置门户以进行使用。
配置来自受信任颁发机构的证书对于基于 Web 的系统来说是一种安全的方法,同时也将避免用户遇到任何浏览器发出的警告或其他异常行为。如果在测试期间选择使用 ArcGIS Server 和 ArcGIS Enterprise 门户随附的自签名证书,则将遇到以下问题:
- 有关不受信任站点的 web 浏览器、ArcGIS Desktop 或 ArcGIS Pro 警告。通常,Web 浏览器遇到自签名证书时将显示警告消息并要求您确认是否继续前往该站点。只要您使用自签名证书,许多浏览器就会显示警告图标或对地址栏标红。
- 无法在门户的 Map Viewer 中打开联合服务、无法将受保护的服务项目添加到门户、无法在联合服务器中登录到 ArcGIS Server Manager 以及无法从 ArcGIS Maps for Office 连接到门户。
- 配置实用程序服务、打印托管服务以及从客户端应用程序访问门户时出现异常行为。
警告:
以上使用自签名证书时将遇到的问题列表并不详尽。必须使用 CA 签名证书全面测试和部署门户。
有关如何使用 CA 签名证书配置 ArcGIS Enterprise 的说明,请参阅以下主题:
限制文件权限
建议设置文件权限,以便仅授予对 ArcGIS Server 安装目录、配置存储和服务器目录的必需访问权限。访问 ArcGIS Server 软件需要具备的唯一帐户是 ArcGIS Server 帐户。此帐户用于运行软件。您的组织可能需要为更多帐户授予访问权限。请记住,ArcGIS Server 帐户必须具有对安装目录、配置存储和服务器目录的完全访问权限,站点才能正常工作。
安装 ArcGIS Server 时的文件权限仅允许运行 ArcGIS Server 的帐户访问这些文件。ArcGIS Server 创建的配置存储和服务器目录等文件已经锁定,因此,只有运行 ArcGIS Server 的帐户才可访问这些文件。
对配置存储具有写入权限的任何帐户都可更改 ArcGIS Server 设置,而这些设置通常只可由系统管理员进行修改。如果使用内置安全存储来维护用户,则配置存储将包含这些用户的加密密码。在此情况下,还应限制对配置存储的读取权限。
如果具有受保护的地图或地理处理服务,务必锁定服务器目录的文件权限,以确保未授权帐户无法获取对这些地图和地理处理作业输出的访问权限。
禁用主站点管理员帐户
主站点管理员帐户是在 ArcGIS Server Manager 中首次创建站点时指定的帐户。仅 ArcGIS Server 可识别其名称和密码;该帐户不是操作系统帐户,且与您的标识存储中的用户帐户分开管理。
建议禁用主站点管理员帐户。这样,可确保除了在标识存储中指定的组和角色之外,无法采用其他任何方式管理 ArcGIS Server。有关完整说明,请参阅禁用主站点管理员帐户。
定义用于生成 ArcGIS 令牌的共享密钥
ArcGIS 令牌是加密信息字符串。 共享密钥是用于生成此加密字符串的密钥。 共享密钥越复杂,恶意用户越难解密和破译共享密钥。 如果用户能够破译共享密钥,复制 ArcGIS Server 的加密算法,并获取授权用户的列表,该用户将能够生成令牌,并使用此特定 ArcGIS Server 中的任何受保护资源。
在定义共享密钥之前,请考虑以下事项:
- 共享密钥的长度应为 16 个字符(超出 16 个字符的任何字符均不会采用)。 建议使用随机字符序列作为密钥。 任何字符都可以使用,包括非字母数字字符。
- 不应将密钥设为字典中的单词或容易猜出的常用值。 由于无需记住密钥或在其他位置使用该密钥,因此设置密钥与设置密码不同,复杂的密钥值并不会对用户造成不便。
- 可使用高级加密标准 (AES) 通过共享密钥对令牌加密,该标准也称作 Rijndael。 密钥中的 16 个字符表示用于加密的 128 位。 有关加密和 AES 的详细信息,请查阅安全性参考资料,或咨询组织内具有安全性和密码学专业知识的人员。
- 在高度安全的环境中,建议定期更改共享密钥。 切记,如果更改共享密钥,可能需要更新应用程序才能使用新的共享密钥。 一旦更改共享密钥,现有的全部嵌入式令牌都将变得无效。
有关详细信息,请参阅关于 ArcGIS 令牌。
安全传输 ArcGIS 令牌
为了防止拦截和错误使用令牌,建议使用采用 HTTPS 的安全连接。使用 HTTPS 可确保恶意用户无法拦截客户端发送的用户名和密码以及 ArcGIS Server 返回的令牌。要了解详细信息,请参阅在 ArcGIS Server 上配置 HTTPS。
在构建使用 GET 请求访问 Web 服务(这些服务受基于 ArcGIS 令牌的身份验证保护)的自定义 ArcGIS 客户端应用程序时,建议使用 X-Esri-Authorization 令牌头而非查询参数来发送令牌。这可以防止网络中介(如代理、网关或负载均衡器)获取令牌。以下是 HTTP GET 请求以 X-Esri-Authorization 令牌头发送令牌的示例: GET https://arcgis.mydomain.com/arcgis/rest/services/SampleWorldCities/MapServer?f=pjson HTTP/1.1
Host: arcgis.mydomain.com
X-Esri-Authorization: Bearer xMTuPSYpAbj85TVfbZcVU7td8bMBlDKuSVkM3FAx7zO1MYD0zDam1VR3Cm-ZbFo-
如果 ArcGIS Server 使用 ArcGIS Server 身份验证而非 Web 层身份验证(IWA、HTTP BASIC、PKI 等),则可以使用标准 HTTP 授权令牌头代替 X-Esri-Authorization 令牌头: GET https://arcgis.mydomain.com/arcgis/rest/services/SampleWorldCities/MapServer?f=pjson HTTP/1.1 Host: arcgis.mydomain.com
Authorization: Bearer xMTuPSYpAbj85TVfbZcVU7td8bMBlDKuSVkM3FAx7zO1MYD0zDam1VR3Cm-ZbFo-
使用标准化查询
ArcGIS Server 中含有一个安全选项(即标准化查询),能够提供更好的保护以防止 SQL 注入攻击。默认情况下,会启用该选项。
如果您是服务器管理员,建议将这个安全选项保留为启用状态,然后指导应用程序开发人员构建使用独立于数据库的语法的 WHERE 子语句。禁用这一选项后,系统会更加容易遭受 SQL 注入攻击。
有关详细信息,请参阅关于标准化查询。
禁用服务目录
可通过禁用服务目录来减少从 Web 搜索中找到、浏览或者通过 HTML 表单查询到您的服务的可能性。禁用服务目录还可以加强对跨站点脚本 (XSS) 攻击的防护。
是否禁用服务目录取决于站点的用途以及用户和开发人员依靠它来进行导航的程度。禁用服务目录后,您可能需要准备创建可用于站点的服务的其他列表或元数据。
有关禁用服务目录的说明,请参阅禁用服务目录。
限制跨域请求
跨域请求用于许多系统攻击中。建议将 ArcGIS Server 服务限制为仅用于您所信任的域中托管的应用程序。有关详细信息,请参阅限制对 ArcGIS Server 的跨域请求。