授權您的裝置安全地在資料平面上使用 AWS IoT 任務 - AWS IoT Core

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

授權您的裝置安全地在資料平面上使用 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:Connectiot:Subscribeiot:Publishiot:Receieve來使用任務主題。這些政策可讓您連線至訊息代理程式、訂閱任務MQTT主題,以及在裝置與雲端之間傳送和接收MQTT訊息。如需這些動作的詳細資訊,請參閱《AWS IoT Core 政策動作》。

如需 AWS IoT 任務主題的相關資訊,請參閱 任務主題

以下範例說明如何使用 iot:Publishiot: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政策動作。

AWS IoT Core 資料平面上的政策動作
政策動作 API 操作 資源類型 描述
iotjobsdata:DescribeJobExecution DescribeJobExecution
  • job

  • 物件

代表可擷取任務執行的許可。每次發出擷取任務執行的要求時,就會檢查一次 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操作時,您必須使用這些政策的範例,例如下列 範例DescribeJobExecutionAPI:

GET /things/thingName/jobs/jobId?executionNumber=executionNumber&includeJobDocument=includeJobDocument&namespaceId=namespaceId HTTP/1.1