ROS 2 安全性 (ROS 2 Security)¶
概述 (Overview)¶
ROS 2 具备保护 ROS 2 计算图(computational graph)中节点间通信的能力。与发现机制(discovery)类似,安全性也是通过底层的 ROS 2 中间件实现的(前提是该中间件支持相应的安全插件)。启用安全性无需安装额外的软件;但是,中间件需要为每个 ROS 图参与者配置相应的文件。这些文件启用了加密和身份验证,并定义了针对单个节点以及整个 ROS 图的策略。ROS 2 还增加了一个总“开关”来控制安全行为。
ROS 实用工具可以为 ROS 应用程序创建权威的信任锚点 (trust anchor),或者也可以使用外部的证书颁发机构 (CA)。
内置的 ROS 2 安全特性能够控制整个 ROS 图中的通信。这不仅允许对 ROS 域参与者之间传输的数据进行加密,还能对发送数据的参与者进行身份验证,确保所发送数据的完整性,并启用全域范围的访问控制。
ROS 2 的安全服务由底层的数据分发服务 (DDS)提供,DDS 用于节点间的通信。DDS 供应商提供了可与 ROS 配合使用的开源和商业 DDS 实现。然而,为了创建一个符合规范的 DDS 实现,所有供应商必须包含 DDS 安全规范中列出的安全插件。ROS 安全特性利用这些 DDS 安全插件来提供基于策略的加密、身份验证和访问控制。DDS 和 ROS 的安全性是通过预定义的配置文件和环境变量启用的。
安全区域 (The Security Enclave)¶
一个 安全区域 (Security Enclave) 封装了用于保护 ROS 通信的单一策略。该区域可以为多个节点、整个 ROS 图,或受保护的 ROS 进程与设备的任意组合设置策略。在部署时,安全区域可以灵活地映射到进程、用户或设备。调整这种默认行为对于优化通信和处理复杂系统变得非常重要。有关更多详细信息,请参阅 ROS 2 安全区域设计文档。
安全文件 (Security Files)¶
根据 DDS 规范,建立一个 ROS 2 安全区域 需要 6 个文件。其中三个文件定义区域的身份 (Identity),另外三个文件定义授予该区域的权限 (Permissions)。所有六个文件都位于同一个目录中,如果没有指定合格的区域路径,启动的节点将使用默认根级区域中的文件。
区域身份 (Enclave Identity)¶
identity_ca.cert.pem(身份证书颁发机构文件): 充当用于识别参与者的信任锚点。cert.pem: 每个区域持有的唯一身份证书。key.pem: 与身份证书关联的私钥。
由于 cert.pem 证书已由身份证书(CA)签名,当一个参与者向其他域成员出示此证书时,其他成员能够使用他们自己的身份证书副本验证该参与者的身份。这种有效的证书交换允许该区域与其他参与者安全地建立受信任的通信。
注意: 区域不会共享
key.pem私钥,它仅用于解密和消息签名。
区域权限 (Enclave Permissions)¶
permissions_ca.cert.pem(权限证书颁发机构文件): 充当向安全区域授予权限的信任锚点。governance.p7s: 由权限 CA 签名的 XML 文档,定义了全域范围的保护策略。permissions.p7s: 同样是 XML 文件,概述了该特定区域的权限,并已由权限 CA 签名。
域成员使用权限 CA 的副本来验证这些签名文件并授予请求的访问权限。
虽然这两个证书颁发机构支持身份和权限的分离工作流,但在通常情况下,同一个证书会同时充当身份和权限的颁发机构。
私钥 (Private Keys)¶
身份证书和权限证书也有关联的私钥文件。
- 添加新区域: 通过使用身份证书的私钥签署其证书签名请求 (CSR) 来向域中添加新区域。
- 授予权限: 同样,通过使用权限证书的私钥签署权限 XML 文档来为新区域授予权限。
安全环境变量 (Security Environment Variables)¶
-
ROS_SECURITY_ENABLE充当区域 ROS 2 安全特性的总“开关”。安全性默认是关闭的,因此即使存在正确的安全文件,安全特性也不会启用。为了启用 ROS 2 安全性,请将此环境变量设置为true(区分大小写)。 -
ROS_SECURITY_STRATEGY一旦启用了安全性,此环境变量定义了域参与者在启动遇到问题时的处理方式。安全特性依赖于证书和正确签名的配置文件,但默认情况下,配置不当的参与者仍然可以启动成功,只是没有安全特性。为了强制严格遵守安全设置并让不合规的区域启动失败,请将此环境变量设置为Enforce(区分大小写)。
更多的安全相关环境变量可以在 ROS 2 DDS-Security 集成设计文档 中找到。这些变量通常用于协助 ROS 管理区域和定位安全文件。
了解更多 (Learn More)¶
有关启用 ROS 2 通信安全性的更多信息和动手练习,请参阅 设置安全性 (Setting up security) 教程。