準備安全性 - AWS IoT Core

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

準備安全性

本節討論「 AWS IoT Device Management 軟體 Package 件目錄」的主要安全性需求。

以資源為基礎的身分驗證

軟體套件目錄在更新機群上的軟體時,會使用以資源為基礎的授權來提升安全性。這表示您必須建立一個 AWS Identity and Access Management (IAM) 原則,以授與對軟體套裝程式和套裝軟體版本執行createreadupdatedelete、、和list動作的權限,並參照您要在本Resources節中部署的特定軟體套裝程式和套裝程式版本。您也需要這些權限,以便更新預留已命名影子。您可以透過為每個實體包含 Amazon 資源名稱 (ARN) 來參考軟體套件和套件版本。

注意

如果您打算讓原則授與套件版本API呼叫的權限 (例如CreatePackageVersionUpdatePackageVersion、、DeletePackageVersion),則您必須ARNs在原則中同時包含軟體套件和套件版本。如果您打算將軟體套件API呼叫授與權限 (例如CreatePackageUpdatePackage、和 DeletePackage),則您必須在原則ARN中僅包含軟體套件。

構建軟件包和軟件包版本ARNs如下:

  • 軟體套件:arn:aws:iot:<region>:<accountID>:package/<packageName>/package

  • 套件版本:arn:aws:iot:<region>:<accountID>:package/<packageName>/version/<versionName>

注意

您可能會在此政策中納入其他相關權利。例如,您可以ARN包括jobthinggroup、和jobtemplate。如需詳細資訊和原則選項的完整清單,請參閱使用AWS IoT 工作保護使用者和裝置

例如,若您有如下名稱的軟體套件和套件版本:

  • AWS 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" } ] }

AWS IoT 部署套件版本的 Job 權限

基於安全考量,您必須授予部署套件和套件版本的權限,並為允許部署的特定套件和套件版本命名。若要這麼做,您可以建立IAM角色和原則,以授與使用套件版本部署工作的權限。政策必須將目的地套件版本指定為資源。

IAM政策

此IAM原則授予建立工作的權利,其中包含在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>" ] } ] }
注意

如果您要部署解除安裝軟體套件和套件版本的工作,您必須授權套件版本所在的ARN位置$null,如下所示:

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

AWS IoT 更新保留的命名陰影的 Job 權限

若要允許工作在工作順利完成時更新物件的保留名稱陰影,您必須建立IAM角色和原則。您可以在 AWS IoT 控制台透過兩種方式執行此動作。第一,在控制台建立軟體套件時。若您看到啟用套件管理的相依性對話方塊,您可以選擇使用現有角色或建立新角色。或者,在 AWS IoT 主控台選擇設定,接著選擇管理索引以及管理裝置套件和版本的索引

注意

如果您選擇讓 AWS IoT Job 服務在工作順利完成時更新保留的具名陰影,則API呼叫會計入 Device Shadow 和登錄作業,並可能產生費用。如需詳細資訊,請參閱 AWS IoT Core 定價

使用建立角色選項時產生的角色名稱開頭為 aws-iot-role-update-shadows 且包含下列政策:

設定角色

許可

權限政策授予查詢和更新物件影子的權限。資源中的$package參數以保留的命名陰影為ARN目標。

{ "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" ] } ] }
信任關係

除了權限政策之外,角色也需要與 AWS IoT Core 的信任關係,以便實體擔任該角色並更新預留已命名影子。

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

設定使用者政策

IAM:PassRole 許可

最後,您必須具有在呼叫 UpdatePackageConfigurationAPI作業 AWS IoT Core 時將角色傳遞給該角色的權限。

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

AWS IoT 可從 Amazon S3 下載的任務許可

任務文件會儲存於 Amazon S3。透過 AWS IoT 任務分派時,請參考此檔案。您必須向 AWS IoT 工作提供下載檔案的權限 (s3:GetObject)。您也必須在 Amazon S3 和 AWS IoT 任務之間建立信任關係。如需建立這些原則的指示,請參閱管理工作URLs中的預先簽署