Skip To Content

安全性最佳做法

在保护 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 的说明,请参阅以下主题:

扫描跨站点脚本攻击

跨站点脚本 (XSS) 攻击会在现有网页中加入并运行代码。攻击者通常诱骗受害者打开包含攻击者提供的数据或输入的该页面。在 ArcGIS Server 站点中,该输入或数据可以是由要素服务返回的要素。

ArcGIS Server 可以扫描要素中是否存在潜在的 XSS 攻击。当通过要素服务添加或更新要素时以及当将要素发送到客户端应用程序时,它可以对这些要素进行扫描。但是,扫描要素中是否存在恶意代码时,可能导致误报或禁用要素中包含的 HTML 弹出窗口的合法 HTML。可以按服务对扫描行为进行配置。

默认情况下,在服务创建后,通常将它们配置为扫描编辑中是否存在潜在的脚本并阻止它们,但不会扫描已从要素服务中检索的要素。攻击者可通过将要素编辑成跳过扫描来绕过这种编辑扫描,例如通过 SQL 直接编辑数据库。因此,最安全的做法是将服务配置为扫描所有要素。扫描检索到的每个要素中是否存在脚本可能导致性能降低,但建议采用这种安全做法。

逐个服务更改值可能加大管理难度,因此,首选方法是使用 featureServiceXSSFilter 系统属性定义一个默认值。此系统属性在创建新服务时使用。它对现有服务没有影响,可以在服务创建后对其进行覆盖。

要设置此系统属性,请登录到 ArcGIS Server Administrator Directory 然后,转至系统 > 属性资源。属性由 JSON 对象表示。需要复制现有 JSON 对象,然后通过向该 现有 JSON 对象添加 featureServiceXSSFilter 属性对其进行修改。

featureServiceXSSFilter 属性 可以设置为 inputinputOutputinput 值为默认值;用于告知 ArcGIS Server 将新要素服务配置为扫描编辑。inputOutput 值告知 ArcGIS Server 将新要素服务配置为扫描编辑并扫描返回的要素。

如果想要覆盖特定的服务设置, 必须使用 ArcGIS Server Administrator Directory,找到该特定服务,然后进行编辑。在单个要素服务上使用的三个属性如下:

  • xssPreventionEnabled 可用于扫描要素中是否存在脚本和代码。建议始终将此项设置为 true
  • xssPreventionRule 可以设置为 inputinputOutput。始终会扫描编辑,但仅当值为 inputOutput 时才会扫描传出要素中是否存在脚本。这将覆盖整个系统的 featureServiceXSSFilter 属性。
  • xssInputRule 将确定检测到代码时执行的操作。选项为 rejectInvalidsanitizeInvalidrejectInvalid 值是默认行为,建议使用。

限制文件权限

建议设置文件权限,以便仅授予对 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 Server 时,建议您使用组托管服务帐户 (gMSA) 作为运行 ArcGIS Server 服务的帐户。使用 gMSA 可以提供 Active Directory 域帐户的优势,同时通过定期密码更新来确保该帐户安全。

了解有关组托管服务帐户的详细信息

安全传输 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 的跨域请求