本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
本節討論 AWS IoT Device Management 軟體套件目錄的主要安全需求。
以資源為基礎的身分驗證
軟體套件目錄在更新機群上的軟體時,會使用以資源為基礎的授權來提升安全性。這表示您必須建立 AWS Identity and Access Management (IAM) read
update
政策,以授予對軟體套件和套件版本執行 create
、delete
、、 和 list
動作的權限,並參考您想要在 Resources
區段中部署的特定軟體套件和套件版本。您也需要這些權限,以便更新預留已命名影子。您可以為每個實體加入 Amazon Resource Name (ARN),以參考軟體套件和套件版本。
注意
如果您想要政策授予套件版本API呼叫 (例如 CreatePackageVersion、UpdatePackageVersion、DeletePackageVersion) 的權限,則需要在政策ARNs中同時包含軟體套件和套件版本。如果您想要政策授予 軟體套件API呼叫 (例如 CreatePackage、 UpdatePackage和 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 部署套件版本的任務許可
基於安全考量,您必須授予部署套件和套件版本的權限,並為允許部署的特定套件和套件版本命名。若要這麼做,您可以建立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 更新預留名稱影子的任務權限
若要允許任務在任務成功完成時更新物件的預留名稱影子,您必須建立IAM角色和政策。您可以在 AWS IoT 控制台透過兩種方式執行此動作。第一,在控制台建立軟體套件時。若您看到啟用套件管理的相依性對話方塊,您可以選擇使用現有角色或建立新角色。或者,在 AWS IoT 主控台選擇設定,接著選擇管理索引以及管理裝置套件和版本的索引。
注意
如果您選擇讓 AWS IoT 任務服務在任務成功完成時更新保留的具名影子,則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 許可
-
最後,當您呼叫 UpdatePackageConfiguration API 操作 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。
更新套件版本之軟體物料清單的許可
若要在 Published
、 Draft
或Deprecated
生命週期狀態更新套件版本的軟體物料清單,您需要一個 AWS Identity and Access Management 角色和政策,才能在 Amazon S3 中放置新的軟體物料清單,並在 中更新套件版本 AWS IoT Core。
首先,您將將更新的軟體材料清單放入版本化的 Amazon S3 儲存貯體,並使用包含的sboms
參數呼叫 UpdatePackageVersion
API 操作。接下來,您的授權委託人將擔任您建立IAM的角色,在 Amazon S3 中尋找更新的軟體材料清單,並在 AWS IoT Core 軟體套件目錄中更新套件版本。
執行此更新需要下列政策:
政策
-
信任政策 與擔任 IAM角色的獲授權委託人建立信任關係,以便其可以在 Amazon S3 中從版本控制儲存貯體找到更新的軟體材料帳單,並在 中更新套件版本 AWS IoT Core。
-
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
-
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
-
-
許可政策 :存取 Amazon S3 版本控制的儲存貯體的政策,其中儲存套件版本的軟體材料清單,並在 中更新套件版本 AWS IoT Core。
-
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::
awsexamplebucket1
" ] } ] } -
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:UpdatePackageVersion" ], "Resource": [ "arn:aws:iot:*:
111122223333
:package/<packageName>
/version/<versionName>
" ] } ] }
-
-
傳遞角色許可 :政策授予許可,以將IAM角色傳遞至 Amazon S3,並在您呼叫
UpdatePackageVersion
API操作 AWS IoT Core 時傳遞角色。-
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:PassRole", "s3:GetObject" ], "arn:aws:s3:::
awsexamplebucket1
" } ] } -
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:PassRole", "iot:UpdatePackageVersion" ], "Resource": "arn:aws:iam::
111122223333
:role/<roleName>
" } ] }
-
注意
您無法更新已轉換為Deleted
生命週期狀態之套件版本的軟體物料清單。
如需為 AWS 服務建立IAM角色的詳細資訊,請參閱建立角色以將許可委派給 AWS 服務。
如需建立 Amazon S3 儲存貯體和將物件上傳至其中的詳細資訊,請參閱建立儲存貯體和上傳物件。