本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
配置 IDT 设置以运行Amazon IoT Greengrass资格认证套件
在运行测试之前,您必须在主机计算机上配置Amazon证书和设备的设置。
在 config.json 中配置Amazon证书
您必须在
文件中配置您的 IAM 用户证书。使用在中创建的 IDT forAmazon IoT Greengrass V2 用户的证书创建和配置Amazon Web Services 账户。您可以采用以下两种方法之一来指定凭证:<device_tester_extract_location>
/configs/config.json
-
在证书文件中
-
作为环境变量
IDT 使用与 Amazon CLI 相同的凭证文件。有关更多信息,请参阅配置和凭证文件。
凭证文件的位置因您使用的操作系统而异:
-
macOS、Linux:
~/.aws/credentials
-
Windows:
C:\Users\
UserName
\.aws\credentials
将您的Amazon凭证按以下格式添加到credentials
文件中:
[default] aws_access_key_id =
<your_access_key_id>
aws_secret_access_key =<your_secret_access_key>
要将 IDT forAmazon IoT Greengrass V2 配置为使用credentials
文件中的Amazon证书,请按如下方式编辑config.json
文件:
{ "awsRegion": "
region
", "auth": { "method": "file", "credentials": { "profile": "default" } } }
如果您不使用该default
Amazon配置文件,请务必更改文件中的配置config.json
文件名称。有关更多信息,请参阅命名配置文件。
环境变量是由操作系统维护且由系统命令使用的变量。如果您关闭 SSH 会话,则不会保存它们。IDT forAmazon IoT Greengrass V2 可以使用AWS_ACCESS_KEY_ID
和AWS_SECRET_ACCESS_KEY
环境变量来存储您的Amazon证书。
要在 Linux、macOS 或 Unix 上设置这些变量,请使用 export:
export AWS_ACCESS_KEY_ID=
<your_access_key_id>
export AWS_SECRET_ACCESS_KEY=<your_secret_access_key>
要在 Windows 上设置这些变量,请使用 set:
set AWS_ACCESS_KEY_ID=
<your_access_key_id>
set AWS_SECRET_ACCESS_KEY=<your_secret_access_key>
要配置 IDT 以使用环境变量,请编辑 config.json
文件中的 auth
部分。示例如下:
{ "awsRegion": "
region
", "auth": { "method": "environment" } }
配置 device.json
除Amazon凭证外,IDT forAmazon IoT Greengrass V2 还需要有关运行测试的设备的信息。示例信息包括 IP 地址、登录信息、操作系统和 CPU 架构。
您必须使用位于
中的
<device_tester_extract_location>
/configs/device.jsondevice.json
模板提供此信息:
[ { "id": "
<pool-id>
", "sku": "<sku>
", "features": [ { "name": "arch", "value": "x86_64 | armv6l | armv7l | aarch64" }, { "name": "ml", "value": "dlr | tensorflowlite | dlr,tensorflowlite | no" }, { "name": "docker", "value": "yes | no" }, { "name": "streamManagement", "value": "yes | no" }, { "name": "hsi", "value": "hsm | no" } ], "devices": [ { "id": "<device-id>
", "operatingSystem": "Linux | Windows", "connectivity": { "protocol": "ssh", "ip": "<ip-address>
", "port": 22, "publicKeyPath": "<public-key-path>
", "auth": { "method": "pki | password", "credentials": { "user": "<user-name>
", "privKeyPath": "/path/to/private/key
", "password": "<password>
" } } } } ] } ]
只有当 method
设置为 pki
时才指定 privKeyPath
。
只有当 method
设置为 password
时才指定 password
。
所有包含值的属性都是必需的,如下所述:
id
-
一个用户定义的字母数字 ID,用于唯一地标识称作设备池的设备集合。属于池的设备必须具有相同的硬件。运行一组测试时,池中的设备将用于对工作负载进行并行化处理。多个设备用于运行不同测试。
sku
-
唯一标识所测试设备的字母数字值。该 SKU 用于跟踪符合条件的主板。
注意 如果您想在设备目录中列出您的Amazon Partner设备,则在此处指定的 SKU 必须与您在上架过程中使用的 SKU 相匹配。
features
-
包含设备支持的功能的数组。所有功能都是必需的。
arch
-
测试运行所验证的支持的操作系统架构。有效值为:
-
x86_64
-
armv6l
-
armv7l
-
aarch64
-
ml
-
验证设备是否满足使用Amazon提供的机器学习 (ML) 组件所需的所有技术依赖关系。
启用此功能还可验证设备是否可以使用深度学习运行时
和TensorFlow 精简版 ML 框架执行 ML 推断。 有效值是
dlr
和tensorflowlite
或的任意组合no
。 docker
-
验证设备是否满足使用Amazon提供的 Docker 应用程序管理器 (
aws.greengrass.DockerApplicationManager
) 组件所需的所有技术依赖关系。启用此功能还会验证设备是否可以从 Amazon ECR 下载 Docker 容器镜像。
有效值是
yes
或的任意组合no
。 streamManagement
-
验证设备是否可以下载、安装和运行Amazon IoT Greengrass流管理器。
有效值是
yes
或的任意组合no
。 hsi
-
验证设备是否可以使用存储在硬件安全模块 (HSM) 中的私钥和证书对与和Amazon IoT Greengrass服务的连接进行身份验证。Amazon IoT此测试还验证了Amazon提供的 PKCS #11 提供商组件是否可以使用供应商提供的 PKCS #11 库与 HSM 接口。有关更多信息,请参阅硬件安全性集成:
有效值为
hsm
或no
。
注意 IDT v4.2.0 及更高版本支持测试
ml
docker
、和streamManagement
功能。如果您不希望测试这些功能,请将相应值设置为no
。注意 测试仅适用
hsi
于 IDT v4.5.1 及更高版本。 devices.id
-
用户定义的测试的设备的唯一标识符。
devices.operatingSystem
-
设备操作系统 支持的值为
Linux
和Windows
。 connectivity.protocol
-
用于与此设备通信的通信协议。目前,唯一支持的值
ssh
是物理设备。 connectivity.ip
-
测试的设备 IP 地址。
此属性仅在
connectivity.protocol
设置为ssh
时适用。 connectivity.port
-
可选。用于 SSH 连接的端口号。
默认值为 22。
此属性仅在
connectivity.protocol
设置为ssh
时适用。 connectivity.publicKeyPath
-
可选。用于验证与被测设备的连接的公钥的完整路径。
当您指定时
publicKeyPath
,IDT 会在与被测设备建立 SSH 连接时验证设备的公钥。如果未指定此值,IDT 将创建 SSH 连接,但不验证设备的公钥。我们强烈建议您指定公钥的路径,并使用安全的方法来获取此公钥。对于基于标准命令行的 SSH 客户端,
known_hosts
文件中提供了公钥。如果您指定单独的公钥文件,则此文件必须使用与该known_hosts
文件相同的格式,即ip-address
key-type
public-key
connectivity.auth
-
连接的身份验证信息。
此属性仅在
connectivity.protocol
设置为ssh
时适用。connectivity.auth.method
-
用于通过给定的连接协议访问设备的身份验证方法。
支持的值为:
-
pki
-
password
-
connectivity.auth.credentials
-
用于身份验证的凭证。
connectivity.auth.credentials.password
-
该密码用于登录到正在测试的设备。
此值仅在
connectivity.auth.method
设置为password
时适用。 connectivity.auth.credentials.privKeyPath
-
用于登录所测试设备的私有密钥的完整路径。
此值仅在
connectivity.auth.method
设置为pki
时适用。 connectivity.auth.credentials.user
-
用于登录所测试设备的用户名。
配置 userdata.json
IDT forAmazon IoT Greengrass V2 还需要有关测试工件和Amazon IoT Greengrass软件位置的更多信息。
您必须使用位于
中的
<device_tester_extract_location>
/configs/userdata.jsonuserdata.json
模板提供此信息:
{ "TempResourcesDirOnDevice": "
/path/to/temp/folder
", "InstallationDirRootOnDevice": "/path/to/installation/folder
", "GreengrassNucleusZip": "/path/to/aws.greengrass.nucleus.zip
", "PreInstalled": "yes/no
", "GreengrassV2TokenExchangeRole": "custom-iam-role-name
", "hsm": { "greengrassPkcsPluginJar": "/path/to
/aws.greengrass.crypto.Pkcs11Provider-latest.jar", "pkcs11ProviderLibrary": "/path/to/pkcs11-vendor-library
", "slotId": "slot-id
", "slotLabel": "slot-label
", "slotUserPin": "slot-pin
", "keyLabel": "key-label
", "preloadedCertificateArn": "certificate-arn
" "rootCA": "path/to/root-ca
" } }
所有包含值的属性都是必需的,如下所述:
TempResourcesDirOnDevice
-
被测设备上用于存储测试构件的临时文件夹的完整路径。确保写入此目录不需要 sudo 权限。
注意 IDT 运行完测试后会删除此文件夹的内容。
InstallationDirRootOnDevice
-
设备上要安装的文件夹的完整路径Amazon IoT Greengrass。对于PreInstalled Greengrass 来说,这是指向 Greengrass 安装目录的路径。
必须为此文件夹设置所需的文件权限。对安装路径中的每个文件夹运行以下命令。
sudo chmod 755
folder-name
GreengrassNucleusZip
-
主机上 Greengrass nucleus ZIP (
greengrass-nucleus-latest.zip
) 文件的完整路径。使用 PreInstalled Greengrass 进行测试时,此字段不是必填字段。注意 有关 IDT 的 Greengrass 核心支持版本的信息Amazon IoT Greengrass,请参阅Amazon IoT GreengrassV2 的最新 IDT 版本。要下载最新的 Greengrass 软件,请参阅下载该Amazon IoT Greengrass软件。
PreInstalled
-
此功能仅适用于 Linux 设备上的 IDT v4.5.8 及更高版本。
(可选)当值为
yes
时,IDT 将假定中InstallationDirRootOnDevice
提到的路径是安装 Greengrass 的目录。有关如何在您的设备上安装 Greengrass 的更多信息,请参阅安装具有自动资源配置功能的Amazon IoT Greengrass Core 软件。IDT 假设事物和事物组是在安装设置期间创建的。确保这些值反映在
effectiveConfig.yaml
文件中。IDT 正在检查effectiveConfig.yaml
下面的文件<InstallationDirRootOnDevice>/config/effectiveConfig.yaml
。要使用 HSM 运行测试,请确保在中更新了该
aws.greengrass.crypto.Pkcs11Provider
字段effectiveConfig.yaml
。 -
GreengrassV2TokenExchangeRole
-
(可选)您要用作代币交换角色的自定义 IAM 角色,被测设备假定该角色与Amazon资源进行交互。
注意 IDT 在测试运行期间使用此自定义 IAM 角色,而不是创建默认的代币交换角色。如果您使用自定义角色,则可以更新测试用户的 IAM 权限,以排除允许用户创建和删除 IAM 角色和策略的
iamResourcesUpdate
语句。有关创建自定义 IAM 角色作为代币交换角色的更多信息,请参阅配置自定义令牌交换角色。
hsm
-
此功能适用于 IDT v4.5.1 及更高版本。
(可选)使用Amazon IoT Greengrass硬件安全模块 (HSM) 进行测试的配置信息。否则,应忽略
hsm
属性。有关更多信息,请参阅硬件安全性集成:此属性仅在
connectivity.protocol
设置为ssh
时适用。警告 如果硬件安全模块在 IDT 和其他系统之间共享,则可以将 HSM 配置视为敏感数据。在这种情况下,您可以通过将这些配置值存储在 Parameter StorAmazon SecureString e 参数中并将 IDT 配置为在测试执行期间提取这些值来避免以明文形式保护这些值。有关更多信息,请参阅 从Amazon参数存储中获取配置
hsm.greengrassPkcsPluginJar
-
您下载到 IDT 主机的 PKCS #11 提供商组件的完整路径。 Amazon IoT Greengrass以 JAR 文件形式提供此组件,您可以下载该文件在安装期间将其指定为配置插件。你可以通过以下 URL 下载该组件的 JAR 文件的最新版本:https://d2s8p88vqu9w66.cloudfront.net/releases/Pkcs11Provider/aws.greengrass.crypto.Pkcs11Provider-latest.jar
。 hsm.pkcs11ProviderLibrary
-
硬件安全模块 (HSM) 供应商提供的用于与 HSM 交互的 PKCS #11 库的完整路径。
hsm.slotId
-
用于标识加载密钥和证书的 HSM 插槽的插槽 ID。
hsm.slotLabel
-
用于标识加载密钥和证书的 HSM 插槽的插槽标签。
hsm.slotUserPin
-
IDT 用来向 HSM 验证Amazon IoT Greengrass核心软件的用户 PIN。
注意 作为安全最佳实践,请勿在生产设备上使用同一个用户 PIN。
hsm.keyLabel
-
用于标识硬件模块中的键的标签。密钥和证书都必须使用相同的密钥标签。
hsm.preloadedCertificateArn
-
Amazon IoT云中上传的设备证书的 Amazon 资源名称(ARN)。
您必须事先使用 HSM 中的密钥生成了此证书,将其导入到您的 HSM 中,然后上传到Amazon IoT云端。有关生成和导入证书的信息,请参阅 HSM 文档。
您必须将证书上传到您在 config.json 中提供的同一个账户和区域。 。有关将证书上传到的更多信息Amazon IoT,请参阅《Amazon IoT开发者指南》中的手动注册客户端证书。
hsm.rootCAPath
-
(可选)IDT 主机上到签署证书的根证书颁发机构 (CA) 的完整路径。如果您在 HSM 中创建的证书不是由 Amazon 根 CA 签名的,则此为必填项。
从Amazon参数存储中获取配置
Amazon IoT设备测试器 (IDT) 包括一项可选功能,用于从S Amazonystems Manager 参数库中提取配置值。 Amazon参数存储允许对配置进行安全和加密的存储。配置后,IDT 可以从 Parameter StorAmazon e 中提取参数,而不是在userdata.json
文件中以纯文本形式存储参数。这对于任何应加密存储的敏感数据都很有用,例如:密码、PIN 和其他机密。
-
要使用此功能,必须更新创建 IDT 用户时使用的权限,以允许对 IDT 配置使用的参数 GetParameter 执行操作。以下是可以添加给 IDT 用户的权限声明的示例。有关更多信息,请参阅Amazon Systems Manager用户指南。
{ "Sid":"parameterStoreResources", "Effect": "Allow", "Action": [ "ssm:GetParameter" ], "Resource": "arn:aws:ssm:*:*:parameter/IDT*" }
上述权限配置为允许使用通配符获取名称以开头的所有参数
*
。IDT
您应该根据需要对其进行自定义,以便 IDT 有权根据您正在使用的参数的命名获取任何已配置的参数。 -
你需要将你的配置值存储在Amazon Paramater Store 中。这可以通过Amazon控制台或Amazon CLI 完成。 Amazon参数存储允许您选择加密或未加密的存储。要存储机密、密码和 PIN 等敏感值,应使用加密选项,其参数类型为 SecureString。要使用Amazon CLI 上传参数,可以使用以下命令:
aws ssm put-parameter --name IDT-example-name --value IDT-example-value --type SecureString
您可以使用以下命令验证参数是否已存储。(可选)使用该
--with-decryption
标志获取解密后的SecureString 参数。aws ssm get-parameter --name IDT-example-name
使用Amazon CLI 将在当前 CLI 用户Amazon所在的区域上传参数,IDT 将从中配置的区域获取参数
config.json
。要Amazon通过 CLI 查看您的区域,请使用以下命令:aws configure get region
-
在Amazon云端获得配置值后,您可以更新 IDT 配置中的任何值,以便从Amazon云端获取。为此,您可以在表单
{{AWS.Parameter.parameter_name}}
的 IDT 配置中使用占位符从参数存储中按该名称提取Amazon参数。例如,假设您要在 HSM 配置中使用步骤 2 中的
IDT-example-name
参数作为 HSM 密钥标签。为此,可以对您进行更新userdata.json
,如下所示:"hsm": { "keyLabel": "{{AWS.Parameter.IDT-example-name}}", [...] }
IDT 将在运行时提取在步骤 2
IDT-example-value
中设置的此参数的值。此配置与设置类似,"keyLabel": "IDT-example-value"
但相反,该值以加密形式存储在Amazon云中。