您正在阅读的是开发版本的文档。有关最新发布的版本,请访问 Jazzy.

设置安全

目标 设置安全 sros2.

辅导水平: 高级

时间 15 分钟

背景介绍

"(《世界人权宣言》) sros2 软件包提供了在 DDS-Security 基础上使用 ROS 2 的工具和说明。安全功能已经过跨平台(Linux、macOS 和 Windows)和跨语言(C++ 和 Python)测试。SROS2 可与任何安全中间件配合使用,但并非所有中间件都是开源的,支持情况也因使用的 ROS 发行版而异。请联系 ROS 2 安全工作组 如果您遇到任何支持问题。

安装

通常情况下,在使用 ROS 2 安装指南配置指南.不过,如果您打算从源代码安装或切换中间件实现,请考虑以下注意事项:

从源代码安装

从源代码安装之前,您需要安装最新版本的 openssl(1.0.2g 或更高版本):

苏都 适切 更新 sudo 适切 安装 libssl-dev

Fast DDS 需要额外的 CMake 标志来构建安全插件,因此需要修改 colcon 调用才能通过:

胶管 构建 --symlink-install --cmake-args -安全=关于

选择备用中间件

如果不使用默认的中间件实现,请确保 更改您的 DDS 实施 然后再继续。

ROS 2 允许您在运行时更改 DDS 实现。请参见 如何与多个 RMW 实施方案协同工作 以探索不同的中间件实现方法。

请注意,不支持供应商之间的安全通信。

运行演示

1.为安全文件创建文件夹

首先创建一个文件夹来存储该演示所需的所有文件:

mkdir ~/sros2_demo

2.生成密钥存储

使用 sros2 工具来创建密钥库。密钥库中的文件将用于确保 ROS 2 图形中所有参与者的安全。

CD ~/sros2_demo ros2 安全 创建关键存储 demo_keystore

3.生成密钥和证书

创建密钥存储后,为每个启用了安全功能的节点创建密钥和证书。在我们的演示中,这包括通话者和监听者节点。该命令使用 创建飞地 功能,下一篇教程将详细介绍该功能。

玫瑰2 安全 创建飞地 demo_keystore /talker_listener/talker ros2 安全 创建飞地 demo_keystore /talker_listener/listener

4.配置环境变量

有三个环境变量允许中间件查找加密材料并启用(也可能强制启用)安全性。这些环境变量和其他与安全相关的环境变量在 ROS 2 DDS 安全集成设计文件.

出口 ros_security_keystore=~/sros2_demo/demo_keystore
出口 ros_security_enable=
出口 安全战略=执行

这些变量需要在用于演示的每个终端中定义。为方便起见,您可以将它们添加到启动环境中。

5.运行 说者/听者 演示

启动通话节点,开始演示。

玫瑰2 运行 演示节点 话匣子 --ros-args --飞地 /talker_listener/talker

在另一个终端,以同样的方式启动 听众 节点。该终端中的环境变量必须按照上文第 4 步所述正确设置。

玫瑰2 运行 演示节点 听众 --ros-args --飞地 /talker_listener/listener

这些节点将使用身份验证和加密技术进行通信!如果查看数据包内容(例如,使用 tcpdumpWireshark 在另一个教程中涉及),可以看到信息是加密的。

注意:您可以在 C++ (demo_nodes_cpp) 和 Python (demo_nodes_py) 软件包之间任意切换。

这些节点之所以能够通信,是因为我们为它们创建了相应的密钥和证书。

在回答下面的问题时,让两个节点都处于运行状态。

参加测验

打开另一个终端会话,但 设置环境变量,以便不启用安全性。启动监听器。你希望发生什么?

停止监听器,设置环境变量 ros_security_enable 并重新启动监听器。您希望这次会有什么结果?

停止监听器并设置 安全战略执行.现在怎么办?

了解更多信息!

您准备好进一步加强 ROS 安全性了吗?看看 安全的 Turtlebot2 演示.您会发现 ROS 2 安全功能的复杂实现,您可以随时尝试自己的自定义场景。请务必在此创建拉取请求和问题,以便我们继续改进 ROS 的安全支持!