【ROS2】高级:安全-设置访问控制

目标:限制节点可以使用的主题

 教程级别:高级

 时间:20 分钟

 内容

  •  背景

    •  修改 permissions.xml

    • 签署策略文件

    •  启动节点

    •  使用模板

 背景

在继续之前,请确保您已完成设置安全教程。

权限非常灵活,可以用来控制 ROS 图中的许多行为。

在本教程中,我们演示了一项仅允许在默认 chatter 主题上发布消息的策略。这将防止,例如,在启动侦听器时重新映射主题或将相同的安全飞地用于其他目的。

为了执行此政策,我们需要更新 permissions.xml 文件并在启动节点之前重新签署它。这可以通过手动修改权限文件或使用 XML 模板来完成。

 修改 permissions.xml 

首先备份您的权限文件,然后打开 permissions.xml 进行编辑:

cd ~/sros2_demo/demo_keystore/enclaves/talker_listener/talker
mv permissions.p7s permissions.p7s~
mv permissions.xml permissions.xml~
vi permissions.xml

我们将修改 <allow_rule> 以适应 <publish> 和 <subscribe> 。此 XML 文件中的主题使用 DDS 命名格式,而不是 ROS 名称。有关在 ROS 和 DDS 之间映射主题名称的详细信息,请参阅主题和服务名称设计文档。

将以下 XML 内容粘贴到 permission.xml ,保存文件并退出文本编辑器。这显示了 chatter 和 rosout ROS 主题分别重命名为 DDS rt/chatter 和 rt/rosout 主题。

<dds xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.omg.org/spec/DDS-SECURITY/20170901/omg_shared_ca_permissions.xsd">
  <!-- 定义 DDS 安全配置文件,并指定 XML schema 的位置 -->
  <permissions>
    <!-- 权限定义的开始 -->
    <grant name="/talker_listener/talker">
      <!-- 定义一个权限授予,命名为 "/talker_listener/talker" -->
      <subject_name>CN=/talker_listener/talker</subject_name>
      <!-- 指定主体名称,即被授予权限的实体,CN 是通用名称 -->
      <validity>
        <not_before>2021-06-01T16:57:53</not_before>
        <!-- 权限开始生效的时间 -->
        <not_after>2031-05-31T16:57:53</not_after>
        <!-- 权限失效的时间 -->
      </validity>
      <!-- 定义权限的有效期 -->
      <allow_rule>
        <!-- 允许规则的开始 -->
        <domains>
          <id>0</id>
          <!-- 定义域 ID 为 0 -->
        </domains>
        <publish>
          <!-- 定义发布权限 -->
          <topics>
            <topic>rt/chatter</topic>
            <!--
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值