持久内存与安全机制 - 第383页
我们现在进入 第 8.13 节:NVMe over Fabrics 安全通道与带内认证机制 的详细中文解析。本节是《NVMe Base Specification 2.0b》在安全性方面的关键扩展,尤其适用于基于网络结构(Fabrics,例如:RoCE、TCP、iWARP)连接的 分布式存储系统。
🛡️ 第 8.13 节:NVMe over Fabrics 安全通道与带内认证机制(Secure Channel & In-band Authentication)
🧩 基本定义与结构
NVMe over Fabrics(简写:NVMe-oF)支持 两类认证机制,分别如下:
| 类型 | 说明 | 通道层级 |
|---|---|---|
| 1. Fabric Secure Channel(结构安全通道) | 认证 + 加密 + 完整性保护(例如:IPsec, TLS) | 传输层 |
| 2. NVMe In-band Authentication(NVMe 带内认证) | 在 Connect 命令成功后,主机与控制器之间基于 NVMe 进行身份验证 |
协议层(逻辑连接之后) |
🔑 注意:这两种机制可独立或同时启用
- 如果两者同时使用,那么:
-
它们所使用的 身份标识可能不同
- Fabric Secure Channel:IP 层身份(如 IP 地址、DNS 主机名)
- In-band Authentication:NVMe 协议标识(如 Host NQN)
-
身份的授权策略由实施的安全策略决定,与规范本身无关
🎯 认证通道建立流程举例(如下图所示,Figure 432)
以 TLS 为例,连接控制器前建立 TLS 安全信道 → 然后发起 Connect → 然后执行 Authentication Send/Receive
流程大致如下:
Host Network Controller
| | |
|<------ TLS Handshake --------->| [Secure Channel Established]
| | |
|---- NVMe Connect Cmd ---------->| [Session Established]
| | |
|-- Authentication Send --> |
|<-- Authentication Receive-- | [In-band Authentication Phase]
🔍 Fabric Secure Channel(结构安全通道)机制详解:
🔒 功能要求:
- 所依赖协议如 IPsec(RFC 4301)或 TLS(RFC 8446)负责:
- 身份认证
- 加密通信
- 数据完整性保护
🧾 Discovery Log Page 中的 TREQ 字段(Transport Requirements)
- 表示是否强制要求使用安全通道连接此 NVM Subsystem
- 在主机发起连接前,通过读取 Discovery Log 确认是否需要 secure channel
⚠️ 如果安全通道未建立:
- 控制器会拒绝 capsule(封装命令)的传输
- 主机在 NVMe 层面可能收不到具体错误(取决于底层 Fabric 协议)
- 控制器在该连接上可能不可达
🔍 In-band Authentication(NVMe 带内认证)机制详解:
🔁 认证流程(成功 Connect 后):
- 主机发出
Connect命令连接控制器成功; - 立即使用:
Authentication SendAuthentication Receive这两条 Admin 命令 → 在 NVMe 协议内部 隧道(tunnel)传输认证协议报文 → 实现认证协商与身份验证
注:认证协议本身可参考 FIDO2、CHAP、TLS-PWD 等,但不由 NVMe 规范规定
⚖️ 权限控制逻辑说明
- 如何分配和管理“Fabric 身份”和“NVMe 身份”的对应关系,
- 比如哪个 IP/主机名允许使用哪个 NQN
- 这些属于系统管理员制定的安全策略范畴,超出规范定义范围
📘 小结对比表:
| 项目 | Fabric Secure Channel | NVMe In-band Authentication |
|---|---|---|
| 工作层级 | 传输层(如 TCP/IP) | NVMe 协议层 |
| 典型技术 | IPsec / TLS | Authentication Send/Receive |
| 用途 | 加密通信、传输安全 | NVMe 主机身份认证 |
| 配置位置 | Fabric Transport Binding(如 TCP over Fabrics) | NVMe 控制器与主机 |
| 身份标识 | IP、DNS、MAC | NQN(NVMe Qualified Name) |
| 是否可共存 | ✅ | ✅ |
| 错误反馈机制 | Fabric 层决定,可能不反馈到 NVMe 层 | NVMe 层直接返回认证失败状态码 |
如果你希望我继续讲解图 Figure 432 或 进一步展开 In-band 认证的命令结构(如 Authentication Send/Receive 命令格式和字段解析),我可以接着深入讲解。
是否继续进入第 8.14 节内容,还是补充协议命令层面的认证结构?你说了算!