本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
授權您的裝置安全地在資料平面上使用 AWS IoT 任務
若要授權您的裝置與資料平面上的 AWS IoT 任務安全地互動,您必須使用 AWS IoT Core policy. AWS IoT Core policies 進行任務,這是包含政策陳述式JSON的文件。這些政策也會使用 Effect 、Action 和 Resource 元素,並遵循與IAM政策類似的慣例。如需 元素的詳細資訊,請參閱 IAM 使用者指南 中的IAMJSON政策元素參考。
這些政策可與 MQTT 和 HTTPS通訊協定搭配使用,且必須使用 TCP或 TLS 相互身分驗證來驗證裝置。以下介紹如何跨不同的通訊協定使用這些政策。
警告
建議您不要使用萬用字元許可,例如"Action": ["iot:*"]
在您的IAM政策中 AWS IoT Core 。使用萬用字元許可不是推薦的安全最佳實務。如需詳細資訊,請參閱AWS IoT 過度寬鬆的政策。
AWS IoT Core MQTT通訊協定的政策
AWS IoT Core MQTT通訊協定的政策會授予您使用任務裝置MQTTAPI動作的許可。MQTT API 操作用於處理為任務命令預留MQTT的主題。如需這些API操作的詳細資訊,請參閱 任務裝置MQTTAPI操作。
MQTT 政策會使用政策動作,例如 iot:Connect
、iot:Subscribe
、 iot:Publish
和 iot:Receieve
來使用任務主題。這些政策可讓您連線至訊息代理程式、訂閱任務MQTT主題,以及在裝置與雲端之間傳送和接收MQTT訊息。如需這些動作的詳細資訊,請參閱《AWS IoT Core 政策動作》。
如需 AWS IoT 任務主題的相關資訊,請參閱 任務主題。
以下範例說明如何使用 iot:Publish
和 iot:Subscribe
發佈和訂閱任務和任務執行。
在該範例中,替換:
-
region
, AWS 區域例如us-east-1
。 -
account-id
您的 AWS 帳戶 號碼,例如57EXAMPLE833
。 -
thing-name
使用您要鎖定任務的 IoT 物件名稱,例如MyIoTThing
。
{ "Statement": [ { "Effect": "Allow", "Action": [ "iot:Publish", "iot:Subscribe" ], "Resource": [ "arn:aws:iot:
region
:account-id
:topic/$aws/events/job/*", "arn:aws:iot:region
:account-id
:topic/$aws/events/jobExecution/*", "arn:aws:iot:region
:account-id
:topic/$aws/things/thing-name
/jobs/*" ] } ], "Version": "2012-10-17" }
AWS IoT Core HTTPS通訊協定的政策
AWS IoT Core 資料平面上的 政策也可以搭配TLS身分驗證機制使用HTTPS通訊協定來授權您的裝置。在資料平面上,政策會使用iotjobsdata:
字首來授權裝置可執行的任務API操作。例如,iotjobsdata:DescribeJobExecution
政策動作會授予使用者使用 DescribeJobExecution
的許可API。
注意
資料平面政策動作必須使用 iotjobsdata:
字首。在控制平面上,動作必須使用 iot:
字首。如需同時使用控制平面和資料平面IAM政策動作時的範例政策,請參閱 IAM 控制平面和資料平面的政策範例。
下表顯示授權裝置使用 API動作 AWS IoT Core 的政策動作和許可清單。如需您可以在資料平面中執行API的操作清單,請參閱 任務裝置 HTTP API。
注意
這些任務執行政策動作僅適用於HTTPTLS端點。如果您使用MQTT端點,則必須使用先前定義的MQTT政策動作。
政策動作 | API 操作 | 資源類型 | 描述 |
---|---|---|---|
iotjobsdata:DescribeJobExecution |
DescribeJobExecution |
|
代表可擷取任務執行的許可。每次發出擷取任務執行的要求時,就會檢查一次 iotjobsdata:DescribeJobExecution 許可。 |
iotjobsdata:GetPendingJobExecutions |
GetPendingJobExecutions |
物件 | 代表可擷取任務 (對物件來說並非結束狀態) 之清單的許可。每次發出擷取清單的要求時,就會檢查一次 iotjobsdata:GetPendingJobExecutions 許可。 |
iotjobsdata:StartNextPendingJobExecution |
StartNextPendingJobExecution |
物件 | 代表可取得並啟動物件之下一個待定任務執行的許可。也就是將任務執行狀態由 QUEUED 更新為 IN_PROGRESS 。每次發出啟動下一個待定任務執行的要求時,就會檢查一次 iotjobsdata:StartNextPendingJobExecution 許可。 |
iotjobsdata:UpdateJobExecution |
UpdateJobExecution |
物件 | 代表可更新任務執行的許可。每次發出更新任務執行狀態的要求時,就會檢查一次 iotjobsdata:UpdateJobExecution 許可。 |
下列顯示政策的範例,該 AWS IoT Core 政策授予許可,以針對任何資源執行資料平面API操作的動作。您可以將政策範圍限定為特定資源,例如 IoT 物件。在您的範例中,替換:
-
region
您的 , AWS 區域 例如us-east-1
。 -
account-id
您的 AWS 帳戶 號碼,例如57EXAMPLE833
。 -
thing-name
使用 IoT 物件的名稱,例如MyIoTthing
。
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "iotjobsdata:GetPendingJobExecutions", "iotjobsdata:StartNextPendingJobExecution", "iotjobsdata:DescribeJobExecution", "iotjobsdata:UpdateJobExecution" ], "Effect": "Allow", "Resource": "arn:aws:iot:
region
:account-id
:thing/thing-name
" } ] }
當您的 IoT 裝置使用 AWS IoT Core 政策來存取其中一個API操作時,您必須使用這些政策的範例,例如下列 範例DescribeJobExecution
API:
GET /things/thingName/jobs/jobId?executionNumber=executionNumber&includeJobDocument=includeJobDocument&namespaceId=namespaceId HTTP/1.1