安全隧道 - AWS IoT Greengrass

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

安全隧道

使用该aws.greengrass.SecureTunneling组件,您可以与位于受限防火墙后面的 Greengrass 核心设备建立安全的双向通信。

例如,假设您在防火墙后面有一台 Greengrass 核心设备,该设备禁止所有传入连接。安全隧道使用 MQTT 将访问令牌传输到设备,然后使用 WebSockets 通过防火墙与设备建立 SSH 连接。使用此AWS IoT托管隧道,您可以打开设备所需的 SSH 连接。有关使用AWS IoT安全隧道连接远程设备的更多信息,请参阅《开发人员指南》中的AWS IoT安全隧道。AWS IoT

此组件订阅$aws/things/greengrass-core-device/tunnels/notify主题上的 AWS IoT Core MQTT 消息代理以接收安全隧道通知。

版本

此组件有以下版本:

  • 1.0.x

类型

组件是一个通用组件 (aws.greengrass.generic)。Greengrass 核心运行组件的生命周期脚本。

有关更多信息,请参阅 组件类型

操作系统

此组件只能安装在 Linux 核心设备上。

架构:

  • armv71

  • Armv8 (AArch64)

  • x86_64

要求

此组件具有以下要求:

  • 安全隧道组件至少有 32 MB 的可用磁盘空间。此要求不包括运行在同一设备上的 Greengrass 核心软件或其他组件。

  • 安全隧道组件至少有 16 MB 的可用内存。此要求不包括运行在同一设备上的 Greengrass 核心软件或其他组件。有关更多信息,请参阅 使用 JVM 选项控制内存分配

  • 安全隧道组件版本 1.0.12 及更高版本需要 GNU C 库 (glibc) 版本 2.25 或更高版本,Linux 内核为 3.2 或更高版本。不支持超过长期支持期限的操作系统和库的版本。您应该使用具有长期支持的操作系统和库。

  • 操作系统和 Java 运行时都必须安装为 64 位。

  • Python 3.5 或更高版本安装在 Greengrass 核心设备上,并已添加到 PATH 环境变量中。

  • libcrypto.so.1.1安装在 Greengrass 核心设备上并添加到 PATH 环境变量中。

  • 在 Greengrass 核心设备的端口 443 上打开出站流量。

  • 开启对要用来与 Greengrass 核心设备通信的通信服务的支持。例如,要打开与设备的 SSH 连接,必须在该设备上打开 SSH。

端点和端口

除了基本操作所需的端点和端口外,此组件还必须能够对以下端点和端口执行出站请求。有关更多信息,请参阅 允许设备流量通过代理或防火墙

Endpoint 端口 必需 描述

data.tunneling.iot.region.amazonaws.com

443

建立安全隧道。

依赖项

部署组件时,AWS IoT Greengrass还会部署其依赖项的兼容版本。这意味着您必须满足组件及其所有依赖项的要求才能成功部署该组件。本节列出了此组件已发布版本的依赖关系以及定义每个依赖项的组件版本的语义版本限制。您还可以在AWS IoT Greengrass控制台中查看组件每个版本的依赖关系。在组件详细信息页面上,查找 “依赖关系” 列表。

1.0.18

下表列出了此组件版本 1.0.18 的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >=2.0.0 <2.13.0 软性
1.0.16 – 1.0.17

下表列出了此组件的 1.0.16 到 1.0.17 版本的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >=2.0.0 <2.12.0 软性
1.0.14 – 1.0.15

下表列出了此组件的 1.0.14 到 1.0.15 版本的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >=2.0.0 <2.11.0 软性
1.0.11 – 1.0.13

下表列出了此组件版本 1.0.11-1.0.13 的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >=2.0.0 <2.10.0 软性
1.0.10

下表列出了此组件版本 1.0.10 的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >=2.0.0 <2.9.0 软性
1.0.9

下表列出了此组件版本 1.0.9 的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >=2.0.0 <2.8.0 软性
1.0.8

下表列出了此组件版本 1.0.8 的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >=2.0.0 <2.7.0 软性
1.0.5 - 1.0.7

下表列出了此组件的 1.0.5 到 1.0.7 版本的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >=2.0.0 <2.6.0 软性
1.0.4

下表列出了此组件版本 1.0.4 的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >=2.0.0 <2.5.0 软性
1.0.3

下表列出了此组件版本 1.0.3 的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >=2.0.0 <2.4.0 软性
1.0.2

下表列出了此组件版本 1.0.2 的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >=2.0.0 <2.3.0 软性
1.0.1

下表列出了此组件版本 1.0.1 的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >=2.0.0 <2.2.0 软性
1.0.0

下表列出了此组件版本 1.0.0 的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >=2.0.3 <2.1.0 软性

有关组件依赖关系的更多信息,请参阅组件配方参考

配置

此组件提供以下配置参数,您可以在部署该组件时对其进行自定义。

OS_DIST_INFO

(可选)核心设备的操作系统。默认情况下,该组件会尝试自动识别核心设备上运行的操作系统。如果组件无法使用默认值启动,请使用此值来指定操作系统。有关此组件支持的操作系统的列表,请参见设备要求

该值可以是以下值之一:autoubuntuamzn2raspberrypi

默认值:auto

accessControl

(可选)包含授权策略的对象,该策略允许组件订阅安全隧道通知主题。

注意

如果您的部署以事物组为目标,请勿修改此配置参数。如果您的部署以单个核心设备为目标,并且您想将其订阅限制为该设备的主题,请指定核心设备的事物名称。在设备授权策略的resources值中,将 MQTT 主题通配符替换为设备的事物名称。

{ "aws.greengrass.ipc.mqttproxy": { "aws.iot.SecureTunneling:mqttproxy:1": { "policyDescription": "Access to tunnel notification pubsub topic", "operations": [ "aws.greengrass#SubscribeToIoTCore" ], "resources": [ "$aws/things/+/tunnels/notify" ] } } }
例 示例:配置合并更新

以下示例配置指定允许此组件在运行 Ubuntu 的名为MyGreengrassCore的核心设备上打开安全隧道。

{ "OS_DIST_INFO": "ubuntu", "accessControl": { "aws.greengrass.ipc.mqttproxy": { "aws.iot.SecureTunneling:mqttproxy:1": { "policyDescription": "Access to tunnel notification pubsub topic", "operations": [ "aws.greengrass#SubscribeToIoTCore" ], "resources": [ "$aws/things/MyGreengrassCore/tunnels/notify" ] } } } }

本地日志文件

此组件使用以下日志文件。

/greengrass/v2/logs/aws.greengrass.SecureTunneling.log
查看此组件的日志
  • 在核心设备上运行以下命令以实时查看此组件的日志文件。/greengrass/v2替换为AWS IoT Greengrass根文件夹的路径。

    sudo tail -f /greengrass/v2/logs/aws.greengrass.SecureTunneling.log

许可证

此组件包括以下第三方软件/许可:

使用量

要在设备上使用安全隧道组件,请执行以下操作:

  1. 将安全隧道组件部署到您的设备上。

  2. 打开AWS IoT控制台。从左侧菜单中选择 “远程操作”,然后选择 “安全隧道”。

  3. 创建一条通往你的 Greengrass 设备的隧道。

  4. 下载源访问令牌。

  5. 使用带有源访问令牌的本地代理连接到您的目的地。有关更多信息,请参阅AWS IoT开发人员指南》中的如何使用本地代理

另请参阅

更改日志

下表描述了该组件的每个版本中的更改。

版本

更改

1.0.18

Greengrass nucleus 版本 2.12.0 版本的版本已更新。

1.0.17

错误修复和改进
  • 修复了阻碍用户创建隧道的线程清理问题。现在,该组件将在线程接收到 CloseTunnel 信号后或隧道在 12 小时后过期时对其进行清理。

1.0.16

Greengrass nucleus 版本 2.11.0 版本的版本已更新。

2016-09-01

错误修复和改进
  • 修复了设备上没有主目录的用户的启动问题。现在,安全隧道组件无需为影子文档创建目录即可启动。

1.0.14

Greengrass nucleus 版本 2.10.0 版本的版本已更新。

1.0.13

错误修复和改进
  • 修复了孤立客户端进程阻止多个隧道瞄准设备的问题。

1.0.12

错误修复和改进
  • 在 Raspberry Pi 操作系统上运行时,增加了对 x86_64 (AMD64) 和 armv8 (Aarch64) 的支持。

2016-09-01

Greengrass nucleus 版本 2.9.0 版本的版本已更新。

2016-09-01

Greengrass nucleus 版本 2.8.0 版本的版本已更新。

1.0.9

Greengrass nucleus 版本 2.7.0 版本的版本已更新。

1.0.8

Greengrass nucleus 版本 2.6.0 版本的版本已更新。

1.0.7

错误修复和改进
  • 修复了通过 SCP 传输大文件时组件断开连接的问题。

1.0.6

此版本包含错误修复。

1.0.5

Greengrass nucleus 版本 2.5.0 版本的版本已更新。

1.0.4

Greengrass nucleus 版本 2.4.0 版本的版本已更新。

1.0.3

Greengrass nucleus 版本 2.3.0 版本的版本已更新。

1.0.2

Greengrass nucleus 版本 2.2.0 版本的版本已更新。

1.0.1

Greengrass nucleus 版本 2.1.0 版本的版本已更新。

1.0.0

初始版本。