

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

# 授權您的裝置在資料平面上安全地使用 AWS IoT 任務
<a name="iot-data-plane-jobs"></a>

若要授權您的裝置與資料平面上的 AWS IoT 任務安全地互動，您必須使用 AWS IoT Core policies. AWS IoT Core policies for job 是包含政策陳述式的 JSON 文件。這些政策也使用*效果*、*動作*以及*資源*元素，並遵循與 IAM 政策類似的慣例。如需這些元素的詳細資訊，請參閱《*IAM 使用者指南*》中的 [IAM JSON 政策元素參考](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_elements.html)。

這些政策可以與 MQTT 和 HTTPS 通訊協定搭配使用，並且必須使用 TCP 或 TLS 相互驗證對裝置進行身分驗證。以下介紹如何跨不同的通訊協定使用這些政策。

**警告**  
我們建議您不要使用萬用字元許可，例如在 IAM 政策`"Action": ["iot:*"]`中 AWS IoT Core 。使用萬用字元許可不是推薦的安全最佳實務。如需詳細資訊，請參閱[AWS IoT 過度寬鬆的政策](https://docs.aws.amazon.com/iot-device-defender/latest/devguide/audit-chk-iot-policy-permissive.html)。

## AWS IoT Core MQTT 通訊協定的 政策
<a name="iot-jobs-data-mqtt"></a>

AWS IoT Core MQTT 通訊協定的 政策會授予您使用任務裝置 MQTT API 動作的許可。MQTT API 操作用於處理為任務命令保留的 MQTT 主題。如需有關這些 API 操作的詳細資訊，請參閱 [任務裝置 MQTT API 操作](jobs-mqtt-api.md)。

MQTT 政策使用政策動作 (例如 `iot:Connect`、`iot:Publish`、`iot:Subscribe` 以及 `iot:Receieve`) 以處理任務主題。這些政策可讓您連線至訊息代理程式、訂閱任務 MQTT 主題，以及在您的裝置和雲端之間傳送和接收 MQTT 訊息。如需這些動作的詳細資訊，請參閱《[AWS IoT Core 政策動作](iot-policy-actions.md)》。

如需 AWS IoT 任務主題的詳細資訊，請參閱 [任務主題](reserved-topics.md#reserved-topics-job)。

### 基本 MQTT 政策範例
<a name="iot-jobs-mqtt-example"></a>

以下範例說明如何使用 `iot:Publish` 和 `iot:Subscribe` 發佈和訂閱任務和任務執行。

在該範例中，替換：
+ *區域*， AWS 區域例如 `us-east-1`。
+ *account-id* 與您的 AWS 帳戶 數字，例如 `57EXAMPLE833`。
+ *thing-name*換成您目標任務的 IoT 物件名稱，例如 `MyIoTThing`。

****  

```
{
    "Version":"2012-10-17",		 	 	 

    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish",
                "iot:Subscribe"
            ],
            "Resource": [
            "arn:aws:iot:us-east-1:123456789012:topic/$aws/events/job/*",
    "arn:aws:iot:us-east-1:123456789012:topic/$aws/events/jobExecution/*",
    "arn:aws:iot:us-east-1:123456789012:topic/$aws/things/thing-123/jobs/*"
            ]
        }
    ]
}
```

## AWS IoT Core HTTPS 通訊協定的 政策
<a name="iot-jobs-data-http"></a>

AWS IoT Core 資料平面上的 政策也可以使用 HTTPS 通訊協定搭配 TLS 身分驗證機制來授權您的裝置。資料平面上的政策使用 `iotjobsdata:` 字首來授權您的裝置可以執行的任務 API 操作。例如 `iotjobsdata:DescribeJobExecution` 政策動作會授予使用者許可使用 [https://docs.aws.amazon.com/iot/latest/apireference/API_iot-jobs-data_DescribeJobExecution.html](https://docs.aws.amazon.com/iot/latest/apireference/API_iot-jobs-data_DescribeJobExecution.html) API。

**注意**  
資料平面政策動作必須使用 `iotjobsdata:` 字首。在控制平面上，動作必須使用 `iot:` 字首。有關同時使用控制平面和資料平面政策動作時的 IAM 政策範例，請參閱 [控制平面和資料平面的 IAM 政策範例](iam-policy-users-jobs.md#iam-data-plane-example2)。

### 政策動作
<a name="iot-data-plane-actions"></a>

下表顯示授權裝置使用 API 動作 AWS IoT Core 的政策動作和許可清單。如需您可以在資料平面中執行的 API 操作清單，請參閱 [任務裝置 HTTP API](jobs-http-device-api.md)。

**注意**  
任務執行政策動作僅適用於 HTTP TLS 端點。如果您使用 MQTT 端點，必須使用前述所定義的 MQTT 政策動作。


**AWS IoT Core 資料平面上的政策動作**  

| 政策動作 | API 操作 | 資源類型 | Description | 
| --- | --- | --- | --- | 
| iotjobsdata:DescribeJobExecution | [https://docs.aws.amazon.com/iot/latest/apireference/API_iot-jobs-data_DescribeJobExecution.html](https://docs.aws.amazon.com/iot/latest/apireference/API_iot-jobs-data_DescribeJobExecution.html) |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/iot/latest/developerguide/iot-data-plane-jobs.html)  | 代表可擷取任務執行的許可。每次發出擷取任務執行的要求時，就會檢查一次 iotjobsdata:DescribeJobExecution 許可。 | 
| iotjobsdata:GetPendingJobExecutions | [https://docs.aws.amazon.com/iot/latest/apireference/API_iot-jobs-data_GetPendingJobExecutions.html](https://docs.aws.amazon.com/iot/latest/apireference/API_iot-jobs-data_GetPendingJobExecutions.html) | 物件 | 代表可擷取任務 (對物件來說並非結束狀態) 之清單的許可。每次發出擷取清單的要求時，就會檢查一次 iotjobsdata:GetPendingJobExecutions 許可。 | 
| iotjobsdata:StartNextPendingJobExecution | [https://docs.aws.amazon.com/iot/latest/apireference/API_iot-jobs-data_GetPendingJobExecutions.html](https://docs.aws.amazon.com/iot/latest/apireference/API_iot-jobs-data_GetPendingJobExecutions.html) | 物件 | 代表可取得並啟動物件之下一個待定任務執行的許可。也就是將任務執行狀態由 QUEUED 更新為 IN\$1PROGRESS。每次發出啟動下一個待定任務執行的要求時，就會檢查一次 iotjobsdata:StartNextPendingJobExecution 許可。 | 
| iotjobsdata:UpdateJobExecution | [https://docs.aws.amazon.com/iot/latest/apireference/API_iot-jobs-data_UpdateJobExecution.html](https://docs.aws.amazon.com/iot/latest/apireference/API_iot-jobs-data_UpdateJobExecution.html) | 物件 | 代表可更新任務執行的許可。每次發出更新任務執行狀態的要求時，就會檢查一次 iotjobsdata:UpdateJobExecution 許可。 | 

### 基本政策範例
<a name="iot-data-plane-example"></a>

以下顯示 AWS IoT Core 政策的範例，該政策授予對任何資源的資料平面 API 操作執行動作的許可。您可以將政策範圍限定為特定資源，例如 IoT 物件。在您的範例中，替換：
+ *區域*， 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:us-east-1:123456789012:thing/thing-123"
        }
    ]
}
```

對於必須使用這些政策的時機，一個範例是當 IoT 裝置使用 AWS IoT Core 政策來存取這些 API 操作的其中之一時，例如以下的 `DescribeJobExecution` API 範例：

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