RDMA即远程直接内存访问,它允许一台计算机的网络适配器在不经过对方CPU干预的情况下,直接读写另一台计算机的内存。这项技术大幅降低了通信延迟、释放了计算资源,被广泛应用于分布式存储、高性能计算和人工智能训练集群。然而,内存暴露给网络带来了传统网络安全模型难以覆盖的隐患,理解这些隐患是建设安全系统的第一步。
RDMA的工作原理与安全边界
在RDMA架构中,通信双方先建立队列对,包括发送队列、接收队列和完成队列。本地应用把读写请求提交给网卡,网卡通过RoCE或InfiniBand网络把请求送达对端网卡,对端网卡直接访问指定内存地址并回传结果。整个过程远端CPU不感知,也不经过操作系统内核的协议栈,这意味着常规的基于内核态检查的安全工具看不见这类流量。
这种“绕核”特性决定了安全边界从主机内部转移到了网卡和内存注册区域。只有被显式注册并授权的内存缓冲区,才能被远端访问。如果授权策略配置不当,比如把过大范围的内存交给不可信节点,就等于把服务器内存直接敞口在网络上。管理员往往关注带宽和延迟指标,忽略了注册内存的粒度和访问密钥的管理,从而埋下风险。
RDMA面临的主要安全威胁
第一类威胁是未授权访问。RDMA依靠队列对号和内存密钥来确认访问合法性,但部分集群为图省事使用静态、共享的密钥,攻击者只要能连入相同子网,就能伪造请求读取或改写他人内存。第二类威胁是数据泄露与篡改,由于数据在内存间直传,没有加密层,同网段的嗅探设备可截取明文内容。
第三类威胁来自基础设施本身。RoCE协议基于以太网承载,容易被广播风暴或恶意流量拥塞,导致正常RDMA连接失效,形成拒绝服务。第四类威胁是配置错误引发的横向移动,当一台节点被攻破,攻击者利用既有的内存注册信息,可顺着信任关系访问更多机器,扩大破坏范围。
典型攻击场景举例
假设某金融风控集群使用RoCEv2,所有节点处在同一个二层网络,且为了调试方便关闭了PFC优先级流控的认证。攻击者通过一台失陷的办公网终端接入业务交换机,构造带有正确队列对号的读请求,直接拉走内存中的客户画像数据。由于流量不进CPU,主机侧入侵检测毫无日志,安全团队数天后才从外部告警发现异常。
另一个场景是云服务商为多租户提供RDMA实例,却复用同一套子网划分。某个租户的恶意程序利用网卡驱动漏洞,越权注册宿主内存,进而读取邻租户的模型梯度。这类案例说明,仅靠物理隔离或默认信任远远不够,必须在协议层与管控层同时设防。
RDMA安全防护的核心措施
首要措施是严格的认证与授权。应为每个队列对生成动态、一次性内存密钥,并结合TLS或IPsec为RoCE流量提供端到端加密,即便被嗅探也无法还原。同时,使用目录服务集中管理节点身份,只有纳入白名单的网卡MAC与GUID才可建立连接。
其次是网络隔离与微 segmentation。通过VLAN、VXLAN或专用InfiniBand子网把不同安全级别的RDMA域隔开,配合交换机上的ACL限制源目的队列对范围。对于跨集群访问,应走网关做协议终结与审计,不让原始RDMA请求直达核心数据区。
内存保护配置建议
在应用侧,注册内存时应遵循最小权限原则:只暴露必要的缓冲区,设置只读或只写属性,并定期回收无效注册。可借助用户态库提供的令牌机制,让每次远程访问都附带短期凭证。下表列出常见配置项与推荐做法:
| 配置项 | 风险默认值 | 安全推荐 |
|---|---|---|
| 内存密钥 | 静态共享 | 动态按连接签发 |
| 注册范围 | 整段堆内存 | 限定业务缓冲区 |
| 网络平面 | 大二层广播域 | subdivide子网与ACL |
| 流量加密 | 关闭 | 启用IPsec或TLS |
运维监控与应急响应
尽管RDMA流量不进CPU,仍可在网卡和交换机侧收集计数器,监控异常的队列对创建频率、超量读写的连接。把这些指标送到中央日志平台,结合基线告警,能弥补主机侧可见性的不足。当发现某节点短时间内注册大量内存,应立即冻结其队列对。
应急响应上,需准备脱离RDMA的带外管理通道,如独立管理网或串口,确保在主数据网被滥用时仍能登录处置。定期做红蓝对抗,模拟内存越权读取,检验密钥轮换与隔离策略是否生效。只有把技术控制与流程演练结合,远程直接内存访问才能真正既快又稳。