安全体系

任何框架和服务,首先依赖于系统的安全体系。在系统的安全体系完备的情况下,框架和服务的安全体系才具有实际意义。

FPNN 框架提供的安全措施

  1. 加密系统

    FPNN 提供加密和秘钥交换功能。

    1. 加密

      FPNN 采用 AES 加密标准,CFB 加密模式。

      AES,即美国政府采用的高级加密标准。加密强度、安全性可参见 中文维基百科 英文维基百科

      CFB 请参考 中文维基百科 英文维基百科

      FPNN 框架支持 128 位秘钥,以及 256 位秘钥。

      1. 流加密

        • 将整个会话,从链接创建到链接关闭之间的所有数据视为一个数据流进行加密。
        • 每个请求和回应都是这个数据流不可分割的一部分。
        • 任何两个相同的数据包不会产生相同的密文。
      2. 包加密

        由于不少语言的加密库不能对流加密模式提供很好的支持,因此 FPNN 也支持包加密模式。

        • 每个 FPNN 封包是一个独立的个体,进行独立的加密。
        • 如果在同一个会话中,两个封包完全一模一样,那将产生相同的密文。

      FPNN 的加密策略与连接绑定。
      不同的链接,可以使用不同长度的秘钥,以及不同的加密方式(流加密或者包加密)。

    2. 秘钥交换

      FPNN 采用 ECDH 进行秘钥交换。

      ECDH 的背后是 ECC (椭圆曲线加密算法)。关于 ECC 和 RSA 的安全性和加密强度,可参考网上搜索结果。

      关于 ECC 请参见:英文维基百科

      关于 ECDH 请参见:英文维基百科

      风险

      • 中间人攻击

        • 实现方式:

          1. 劫持交换机/路由器等网关类设备/服务,安装劫持代理;

          2. 截取设备上秘钥交换的通讯,分别建立客户端与自己,自己与服务器两条链接。冒充客户端与服务器交换秘钥;

          3. 将服务器发往客户端的数据解密,修改后转发客户端;将客户端发往服务器的数据解密,修改后转发服务器。

        • 防止方式:

          客户端发布时,内置服务器公钥。

  2. 访问限制

    1. FPNN 框架内置接口访问限制

      FPNN 框架内置接口,除秘钥交换接口外,其余仅允许内网访问。外网访问将被自动阻止。

    2. 用户接口访问限制

      用户可以指定用户自定义的接口,是必须加密链接才能访问,还是内网才能访问。

    3. IP/IP段白名单

      FPNN 服务可以指定只允许哪些 IP,以及哪些 IP 段的设备可以访问。

FPNN 生态环境提供的安全措施

  • Dispatch 服务

    Dispatcher 服务提供访问限制。
    只有被允许分发的服务类别,才会进行分发。

    同时,Dispatcher 作为 FPNN 框架所开发的服务,因此拥有 FPNN 框架提供的所有安全措施。

  • 集群管理服务

    FPZK 集群管理服务,提供密码配置。
    如果不同的项目共享共一个 FPZK 集群,需要正确的项目密码,才能加入,或者访问对应的项目集群。

    同时,FPZK 作为 FPNN 框架所开发的服务,因此拥有 FPNN 框架提供的所有安全措施。

  • 数据库路由代理服务

    对于 MySQL DBProxy 提供以下额外的安全策略:

    • 对业务屏蔽所有的 MySQL 网络拓扑,和分库分表逻辑

      业务开发者,无需、也不应该知道具体的数据库拓扑,和分库分表逻辑。
      数据库网络拓扑和分库分表逻辑只应该由 DBA 掌握和管理。

    • 业务不能创建、删除和修改 数据库、数据表

      这部分权限仅能由 DBA 处理。
      DBA 可以使用 DBProxy Manager 版进行操作。

    • 业务可以仅通过一个请求进行多 sharding 查询并举和查询结果,但对每个 sharding 的修改操作需要单独进行

      DBA 可以通过 DBProxy Manager 进行多 sharding 的批量修改操作。

    • 业务库和 DBProxy 配置库账号和权限隔离

    • 业务库账号混淆

    同时,数据库路由代理服务 作为 FPNN 框架所开发的服务,因此拥有 FPNN 框架提供的所有安全措施。

  • 通用集群网关

    通用集群网关自身对外屏蔽了内部网络所有的拓扑结构和部署细节。
    外部访问仅需指定路由模式和需要访问的服务类型,其他无需了解。

    通用集群网关还支持限制模式,在限制模式下,只有被允许的服务能通过被允许的路由模式访问。

    同时,通用集群网关 作为 FPNN 框架所开发的服务,因此拥有 FPNN 框架提供的所有安全措施。

  • 实时消息系统服务

    具体请参见 实时消息系统服务 的相关介绍。

    同时,实时消息系统服务 作为 FPNN 框架所开发的服务,因此拥有 FPNN 框架提供的所有安全措施。