瓦片数据加密使用介绍

为防止瓦片数据爬取并进一步增强使用安全性,SuperMap GIS 12i系列产品中提供从服务端加密到客户端解密的全流程瓦片数据加密能力。对于加密算法,内置AES(Advanced Encryption Standard)与SM4算法,可任选其一进行配置,详细介绍请参见<a href="https://help.supermap.com/iServer/Subject_introduce/Security/tileEncryption.htm" target="_blank">SuperMap iServer帮助文档</a>(章节一-1、SuperMap iServer 支持的加密算法)。

该篇介绍如何在SuperMap GIS云套件中对瓦片(矢量瓦片和三维模型瓦片等)数据进行加密,助力实际业务中瓦片数据的安全使用。如需对瓦片数据解密浏览,请在SuperMap Web客户端(iClient和iClient3D for WebGL/WebGPU)中进行解密,详细介绍请参见<a href="https://help.supermap.com/iServer/Subject_introduce/Security/tileEncryption.htm" target="_blank">SuperMap iServer帮助文档</a>(章节二-在 SuperMap Web 客户端中对瓦片数据解密浏览)。

对GIS云套件的服务实例进行动态加密配置,请参照以下步骤:

  1. 访问GIS云套件的Consul(cloudsuite-consul)服务。Consul服务默认未开启端口,需开启端口暴露服务地址后进行访问。根据GIS云套件环境由来方式请选择相应的操作方式,分别如下:

    在iManager左侧导航栏->站点管理->单击您的GIS云套件站点的名称->服务列表区域,对cloudsuite-consul服务进行开启端口操作。

    指定用于访问服务的映射端口或使用随机端口,单击确定生效。待地址一列中显示链接后单击访问Consul服务。

    • 方式2:安装部署的GIS云套件(通过部署中心可视化安装或使用部署包安装)环境:

    (1)访问 http://<ip>:31234 进入kubernetes的dashboard界面。<ip>是GIS云套件所在机器的ip。

    (2)命名空间选择对应GIS云套件的supermapgiscloudsuite(如果是自定义名称,请选择实际的命名空间),点击界面右上角“+”处,创建新资源Services。

kind: Service
apiVersion: v1
metadata:
  name: cloudsuite-consul-external
  namespace: supermap # 使用部署包安装的GIS云套件,命名空间默认为giscloudsuite。如部署在自定义的命名空间下,请替换为实际命名空间的名称
  annotations:
    showPorts: '[8500]'
spec:
  ports:
    - name: http
      protocol: TCP
      port: 8500
      targetPort: 8500
      nodePort: 30002  # 外部映射端口,按需修改并确保不跟已有端口相冲突
  selector:
    app: cloudsuite-consul
  type: NodePort
  sessionAffinity: None
  externalTrafficPolicy: Cluster
(3)访问 `http://<ip>:<nodePort>`进入Consul服务界面。`<ip>`是GIS云套件所在机器的ip,`<nodePort>`是cloudsuite-consul服务的外部映射端口,例如30002。
  1. 键/值(Key/Value)存储下创建配置Security-EncryptionConfig,并在值域中按需填入瓦片数据动态加密的配置,包括矢量瓦片、三维模型瓦片等瓦片加密,JSON结构示例如下:
 {
  "encryption": {
    # 动态加密算法及规格设置 
    "serviceKeySettings": [
      {
        # 必填,加密算法名,取值范围:[SM4|AES]。算法名支持两段写法,例如:SM4/CTR;也支持缺省写法,例如:SM4。
        "algorithm": "AES",  
        # 必填,每种服务组件(三维/地图/数据服务组件)加密算法的标识,只支持字母和数字,例如:keyID1。
        "keyID": "keyID1",
        # 必填,密钥长度,单位为b。当使用SM4算法时可设置为128,AES时可设置为256。
        "keyLength": "256"
      },
      {
        "algorithm": "SM4",
        "keyID": "keyID2",
        "keyLength": "128"
      },
      {
        "algorithm": "SM4",
        "keyID": "keyID3",
        "keyLength": "128"
      }        
    ]
  },
  # 服务的动态加密使用配置
  "svcworkkeymappings": [
      {
        # 加密算法标识,需与上面<keyID>参数对应。一类服务组件只能对应一个keyID,且不同服务组件的keyID不能一致。
        "keyID": "keyID1",
        # 服务组件名称,三维/地图/数据服务组件分别对应为“RealspaceImpl”、“MapImpl”、“DataImpl” 。例为三维服务组件加密配置(后缀为.s3m的模型瓦片数据)。  
        "typeName": "com.supermap.services.components.impl.RealspaceImpl",
        # 需要加密的服务接口。可配置同个服务组件的多个接口,用逗号“,”分隔,需能够与实际的请求 url 匹配。对于非固定值使用“ .*?”来代替,例如服务组件名 map-world;资源后、文件后缀前,由“\”分割。
        "urls": [
            "/iserver/services/.*?/rest/realspace/datas/.*?/data/path/.*?/.*?\\.s3m.*" 
          ]
      },
      {
        "keyID": "keyID2",
        # 例为地图服务组件加密配置(后缀为.mvt的矢量瓦片数据)
        "typeName": "com.supermap.services.components.impl.MapImpl",
        "urls": [
            "/iserver/services/.*?/rest/maps/.*?/tileFeature\\.mvt.*",
            "/iserver/services/.*?/restjsr/v1/vectortile/maps/.*?/tiles/.*?/.*?/.*?\\.mvt.*"
          ]
      },
      {
        "keyID": "keyID3",
        # 例为数据服务组件加密配置(后缀为.mvt的矢量瓦片数据)
        "typeName": "com.supermap.services.components.impl.DataImpl",
        "urls": [
            "/iserver/services/.*?/rest/data/datasources/.*?/datasets/.*?/tileFeature\\.mvt.*" 
          ]
      }                
    ]
  }     

注意事项:

  1. 实际按上文填入配置时,请不要包含注释(“#”标注)内容。
  1. 单击保存(Save),完成瓦片加密配置。

    consulconfig

  2. 验证加密配置是否生效。完成上述配置后重启GIS云套件后端API服务(cloudsuite-dashboard-api)再发布服务,瓦片加密配置即可生效。可通过如下两个方面来验证是否生效。

    • 使用GIS云套件iServer模块内置的二维表述(iClient for Openlayers3 with MVT ,for MapboxGL with MVT)浏览矢量瓦片地图、三维表述(WebGL3D、Cesium)浏览三维模型数据或场景时不显示。

    • 请求被加密服务的 service 资源,响应体中能够返回加密信息。例如:对 172.16.112.145:30000/iserver/services/map-China100.json 执行 get 请求,响应体如下:

  {
   ...
   "serviceEncryptInfo":
   {
       "encrptSpec":
       {
           "keyLength":128,
           "attributes":null,
           "version":"1.1",
           "algorithm":"SM4"
        }
        "updateTime":"Fri Apr 18 10:07:15 CST 2025",
        "encrptKeyID":"keyID1"
   }
   ...
   "url": "http://172.16.112.145:30000/iserver/services/map-China100/restjsr"]
   }