本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
準備安全性
本節討論「 AWS IoT Device Management 軟體 Package 件目錄」的主要安全性需求。
以資源為基礎的身分驗證
軟體套件目錄在更新機群上的軟體時,會使用以資源為基礎的授權來提升安全性。這表示您必須建立一個 AWS Identity and Access Management (IAM) 原則,以授與對軟體套裝程式和套裝軟體版本執行create
read
update
delete
、、和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包括job
thinggroup
、和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中的預先簽署。