数据加密

重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

云消息队列 RocketMQ 版提供消息数据存储加密、传输加密等安全特性,有效地防止未授权访问、数据泄露以及在传输过程中被拦截或篡改的风险。

存储加密

加密原理

云消息队列 RocketMQ 版支持在服务器端对消息数据进行加密。客户端发送消息数据到服务端,云消息队列 RocketMQ 版利用加密云盘持久化保存数据;客户端订阅数据时,云消息队列 RocketMQ 版从云盘中读取解密后的数据,并把原始数据返回给订阅的客户端。

更多信息,请参见加密云盘

说明

开启云盘加密后,可能会导致实例的读写性能略有下降,但能够确保按照计算规格提供稳定的服务。

使用限制

  • 实例版本限制

    云消息队列 RocketMQ 版5.x系列包年包月、按量付费的铂金版实例支持。

  • 地域限制

    消息存储加密暂时仅支持华东1(杭州)、华南1(深圳)、华北2(北京)、华东2(上海)、华北3(张家口)、华北1(青岛)、中国香港、华北5(呼和浩特)、西南1(成都)、华北6(乌兰察布)、华南3(广州)、新加坡、马来西亚(吉隆坡)、印度尼西亚(雅加达)、日本(东京)、菲律宾(马尼拉)、韩国(首尔)、泰国(曼谷)、德国(法兰克福)、美国(硅谷)、英国(伦敦)、美国(弗吉尼亚)地域。

  • 密钥类型限制

    仅支持对称密钥,密钥规格为Aliyun_AES_256Aliyun_SM4,密钥用途为ENCRYPT/DECRYPT

计费说明

云消息队列 RocketMQ 版实例开启云盘加密的计费如下:

  • 云消息队列 RocketMQ 版费用

    仅收取云消息队列 RocketMQ 版铂金版的实例费用。

  • 密钥管理服务 KMS(Key Management Service)费用

    用于云盘加密的KMS的费用,需要购买软件密钥管理实例或硬件密钥管理实例。关于KMS的更多计费信息,请参见产品计费

注意事项

  • 加密行为不可逆,一旦启用云盘加密,便无法关闭。用于加密的密钥需处于可用状态,避免因KMS实例到期不可用导致消息数据读写失败。

  • 用于云盘加密的密钥,执行删除或禁用等操作将导致密钥失效,进而导致云消息队列 RocketMQ 版实例消息读写失败。建议您在对密钥进行删除、禁用操作前,自行排查该密钥是否存在关联使用的云资源,避免密钥丢失导致消息数据不可恢复。

  • 密钥的标签(acs:rocketmq:instance-encryption)若被删除,也会导致云消息队列 RocketMQ 版实例消息读写失败。

警告

声明:由用户自行操作密钥失效后导致关联的云盘资源相关数据丢失后不可恢复的风险,由用户自行承担责任。

如何开启云盘加密

云盘加密功能需要在创建云消息队列 RocketMQ 版实例时开启。

本步骤仅描述创建云消息队列 RocketMQ 版实例时如何开启云盘加密,详细配置说明,请参见创建实例

  1. 商品类型选择RocketMQ 5.0 系列(包年包月)RocketMQ 5.0 系列(按量付费)主系列类型选择铂金版

    image

  2. 开启云盘加密,并输入云盘密钥。创建云盘密钥,详情请参见管理密钥

    image

传输加密

功能说明

云消息队列 RocketMQ 版支持TLS链路加密(TLS v1.2)功能,用于客户端验证服务端的正确性,可确保数据在服务端和客户端之间传输的安全性。

版本、协议对应关系说明

服务端版本、协议与客户端版本关系如下:

服务端版本

协议

客户端版本

兼容性

TLS协议支持说明

5.x版本实例

gRPC协议v2

RocketMQ 5.x SDK

兼容

默认开启,支持Java SDK 5.0.5及以上版本的客户端主动关闭。

Remoting协议

RocketMQ 4.x/3.x SDK

兼容

默认关闭,需要客户端主动开启。

RocketMQ ONS TCP 1.x SDK

兼容

4.x版本实例

Remoting协议

RocketMQ 4.x/3.x SDK

兼容

默认关闭,需要客户端主动启用,并提交工单申请服务端开启。

RocketMQ ONS TCP 1.x SDK

兼容

gRPC协议v1

RocketMQ ONS TCP 2.x SDK

兼容

默认开启,支持客户端主动关闭。

HTTP协议

RocketMQ ONS HTTP SDK

兼容

默认开启。

客户端如何启用传输加密

  • ONS Java SDK客户端

    在JVM启动参数添加-Dtls.enable=true

    说明

    如果使用的是4.x版本实例,还需提交工单申请服务端开启TLS。

  • Remoting协议客户端

    Java SDK

    • 方案一:

      在JVM启动参数添加-Dtls.enable=true

    • 方案二:

      消息发送代码添加配置:producer.setUseTLS(true);

      消息消费代码添加配置:consumer.setUseTLS(true);

    C++ SDK

    消息发送代码添加配置:producer.setEnableSsl(true);

    消息消费代码添加配置:consumer.setEnableSsl(true);

    说明

    如果使用的是4.x版本实例,还需提交工单申请服务端开启TLS。

  • gRPC协议v2客户端

    默认开启Java SDK 5.0.5及以上版本的客户端可以通过配置enableSslfalse主动关闭。

    ClientConfiguration clientConfiguration = ClientConfiguration.newBuilder()
        .setEndpoints(endpoints)
        // On some Windows platforms, you may encounter SSL compatibility issues. Try turning off the SSL option in
        // client configuration to solve the problem please if SSL is not essential.
        .enableSsl(false)
        .setCredentialProvider(sessionCredentialsProvider)
        .build();