本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
授權您的裝置在資料平面上安全地使用 AWS IoT 任務
若要授權您的裝置與資料平面上的 AWS IoT 任務安全地互動,您必須使用 AWS IoT Core policies. AWS IoT Core policies for job 是包含政策陳述式的 JSON 文件。這些政策也使用效果、動作以及資源元素,並遵循與 IAM 政策類似的慣例。如需這些元素的詳細資訊,請參閱《IAM 使用者指南》中的 IAM JSON 政策元素參考。
這些政策可以與 MQTT 和 HTTPS 通訊協定搭配使用,並且必須使用 TCP 或 TLS 相互驗證對裝置進行身分驗證。以下介紹如何跨不同的通訊協定使用這些政策。
警告
我們建議您不要使用萬用字元許可,例如"Action": ["iot:*"]
在 IAM 政策中 AWS IoT Core 。使用萬用字元許可不是推薦的安全最佳實務。如需詳細資訊,請參閱AWS IoT 過度寬鬆的政策。
AWS IoT Core MQTT 通訊協定的 政策
AWS IoT Core MQTT 通訊協定的 政策授予您使用任務裝置 MQTT API 動作的許可。MQTT API 操作用於處理為任務命令保留的 MQTT 主題。如需有關這些 API 操作的詳細資訊,請參閱 任務裝置 MQTT API 操作。
MQTT 政策使用政策動作 (例如 iot:Connect
、iot:Publish
、iot:Subscribe
以及 iot:Receieve
) 以處理任務主題。這些政策可讓您連線至訊息代理程式、訂閱任務 MQTT 主題,以及在您的裝置和雲端之間傳送和接收 MQTT 訊息。如需這些動作的詳細資訊,請參閱《AWS IoT Core 政策動作》。
如需 AWS IoT 任務主題的詳細資訊,請參閱 任務主題。
以下範例說明如何使用 iot:Publish
和 iot:Subscribe
發佈和訂閱任務和任務執行。
在該範例中,替換:
-
區域
AWS 區域,例如us-east-1
。 -
account-id
與您的 AWS 帳戶 數字,例如57EXAMPLE833
。 -
thing-name
換成您目標任務的 IoT 物件名稱,例如MyIoTThing
。
AWS IoT Core HTTPS 通訊協定的 政策
AWS IoT Core 資料平面上的 政策也可以使用 HTTPS 通訊協定搭配 TLS 身分驗證機制來授權您的裝置。資料平面上的政策使用 iotjobsdata:
字首來授權您的裝置可以執行的任務 API 操作。例如 iotjobsdata:DescribeJobExecution
政策動作會授予使用者許可使用 DescribeJobExecution
API。
注意
資料平面政策動作必須使用 iotjobsdata:
字首。在控制平面上,動作必須使用 iot:
字首。有關同時使用控制平面和資料平面政策動作時的 IAM 政策範例,請參閱 控制平面和資料平面的 IAM 政策範例。
下表顯示授權裝置使用 API 動作 AWS IoT Core 的政策動作和許可清單。如需您可以在資料平面中執行的 API 操作清單,請參閱 任務裝置 HTTP API。
注意
任務執行政策動作僅適用於 HTTP TLS 端點。如果您使用 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 物件。在您的範例中,替換:
-
區域
, AWS 區域 例如us-east-1
。 -
account-id
與您的 AWS 帳戶 數字,例如57EXAMPLE833
。 -
thing-name
換成 IoT 物件名稱,例如MyIoTthing
。
對於必須使用這些政策的時機,一個範例是當 IoT 裝置使用 AWS IoT Core 政策來存取這些 API 操作的其中之一時,例如以下的 DescribeJobExecution
API 範例:
GET /things/thingName/jobs/jobId?executionNumber=executionNumber&includeJobDocument=includeJobDocument&namespaceId=namespaceId HTTP/1.1