翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS IoT ジョブを使用するためにユーザーとクラウドサービスを承認する
ユーザーとクラウドサービスを承認するには、コントロールプレーンとデータプレーンの両方でIAMポリシーを使用する必要があります。ポリシーはHTTPSプロトコルとともに使用する必要があり、ユーザーを認証するには AWS 署名バージョン 4 認証 (ポート 443) を使用する必要があります。
注記
AWS IoT Core ポリシーをコントロールプレーンで使用することはできません。ユーザーまたはクラウドサービスの承認にはIAMポリシーのみが使用されます。必要なポリシータイプの詳細については、「AWS IoT ジョブに必要なポリシータイプ」を参照してください。
IAM ポリシーは、ポリシーステートメントを含むJSONドキュメントです。ポリシーステートメントでは、効果、アクション、およびリソースの各要素を使用して、リソース、許可または拒否するアクション、およびアクションが許可または拒否される条件を指定します。詳細については、「 ユーザーガイド」のIAMJSON「ポリシー要素リファレンス」を参照してください。 IAM
警告
ポリシーやIAMポリシーなど"Action": ["iot:*"]
では、ワイルドカードアクセス許可を使用しないことをお勧めします AWS IoT Core 。ワイルドカードアクセス許可の使用は、セキュリティ上のベストプラクティスとして推奨されません。詳細については、AWS IoT 「ポリシーが過度に許容されている」を参照してください。
IAM コントロールプレーン上のポリシー
コントロールプレーンでは、IAMポリシーは アクションのiot:
プレフィックスを使用して、対応するジョブAPIオペレーションを承認します。例えば、iot:CreateJob
ポリシーアクションは、 を使用するアクセス許可をユーザーに付与しますCreateJob
API。
次の表は、IAMポリシーアクションとAPIアクションを使用するアクセス許可のリストを示しています。リソースタイプの詳細については、「 で定義されるリソースタイプ AWS IoT」を参照してください。アクションの詳細については AWS IoT 、「 で定義されるアクション AWS IoT」を参照してください。
ポリシーアクション | API オペレーション | リソースタイプ | 説明 |
---|---|---|---|
iot:AssociateTargetsWithJob |
AssociateTargetsWithJob |
|
グループを連続ジョブに関連付けるためのアクセス許可を表します。iot:AssociateTargetsWithJob アクセス許可は、ターゲットの関連付けのリクエストが行われるたびに確認されます。 |
iot:CancelJob |
CancelJob |
ジョブ | ジョブをキャンセルするアクセス許可を表します。iot:CancelJob アクセス許可は、ジョブのキャンセルリクエストが行われるたびに確認されます。 |
iot:CancelJobExecution |
CancelJobExecution |
|
ジョブの実行をキャンセルするアクセス許可を表します。iot: CancelJobExecution アクセス許可は、ジョブの実行のキャンセルリクエストが行われるたびに確認されます。 |
iot:CreateJob |
CreateJob |
|
ジョブを作成するためのアクセス許可を表します。iot:
CreateJob アクセス許可は、ジョブの作成リクエストが行われるたびに確認されます。 |
iot:CreateJobTemplate |
CreateJobTemplate |
|
ジョブテンプレートを作成するためのアクセス許可を表します。iot: CreateJobTemplate アクセス許可は、ジョブテンプレートの作成リクエストが行われるたびに確認されます。 |
iot:DeleteJob |
DeleteJob |
ジョブ | ジョブを削除するアクセス許可を表します。iot:
DeleteJob アクセス許可は、ジョブの削除リクエストが行われるたびに確認されます。 |
iot:DeleteJobTemplate |
DeleteJobTemplate |
jobtemplate | ジョブテンプレートを削除するアクセス許可を表します。iot: CreateJobTemplate アクセス許可は、ジョブテンプレートの削除リクエストが行われるたびに確認されます。 |
iot:DeleteJobExecution |
DeleteJobTemplate |
|
ジョブの実行を削除するアクセス許可を表します。iot: DeleteJobExecution アクセス許可は、ジョブの実行の削除リクエストが行われるたびに確認されます。 |
iot:DescribeJob |
DescribeJob |
ジョブ | ジョブを説明するアクセス許可を表します。iot:
DescribeJob アクセス許可は、ジョブの説明のリクエストが行われるたびに確認されます。 |
iot:DescribeJobExecution |
DescribeJobExecution |
|
ジョブの実行を説明するアクセス許可を表します。iot: DescribeJobExecution アクセス許可は、ジョブの実行の説明のリクエストが行われるたびに確認されます。 |
iot:DescribeJobTemplate |
DescribeJobTemplate |
jobtemplate | ジョブテンプレートを説明するためのアクセス許可を表します。iot: DescribeJobTemplate アクセス許可は、ジョブテンプレートの説明のリクエストが行われるたびに確認されます。 |
iot:DescribeManagedJobTemplate |
DescribeManagedJobTemplate |
jobtemplate | マネージドジョブテンプレートを説明するアクセス許可を表します。iot: DescribeManagedJobTemplate アクセス許可は、マネージドジョブテンプレートの説明のリクエストが行われるたびに確認されます。 |
iot:GetJobDocument |
GetJobDocument |
ジョブ | ジョブのジョブドキュメントを取得するアクセス許可を表します。iot:GetJobDocument アクセス許可は、ジョブドキュメントの取得リクエストが行われるたびに確認されます。 |
iot:ListJobExecutionsForJob |
ListJobExecutionsForJob |
ジョブ | ジョブのジョブ実行を一覧表示するためのアクセス許可を表します。iot:ListJobExecutionsForJob アクセス許可は、ジョブ実行を一覧表示するリクエストが行われるたびに確認されます。 |
iot:ListJobExecutionsForThing |
ListJobExecutionsForThing |
thing | ジョブのジョブ実行を一覧表示するためのアクセス許可を表します。iot:ListJobExecutionsForThing アクセス許可は、モノのジョブ実行を一覧表示するリクエストが行われるたびに確認されます。 |
iot:ListJobs |
ListJobs |
なし | ジョブを一覧表示するためのアクセス許可を表します。iot:ListJobs アクセス許可は、ジョブを一覧表示するリクエストが行われるたびに確認されます。 |
iot:ListJobTemplates |
ListJobTemplates |
なし | ジョブテンプレートを一覧表示するためのアクセス許可を表します。iot:ListJobTemplates アクセス許可は、ジョブテンプレートを一覧表示するリクエストが行われるたびに確認されます。 |
iot:ListManagedJobTemplates |
ListManagedJobTemplates |
なし | マネージドジョブテンプレートを一覧表示するアクセス許可を表します。iot:ListManagedJobTemplates アクセス許可は、マネージドジョブテンプレートを一覧表示するリクエストが行われるたびに確認されます。 |
iot:UpdateJob |
UpdateJob |
ジョブ | ジョブを更新するアクセス許可を表します。iot:UpdateJob アクセス許可は、ジョブの更新リクエストが行われるたびに確認されます。 |
iot:TagResource |
TagResource |
|
特定のリソースにタグを付けるアクセス許可を表します。 |
iot:UntagResource |
UntagResource |
|
特定のリソースのタグを解除するためのアクセス許可を表します。 |
次の例は、IoT モノとモノのグループに対して次のアクションを実行するアクセス許可をユーザーに付与するIAMポリシーを示しています。
この例では、次のように置き換えます。
-
region
AWS リージョンなどの を使用しますus-east-1
。 -
account-id
など、 の AWS アカウント 番号を使用します57EXAMPLE833
。 -
thing-group-name
などのジョブをターゲットとする IoT モノグループの名前。FirmwareUpdateGroup
-
thing-name
などのジョブをターゲットとする IoT モノの名前。MyIoTThing
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "iot:CreateJobTemplate", "iot:CreateJob", ], "Effect": "Allow", "Resource": "arn:aws:iot:
region
:account-id
:thinggroup/thing-group-name
" }, { "Action": [ "iot:DescribeJob", "iot:CancelJob", "iot:DeleteJob", ], "Effect": "Allow", "Resource": "arn:aws:iot:region
:account-id
:job/*" }, { "Action": [ "iot:DescribeJobExecution", "iot:CancelJobExecution", "iot:DeleteJobExecution", ], "Effect": "Allow", "Resource": [ "arn:aws:iot:region
:account-id
:thing/thing-name
" "arn:aws:iot:region
:account-id
:job/*" ] } ] }
プリンシパルが特定の IP アドレスからコントロールプレーンエンドポイントをAPI呼び出すことを制限できます。許可できる IP アドレスを指定するには、IAMポリシーの条件要素でグローバルaws:SourceIp
条件キーを使用します。
この条件キーを使用すると、 など、ユーザーに代わってこれらのAPI呼び出しを行うこと AWS のサービスを他の へのアクセスを拒否することもできます AWS CloudFormation。これらのサービスへのアクセスを許可するには、aws:SourceIp key で aws:ViaAWSService
グローバル条件キーを使用します。これにより、送信元 IP アドレスのアクセス制限は、プリンシパルによって直接行われた要求にのみ適用されます。詳細については、AWS「: ソース IP AWS に基づいて へのアクセスを拒否する」を参照してください。
次の例は、コントロールプレーンエンドポイントをAPI呼び出すことができる特定の IP アドレスのみを許可する方法を示しています。aws:ViaAWSService
キーは に設定されておりtrue
、他の サービスがユーザーに代わって をAPI呼び出すことができます。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:CreateJobTemplate", "iot:CreateJob" ], "Resource": ["*"], "Condition": { "IpAddress": { "aws:SourceIp": "
123.45.167.89
" } }, "Bool": {"aws:ViaAWSService": "true"} } ], }
IAM データプレーン上のポリシー
IAM データプレーンの ポリシーは、 iotjobsdata:
プレフィックスを使用して、ユーザーが実行できるジョブAPIオペレーションを承認します。データプレーンでは、iotjobsdata:DescribeJobExecution
ポリシーアクションDescribeJobExecution
APIを使用して、 を使用するアクセス許可をユーザーに付与できます。
警告
デバイスのジョブをターゲット AWS IoT にする場合、データプレーンでIAMポリシーを使用することはお勧めしません。ユーザーがジョブを作成および管理するには、コントロールプレーンでIAMポリシーを使用することをお勧めします。データプレーンでは、ジョブ実行の取得と実行ステータスの更新をデバイスに承認するには、AWS IoT Core HTTPSプロトコルのポリシー を使用します。
承認する必要があるAPIオペレーションは通常、CLIコマンドを入力することで実行されます。ユーザーが DescribeJobExecution
オペレーションを実行した場合の例を以下に示します。
この例では、次のように置き換えます。
-
region
AWS リージョンなどの を使用しますus-east-1
。 -
account-id
など、 の AWS アカウント 番号を使用します57EXAMPLE833
。 -
thing-name
などのジョブをターゲットとする IoT モノの名前。myRegisteredThing
-
は、 を使用してターゲットにされたジョブの一意の識別子ですAPI。job-id
aws iot-jobs-data describe-job-execution \ --endpoint-url "https://
account-id
.jobs.iot.region
.amazonaws.com" \ --job-idjobID
--thing-namething-name
以下に、このアクションを承認するサンプルIAMポリシーを示します。
{ "Version": "2012-10-17", "Statement": { "Action": ["iotjobsdata:DescribeJobExecution"], "Effect": "Allow", "Resource": "arn:aws:iot:
region
:account-id
:thing/thing-name
", } }
プリンシパルが特定の IP アドレスからデータプレーンエンドポイントをAPI呼び出すことを制限できます。許可できる IP アドレスを指定するには、IAMポリシーの条件要素でグローバルaws:SourceIp
条件キーを使用します。
この条件キーを使用すると、 など、ユーザーに代わってこれらのAPI呼び出しを行うこと AWS のサービスを他の へのアクセスを拒否することもできます AWS CloudFormation。これらのサービスへのアクセスを許可するには、aws:ViaAWSService
グローバル条件キーを aws:SourceIp
条件キーで使用します。これにより、IP アドレスのアクセス制限は、プリンシパルによって直接行われた要求にのみ適用されます。詳細については、AWS「: ソース IP AWS に基づいて へのアクセスを拒否する」を参照してください。
次の例は、データプレーンエンドポイントをAPI呼び出すことができる特定の IP アドレスのみを許可する方法を示しています。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["iotjobsdata:*"], "Resource": ["*"], "Condition": { "IpAddress": { "aws:SourceIp": "
123.45.167.89
" } }, "Bool": {"aws:ViaAWSService": "false"} } ], }
次の例は、特定の IP アドレスまたはアドレス範囲がデータプレーンエンドポイントをAPI呼び出すのを制限する方法を示しています。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": ["iotjobsdata:*"], "Condition": { "IpAddress": { "aws:SourceIp": [ "
123.45.167.89
", "192.0.2.0/24
", "203.0.113.0/24
" ] } }, "Resource": ["*"], } ], }
コントロールプレーンとデータプレーンの両方で API オペレーションを実行する場合、コントロールプレーンポリシーアクションは iot:
プレフィックスを使用し、データプレーンポリシーアクションは iotjobsdata:
プレフィックスを使用する必要があります。
例えば、 DescribeJobExecution
API はコントロールプレーンとデータプレーンの両方で使用できます。コントロールプレーンでは、 DescribeJobExecution API を使用してジョブ実行を記述します。データプレーンでは、 DescribeJobExecution API を使用してジョブ実行の詳細を取得します。
次のIAMポリシーは、コントロールプレーンとデータプレーンDescribeJobExecution
APIの両方で を使用するアクセス許可をユーザーに付与します。
この例では、次のように置き換えます。
-
region
AWS リージョンなどの を使用しますus-east-1
。 -
account-id
など、 の AWS アカウント 番号を使用します57EXAMPLE833
。 -
thing-name
などのジョブをターゲットとする IoT モノの名前。MyIoTThing
{ "Version": "2012-10-17", "Statement": [ { "Action": ["iotjobsdata:DescribeJobExecution"], "Effect": "Allow", "Resource": "arn:aws:iot:
region
:account-id
:thing/thing-name
" }, { "Action": [ "iot:DescribeJobExecution", "iot:CancelJobExecution", "iot:DeleteJobExecution", ], "Effect": "Allow", "Resource": [ "arn:aws:iot:region
:account-id
:thing/thing-name
" "arn:aws:iot:region
:account-id
:job/*" ] } ] }
IoT リソースのタグ付けを承認する
作成、変更、使用できるジョブおよびジョブテンプレートをより適切に制御するために、ジョブまたはジョブテンプレートにタグをアタッチできます。タグは、所有権を識別し、請求グループに配置してタグをアタッチすることで、コストを割り当てるのにも役立ちます。
ユーザーが または を使用して作成したジョブ AWS Management Console またはジョブテンプレートにタグを付ける場合 AWS CLI、IAMポリシーはユーザーにタグを付けるアクセス許可を付与する必要があります。アクセス許可を付与するには、IAMポリシーで iot:TagResource
アクションを使用する必要があります。
注記
IAM ポリシーに iot:TagResource
アクションが含まれていない場合、 タグCreateJobTemplate
を持つ CreateJob
または はAccessDeniedException
エラーを返します。
または を使用して作成したジョブまたはジョブテンプレートにタグを付ける場合 AWS CLI、IAMポリシーはそれらのジョブ AWS Management Console またはジョブテンプレートにタグを付けるアクセス許可を付与する必要があります。アクセス許可を付与するには、IAMポリシーで iot:TagResource
アクションを使用する必要があります。
リソースのタグ付けの詳細については、「AWS IoT リソースのタグ付け」を参照してください。
タグ付け許可を付与する次のIAMポリシー例を参照してください。
例 1
次のコマンドを実行してジョブを作成し、特定の環境にタグ付けするユーザー。
この例では、以下を置き換えます。
-
region
AWS リージョンなどの を使用しますus-east-1
。 -
account-id
など、 の AWS アカウント 番号を使用します57EXAMPLE833
。 -
thing-name
などのジョブをターゲットとする IoT モノの名前。MyIoTThing
aws iot create-job --job-id
test_job
--targets "arn:aws:iot:region
:account-id
:thing/thingOne
" --document-source "https://s3.amazonaws.com/amzn-s3-demo-bucket/job-document.json" --description "test job description" --tags Key=environment,Value=beta
この例では、次のIAMポリシーを使用する必要があります。
{ "Version": "2012-10-17", "Statement": { "Action": [ "iot:CreateJob", "iot:CreateJobTemplate", "iot:TagResource" ], "Effect": "Allow", "Resource": [ "arn:aws:iot:aws-region:
account-id
:job/*", "arn:aws:iot:aws-region:account-id
:jobtemplate/*" ] } }