を使用したアクセスの制御AWS IoT FleetWise - AWS IoT FleetWise

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

を使用したアクセスの制御AWS IoT FleetWise

重要

現在、特定のAWS IoT FleetWise 機能へのアクセスはゲートされています。詳細については、「AWSAWS IoT FleetWise でのリージョンと機能の可用性」を参照してください。

以下のセクションでは、AWS IoT FleetWiseリソースへのアクセスとリソースからのアクセスを制御する方法について説明します。これらの情報には、AWS IoT FleetWise がキャンペーン中に車両データを転送できるように、アプリケーションにアクセス権を付与する方法が含まれています。また、Amazon S3 (S3) バケットまたは Amazon Timestream データベースとテーブルへのアクセスを許可してデータを保存する方法、または車両からデータを送信するために使用される MQTT メッセージAWS IoT FleetWiseへのアクセスを許可する方法についても説明します。

これらすべての形式のアクセスを管理するテクノロジーはAWS Identity and Access Management(IAM) です。IAM の詳細については、「IAM とは?」を参照してください。

MQTT トピックでデータを送受信するAWS IoT FleetWiseアクセス許可を付与する

MQTT トピックを使用すると、車両はAWS IoT MQTT メッセージブローカーを使用してデータを送信します。指定した MQTT トピックをサブスクライブするAWS IoT FleetWiseアクセス許可を付与する必要があります。AWS IoTルールを使用してアクションを実行したり、データを他の送信先にルーティングしたりする場合は、IAM ロールにポリシーをアタッチして、AWS IoT FleetWiseがデータを IoT ルールに転送できるようにする必要があります。

さらに、他のアプリケーションまたはデバイスは、車両データをほぼリアルタイムで受信するために指定したトピックにサブスクライブできます。これらのアプリケーションまたはデバイスには、必要に応じてアクセス許可とアクセス許可を付与する必要があります。

MQTT の使用と必要なロールとアクセス許可の詳細については、以下を参照してください。

開始する前に、次の点を確認してください。

重要
  • AWS IoT FleetWise の車両キャンペーンリソースを作成するときは、同じAWSリージョンを使用する必要があります。AWSリージョンを切り替えると、リソースへのアクセスに問題がある可能性があります。

  • AWS IoT FleetWise は、米国東部 (バージニア北部) および欧州 (フランクフルト) で利用できます。

を使用してAWS CLI、MQTT メッセージングの信頼ポリシーを持つ IAM ロールを作成できます。IAM ロールを作成するには、次のコマンドを実行します。

信頼ポリシーを持つ IAM ロールを作成するには
  • IotTopicExecutionRole を、作成するロールの名前に置き換えます。

  • trust-policy は、信頼ポリシーを含む JSON ファイルに置き換えます。

aws iam create-role --role-name IotTopicExecutionRole --assume-role-policy-document file://trust-policy.json
JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "mqttTopicTrustPolicy", "Effect": "Allow", "Principal": { "Service": "iotfleetwise.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceArn": [ "arn:aws:iotfleetwise:region:account-id:campaign/campaign-name" ], "aws:SourceAccount": [ "account-id" ] } } } ] }

指定した MQTT トピックにメッセージを発行するアクセス許可をAWS IoT FleetWise に付与するアクセス許可ポリシーを作成します。アクセス許可を作成するには、次のコマンドを実行します。

アクセス許可ポリシーを作成するには
  • AWSIoTFleetwiseAccessIotTopicPermissionsPolicy を、作成するポリシーの名前に置き換えます。

  • permissions-policy は、アクセス許可ポリシーを含む JSON ファイルの名前に置き換えます。

aws iam create-policy --policy-name AWSIoTFleetwiseAccessIotTopicPermissionsPolicy --policy-document file://permissions-policy.json
JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "topic-arn" ] } ] }
アクセス許可ポリシーを IAM ロールにアタッチするには
  1. 出力から、アクセス許可ポリシーの Amazon リソースネーム (ARN) をコピーします。

  2. IAM アクセス許可ポリシーを IAM ロールにアタッチするには、次のコマンドを実行します。

    • permissions-policy-arn は、前のステップでコピーした ARN に置き換えます。

    • IotTopicExecutionRole を、作成した IAM ロールの名前に置き換えます。

    aws iam attach-role-policy --policy-arn permissions-policy-arn --role-name IotTopicExecutionRole

詳細については、「IAM ユーザーガイド」の「AWSリソースのアクセス管理」を参照してください。

Amazon S3 送信先AWS IoT FleetWiseへのアクセスを許可する

Amazon S3 送信先を使用する場合、 は車両データを S3 バケットにAWS IoT FleetWise配信し、オプションでデータ暗号化に所有しているAWS KMSキーを使用できます。エラーログ記録が有効になっている場合、AWS IoT FleetWiseは CloudWatch ロググループとストリームにもデータ配信エラーを送信します。配信ストリームを作成するときは、IAM ロールが必要です。

AWS IoT FleetWiseは、S3 送信先のサービスプリンシパルでバケットポリシーを使用します。バケットポリシーの追加方法の詳細については、「Amazon Simple Storage Service ユーザーガイド」の「Amazon S3 コンソールを使用したバケットポリシーの追加」を参照してください。

次のアクセスポリシーを使用して、AWS IoT FleetWiseが S3 バケットにアクセスできるようにします。S3 バケットを所有していない場合、Amazon S3 アクションのリストに s3:PutObjectAcl を追加します。これにより、 によって配信されるオブジェクトへのフルアクセスがバケット所有者に付与されますAWS IoT FleetWise。バケット内のオブジェクトへのアクセスを保護する方法の詳細については、「Amazon Simple Storage Service ユーザーガイド」の「バケットポリシーの例」を参照してください。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "iotfleetwise.amazonaws.com" ] }, "Action": [ "s3:ListBucket" ], "Resource": "arn:aws:s3:::bucket-name" }, { "Effect": "Allow", "Principal": { "Service": [ "iotfleetwise.amazonaws.com" ] }, "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": "arn:aws:s3:::bucket-name/*", "Condition": { "StringEquals": { "aws:SourceArn": "campaign-arn", "aws:SourceAccount": "account-id" } } } ] }

以下のバケットポリシーは、AWSリージョン内のアカウントのすべてのキャンペーンを対象としています。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "iotfleetwise.amazonaws.com" ] }, "Action": [ "s3:ListBucket" ], "Resource": "arn:aws:s3:::bucket-name" }, { "Effect": "Allow", "Principal": { "Service": [ "iotfleetwise.amazonaws.com" ] }, "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": "arn:aws:s3:::bucket-name/*", "Condition": { "StringLike": { "aws:SourceArn": "arn:aws:iotfleetwise:region:account-id:campaign/*", "aws:SourceAccount": "account-id" } } } ] }

S3 バケットに KMS キーがアタッチされている場合、そのキーには以下のポリシーが必要です。キー管理の詳細については、Amazon Simple Storage Service ユーザーガイドAWS Key Management Service「キーによるサーバー側の暗号化 (SSE-KMS) を使用したデータの保護」を参照してください。

{ "Version": "2012-10-17", "Effect": "Allow", "Principal": { "Service": "iotfleetwise.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "key-arn" }
重要

バケットを作成すると、S3 は、デフォルトのアクセスコントロールリスト (ACL) を作成し、リソースに対する完全なコントロールをリソース所有者に付与します。AWS IoT FleetWise が S3 にデータを配信できない場合は、S3 バケットの ACL を無効にしてください。詳細については、Amazon Simple Storage Service ユーザーガイドACLs の無効化」および「オブジェクト所有権の適用」を参照してください。

Amazon Timestream 送信先AWS IoT FleetWiseへのアクセスを許可する

Timestream 送信先を使用すると、 は Timestream テーブルに車両データをAWS IoT FleetWise配信します。が Timestream にデータを送信できるようにするにはAWS IoT FleetWise、ポリシーを IAM ロールにアタッチする必要があります。

コンソールを使用してキャンペーンを作成すると、AWS IoT FleetWise は必要なポリシーをロールに自動的にアタッチします。

注記

Amazon Timestream は、アジアパシフィック (ムンバイ) リージョンでは利用できません。

開始する前に、次の点を確認してください。

重要
  • AWS IoT FleetWise の Timestream リソースを作成するときは、同じAWSリージョンを使用する必要があります。AWSリージョンを切り替えると、Timestream リソースへのアクセスに問題がある可能性があります。

  • AWS IoT FleetWise は、米国東部 (バージニア北部)、欧州 (フランクフルト)、アジアパシフィック (ムンバイ) で利用できます。

  • サポートされているリージョンのリストについては、「AWS 全般のリファレンス」の「Timestream エンドポイントとクォータ」を参照してください。

を使用してAWS CLI、Timestream の信頼ポリシーを持つ IAM ロールを作成できます。IAM ロールを作成するには、次のコマンドを実行します。

信頼ポリシーを持つ IAM ロールを作成するには
  • TimestreamExecutionRole は、作成するロールの名前に置き換えます。

  • trust-policy を、信頼ポリシーを含む .json ファイルに置き換えます。

aws iam create-role --role-name TimestreamExecutionRole --assume-role-policy-document file://trust-policy.json
JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "timestreamTrustPolicy", "Effect": "Allow", "Principal": { "Service": "iotfleetwise.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceArn": [ "arn:aws:iotfleetwise:region:account-id:campaign/campaign-name" ], "aws:SourceAccount": [ "account-id" ] } } } ] }

アクセス許可ポリシーを作成して、Timestream にデータを書き込むアクセス許可をAWS IoT FleetWise に付与します。アクセス許可を作成するには、次のコマンドを実行します。

アクセス許可ポリシーを作成するには
  • AWSIoTFleetwiseAccessTimestreamPermissionsPolicy は、作成するポリシーの名前に置き換えます。

  • permissions-policy は、アクセス許可ポリシーを含む JSON ファイルの名前に置き換えます。

aws iam create-policy --policy-name AWSIoTFleetwiseAccessTimestreamPermissionsPolicy --policy-document file://permissions-policy.json
JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "timestreamIngestion", "Effect": "Allow", "Action": [ "timestream:WriteRecords", "timestream:Select", "timestream:DescribeTable" ], "Resource": "table-arn" }, { "Sid": "timestreamDescribeEndpoint", "Effect": "Allow", "Action": [ "timestream:DescribeEndpoints" ], "Resource": "*" } ] }
アクセス許可ポリシーを IAM ロールにアタッチするには
  1. 出力から、アクセス許可ポリシーの Amazon リソースネーム (ARN) をコピーします。

  2. IAM アクセス許可ポリシーを IAM ロールにアタッチするには、次のコマンドを実行します。

    • permissions-policy-arn は、前のステップでコピーした ARN に置き換えます。

    • TimestreamExecutionRole は、作成した IAM ロールの名前に置き換えます。

    aws iam attach-role-policy --policy-arn permissions-policy-arn --role-name TimestreamExecutionRole

詳細については、「IAM ユーザーガイド」の「AWSリソースのアクセス管理」を参照してください。

を使用してコマンドのペイロードを生成するAWS IoT Device Managementアクセス許可を付与するAWS IoT FleetWise

コマンド機能を使用してコマンド実行を開始すると、AWS IoT Device Managementは受信リクエストからコマンドとコマンドパラメータを取得します。次に、AWS IoT FleetWise リソースにアクセスしてリクエストを検証し、ペイロードを生成するアクセス許可が必要です。その後、ペイロードは MQTT AWS IoT Device Management経由で車両に送信され、車両がサブスクライブしているコマンドリクエストトピックに送信されます。

まず、ペイロードの生成AWS IoT Device Managementに必要なアクセス許可を付与する IAM ロールを作成する必要があります。次に、 roleArnフィールドを使用して、このロールの ARN を CreateCommand API に提供します。以下に、いくつかのポリシーの例を示します。

重要

IAM ロールには、車両とコマンドリソースを作成したロールAWS リージョンと同じ を使用する必要があります。切り替えるとAWS リージョン、リソースへのアクセスに問題がある可能性があります。

IAM ロールには、次の信頼ポリシーが必要です。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "RemoteCommandsTrustPolicy", "Effect": "Allow", "Principal": { "Service": "iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

次の例は、AWS IoTモノとして登録されているすべての車両のペイロードを生成するアクセス許可を付与する方法を示しています。

注記
  • このポリシーは過度に許可される場合があります。最小権限の原則を使用して、必要なアクセス許可のみを付与します。

  • 代わりにアクセス許可を拒否するには、IAM ポリシー"Effect": "Deny""Effect": "Allow"を に変更します。

この例では、次のように置き換えます。

  • AWS IoT FleetWise リソースを使用している のリージョンAWS リージョン。

  • 111122223333。AWS アカウント

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iotfleetwise:GenerateCommandPayload", "Resource": "*" } ] }

次の例は、AWS IoTモノとして登録された特定の車両のペイロードを生成するアクセス許可を付与する方法を示しています。

この例では、次のように置き換えます。

  • AWS IoT AWS リージョン FleetWise リソースを使用している の リージョン

  • 111122223333。AWS アカウント

  • 車両の IoT モノの名前が の <VEHICLE_NAME>

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iotfleetwise:GenerateCommandPayload", "Resource": "arn:aws:iot:us-east-1:111122223333:thing/<VEHICLE_NAME>" } ] }

次の例は、特定の車両のアクチュエータのペイロードを生成するアクセス許可を付与する方法を示しています。

この例では、次のように置き換えます。

  • リージョンと、AWS リージョンAWS IoT FleetWise リソースを使用している 。

  • 111122223333。AWS アカウント

  • <VEHICLE_NAME> と車両の IoT モノの名前。

  • <Vehicle.actuator2> などのシグナルの名前を持つ <SIGNAL_FQN>

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "Statement1", "Effect": "Allow", "Action": "iotfleetwise:GenerateCommandPayload", "Resource": "arn:aws:iot:us-east-1:111122223333:thing/<VEHICLE_NAME>", "Condition": { "ForAnyValue:StringEquals": { "iotfleetwise:Signals": [ "<SIGNAL_FQN>" ] } } } ] }

次の例は、特定の車両および状態テンプレートのペイロードを生成するアクセス許可を付与する方法を示しています。

この例では、次のように置き換えます。

  • region は、AWS IoT FleetWise リソースを使用している ですAWS リージョン。

  • 111122223333 はお客様のAWS アカウント番号です。

  • <VEHICLE_NAME> は、車両の IoT モノの名前です。

  • <STATE_TEMPLATE_ID> と状態テンプレートの識別子。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "Statement1", "Effect": "Allow", "Action": "iotfleetwise:GenerateCommandPayload", "Resource": [ "arn:aws:iot:us-east-1:111122223333:thing/<VEHICLE_NAME>", "arn:aws:iotfleetwise:us-east-1:111122223333:state-template/<STATE_TEMPLATE_ID>" ] } ] }

カスタマーマネージド KMS キーを有効にしている場合AWS IoT FleetWise、次の例はペイロードを生成するアクセス許可を付与する方法を示しています。

この例では、次のように置き換えます。

  • AWS IoT AWS リージョン FleetWise リソースを使用している のリージョン

  • 111122223333。AWS アカウント

  • <KMS_KEY_ID> と KMS キーの ID。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iotfleetwise:GenerateCommandPayload", "Resource": "*" }, { "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "arn:aws:kms:us-east-1:111122223333:key/<KMS_KEY_ID>" } ] }