データプレーンで AWS IoTジョブを安全に使用することをデバイスに許可する - AWS IoT Core

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

データプレーンで AWS IoTジョブを安全に使用することをデバイスに許可する

デバイスがデータプレーン上のAWS IoTジョブと安全にやり取りすることを許可するには、AWS IoT Corepolicies.AWS IoT Corepolicies for jobs をポリシーステートメントを含む JSON ドキュメントとして使用する必要があります。これらのポリシーでは効果アクション、およびリソースの各要素を使用し、IAM ポリシーと同様の規則に従います。要素の詳細については、IAM ユーザーガイドの「IAM JSON ポリシーの要素のリファレンス」を参照してください。

ポリシーは MQTT プロトコルと HTTPS プロトコルの両方で使用でき、デバイスを認証するには TCP または TLS 相互認証を使用する必要があります。以下に、さまざまな通信プロトコルでこれらのポリシーを使用する方法を示します。

警告

IAM ポリシーや ポリシーなど"Action": ["iot:*"]では、ワイルドカードアクセス許可を使用しないことをお勧めしますAWS IoT Core。ワイルドカードアクセス許可の使用は、セキュリティ上のベストプラクティスとして推奨されません。詳細については、「アクセス許可が過度に寛容な AWS IoT ポリシー」を参照してください。

AWS IoT CoreMQTT プロトコルの ポリシー

AWS IoT CoreMQTT プロトコルの ポリシーは、ジョブデバイスの MQTT API アクションを使用するアクセス許可を付与します。MQTT API オペレーションは、ジョブコマンド用に予約されている MQTT トピックを操作するために使用されます。これらの API オペレーションの詳細については、「ジョブデバイス MQTT API オペレーション」を参照してください。

MQTT ポリシーは、iot:Connectiot:Publishiot:Subscribeiot:Receieve などのポリシーアクションを使用して、ジョブトピックと連携します。これらのポリシーにより、メッセージブローカーへの接続、ジョブズ MQTT トピックのサブスクライブ、デバイスとクラウド間の MQTT メッセージの送受信を行うことができます。これらのアクションの詳細については、「AWS IoT Coreポリシーアクション」を参照してください。

AWS IoTジョブのトピックについては、「」を参照してくださいジョブのトピック

次の例は、iot:Publishiot: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-name/jobs/*" ] } ] }

AWS IoT CoreHTTPS プロトコルの ポリシー

データプレーン上のAWS IoT Coreポリシーは、TLS 認証メカニズムを備えた HTTPS プロトコルを使用して、デバイスを認可することもできます。データプレーンでは、ポリシーは iotjobsdata: プレフィックスを使用して、デバイスが実行できるジョブ API オペレーションを承認します。例えば、iotjobsdata:DescribeJobExecution ポリシーアクションは、DescribeJobExecution API を使用するアクセス許可をユーザーに付与します。

注記

データプレーンポリシーアクションは、iotjobsdata: プレフィックスを使用する必要があります。コントロールプレーンでは、アクションは iot: プレフィックスを使用する必要があります。コントロールプレーンとデータプレーンの両方のポリシーアクションを使用する場合の IAM ポリシーの例については、「コントロールプレーンとデータプレーン両方の IAM ポリシーの例」を参照してください。

次の表は、デバイスに API アクションの使用を許可するためのAWS IoT Coreポリシーアクションとアクセス許可のリストを示しています。データプレーンで実行できる API オペレーションのリストについては、「ジョブデバイス MQTT API」を参照してください。

注記

これらのジョブ実行ポリシーアクションは、HTTP TLS エンドポイントにのみ適用されます。MQTT エンドポイントを使用する場合は、以前に定義された MQTT ポリシーアクションを使用する必要があります。

AWS IoT Coreデータプレーンでの ポリシーアクション
ポリシーアクション API オペレーション: リソースタイプ 説明
iotjobsdata:DescribeJobExecution DescribeJobExecution
  • ジョブ

  • thing

ジョブの実行を取得するアクセス許可を表します。iotjobsdata:DescribeJobExecution アクセス許可は、ジョブの実行の取得リクエストが行われるたびに確認されます。
iotjobsdata:GetPendingJobExecutions GetPendingJobExecutions thing モノの終了のステータスではないジョブのリストを取得するアクセス権限を表します。iotjobsdata:GetPendingJobExecutions アクセス権限は、リストの取得リクエストが行われるたびに確認されます。
iotjobsdata:StartNextPendingJobExecution StartNextPendingJobExecution thing モノに対して保留中の次のジョブ実行を取得および開始するアクセス権限を表します (つまり、ステータスが QUEUED のジョブ実行を IN_PROGRESS に更新します)。iotjobsdata:StartNextPendingJobExecution アクセス許可は、保留中の次のジョブ実行を開始するリクエストが行われるたびに確認されます。
iotjobsdata:UpdateJobExecution UpdateJobExecution thing ジョブの実行を更新するアクセス権限を表します。iotjobsdata:UpdateJobExecution アクセス権限は、ジョブ実行の状態の更新リクエストが行われるたびに確認されます。

以下は、任意のリソースのデータプレーン API オペレーションでアクションを実行するアクセス許可を付与する AWS IoT Coreポリシーの例です。特定のリソース (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-name" } ] }

これらのポリシーを使用する必要がある場合の一例として、IoT デバイスが AWS IoT Core ポリシーを使用して、これらの API オペレーションの 1 つにアクセスする場合 (DescribeJobExecution APIの次の例のような場合) が挙げられます。

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