准备安全性 - Amazon IoT Core
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

准备安全性

本节讨论 Software Package Catal Amazon IoT Device Management og 的主要安全要求。

基于资源的身份验证

在更新实例集中的软件时,软件包目录使用基于资源的授权来提高安全性。这意味着您必须创建一个 Amazon Identity and Access Management (IAM) 策略,该策略授予对软件包和软件包版本执行createreadupdatedelete、、和list操作的权限,并在该Resources部分中引用要部署的特定软件包和软件包版本。您也需要这些权限,以便更新预留命名影子。您可以通过为每个实体包括 Amazon 资源名称(ARN)来引用软件包和软件包版本。

注意

如果您打算通过策略授予软件包版本 API 调用的权限(例如CreatePackageVersionUpdatePackageVersion、、DeletePackageVersion),则需要在策略中同时包含软件包和软件包版本 ARN。如果您打算通过策略授予软件包 API 调用(例如CreatePackageUpdatePackage、和 DeletePackage)的权限,则必须在策略中仅包含软件包 ARN。

按如下方式构造软件包 ARN 和软件包版本 ARN:

  • 软件包:arn:aws:iot:<region>:<accountID>:package/<packageName>/package

  • 程序包版本:arn:aws:iot:<region>:<accountID>:package/<packageName>/version/<versionName>

注意

您还可以此策略中包含其它相关权限。例如,您可以为 jobthinggroupjobtemplate 加入一个 ARN。有关更多信息以及策略选项的完整列表,请参阅使用Amazon IoT 任务保护用户和设备

例如,如果您的软件包和软件包版本命名如下:

  • Amazon IoT 东西:myThing

  • 软件包名称:samplePackage

  • 版本 1.0.0

该策略可能类似于以下示例:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:createPackage", "iot:createPackageVersion", "iot:updatePackage", "iot:updatePackageVersion" ], "Resource": [ "arn:aws:iot:us-east-1:111122223333:package/samplePackage", "arn:aws:iot:us-east-1:111122223333:package/samplePackage/version/1.0.0" ] }, { "Effect": "Allow", "Action": [ "iot:GetThingShadow", "iot:UpdateThingShadow" ], "Resource": "arn:aws:iot:us-east-1:111122223333:thing/myThing/$package" } ] }

Amazon IoT 部署包版本的 Job 权限

出于安全考虑,您务必授予部署软件包和软件包版本的权限,并指定允许部署的特定软件包和软件包版本。为此,您需要创建 IAM 角色和策略,以授予使用软件包版本部署任务的权限。该策略必须将目标软件包版本指定为资源。

IAM policy

IAM policy 授予创建任务的权限,此任务包括在 Resource 部分中指定的软件包和版本。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:CreateJob", "iot:CreateJobTemplate" ], "Resource":[ "arn:aws:iot:*:111122223333:job/<jobId>", "arn:aws:iot:*:111122223333:thing/<thingName>/$package", "arn:aws:iot:*:111122223333:thinggroup/<thingGroupName>", "arn:aws:iot:*:111122223333:jobtemplate/<jobTemplateName>", "arn:aws:iot:*:111122223333:package/<packageName>/version/<versionName>" ] } ] }
注意

如果要部署卸载软件包和软件包版本的任务,则必须授权其中软件包版本为 $null 的 ARN,如下所示:

arn:aws:iot:<regionCode>:111122223333:package/<packageName>/version/$null

Amazon IoT 更新保留的名为 shadow 的 Job 权限

要允许任务在任务成功完成时更新事物的预留名称影子,您必须创建 IAM 角色和策略。有两种方法可以在 Amazon IoT 控制台中执行此操作。第一种是在控制台中创建软件包时。如果您看到为软件包管理启用依赖项对话框,则可以选择使用现有角色或创建新角色。或者,在 Amazon IoT 控制台中,选择设置,选择管理索引,然后选择管理设备软件包和版本的索引

注意

如果您选择在 Amazon IoT 任务成功完成时让 Job 服务更新预留的名为 shadow,则 API 调用将计入您的 Dev ice Shadow 和注册表操作,并且可能会产生费用。有关更多信息,请参阅Amazon IoT Core 定价

使用创建角色选项时,所生成角色的名称以 aws-iot-role-update-shadows 开头并包含以下策略:

设置角色

权限

权限策略授予查询和更新事物影子的权限。资源 ARN 中的 $package 参数以预留命名影子为目标。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iot:DescribeEndpoint", "Resource": "" }, { "Effect": "Allow", "Action": [ "iot:GetThingShadow", "iot:UpdateThingShadow" ], "Resource": [ "arn:aws:iot:<regionCode>:111122223333:thing/<thingName>/$package" ] } ] }
信任关系

除了权限策略外,该角色还需要与 Amazon IoT Core 建立信任关系,以便实体可以代入该角色并更新预留命名影子。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

设置用户策略

iam:PassRole 权限

最后,在调用 UpdatePackageConfigurationAPI 操作 Amazon IoT Core 时,您必须拥有将角色传递给的权限。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:PassRole", "iot:UpdatePackageConfiguration" ], "Resource": "arn:aws:iam::111122223333:role/<roleName>" } ] }

Amazon IoT 从 Amazon S3 下载的任务权限

任务文件保存在 Amazon S3 中。当您通过 Amazon IoT Jobs 进行分派时,应参考该文件。您必须向 Amazon IoT Jobs 提供下载文件的权限 (s3:GetObject)。您还必须在 Amazon S3 和 Amazon IoT Jobs 之间设置信任关系。有关创建这些策略的说明,请参阅管理任务中的预签名 URL