

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

# を使用したアクセスの制御 AWS IoT FleetWise
<a name="controlling-access"></a>

**重要**  
現在、特定の AWS IoT FleetWise 機能へのアクセスはゲートされています。詳細については、「[AWS AWS IoT FleetWise でのリージョンと機能の可用性](fleetwise-regions.md)」を参照してください。

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

これらのすべての形式のアクセスを管理するテクノロジーは AWS Identity and Access Management (IAM) です。IAM の詳細については、「[IAM とは?](https://docs.aws.amazon.com/IAM/latest/UserGuide/IAM_Introduction.html)」を参照してください。

**Topics**
+ [MQTT トピックでデータを送受信する AWS IoT FleetWise アクセス許可を付与する](#using-iam-mqtt)
+ [Amazon S3 送信先 AWS IoT FleetWise へのアクセスを許可する](#using-iam-s3)
+ [Amazon Timestream 送信先 AWS IoT FleetWise へのアクセスを許可する](#using-timestream)
+ [を使用してコマンドのペイロードを生成する AWS IoT Device Management アクセス許可を付与する AWS IoT FleetWise](#generate-command-payload)

## MQTT トピックでデータを送受信する AWS IoT FleetWise アクセス許可を付与する
<a name="using-iam-mqtt"></a>

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

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

MQTT の使用と必要なロールとアクセス許可の詳細については、以下を参照してください。
+ [デバイス通信プロトコル](https://docs.aws.amazon.com/iot/latest/developerguide/protocols.html)
+ [のルール AWS IoT](https://docs.aws.amazon.com/iot/latest/developerguide/iot-rules.html) 
+ [ 必要なアクセスを AWS IoT ルールに付与する](https://docs.aws.amazon.com/iot/latest/developerguide/iot-create-role.html)
+ [ロールのアクセス許可を渡す](https://docs.aws.amazon.com/iot/latest/developerguide/pass-role.html)

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

**重要**  
 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
```

### 信頼ポリシー
<a name="mqtt-example-trust-policy"></a>

------
#### [ 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:123456789012:campaign/campaign-name"
          ],
          "aws:SourceAccount": [
            "123456789012"
          ]
        }
      }
    }
  ]
}
```

------

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

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

```
aws iam create-policy --policy-name AWSIoTFleetwiseAccessIotTopicPermissionsPolicy --policy-document file://permissions-policy.json
```

### アクセス許可ポリシー
<a name="mqtt-example-permissions-policy"></a>

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "iot:Publish"
        ],
        "Resource": [
          "topic-arn"
        ]
      }
    ]
}
```

------

**アクセス許可ポリシーを IAM ロールにアタッチするには**

1. 出力から、アクセス許可ポリシーの Amazon リソースネーム (ARN) をコピーします。

1. IAM アクセス許可ポリシーを IAM ロールにアタッチするには、次のコマンドを実行します。
   + *permissions-policy-arn* は、前のステップでコピーした ARN に置き換えます。
   + *IotTopicExecutionRole* を、作成した IAM ロールの名前に置き換えます。

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

詳細については、「IAM ユーザーガイド**」の「[AWS リソースのアクセス管理](https://docs.aws.amazon.com/IAM/latest/UserGuide/access.html)」を参照してください。

## Amazon S3 送信先 AWS IoT FleetWise へのアクセスを許可する
<a name="using-iam-s3"></a>

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

AWS IoT FleetWise は、S3 送信先のサービスプリンシパルでバケットポリシーを使用します。バケットポリシーの追加方法の詳細については、「Amazon Simple Storage Service ユーザーガイド**」の「[Amazon S3 コンソールを使用したバケットポリシーの追加](https://docs.aws.amazon.com/AmazonS3/latest/userguide/add-bucket-policy.html)」を参照してください。

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

### 特定のキャンペーン用のバケットポリシー
<a name="example-campaign-policy"></a>

------
#### [ 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": "123456789012"
        }
      }
    }
  ]
}
```

------

### すべてのキャンペーン用のバケットポリシー
<a name="example-multiple-campaigns-policy"></a>

以下のバケットポリシーは、 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:123456789012:campaign/*",
          "aws:SourceAccount": "123456789012"
        }
      }
    }
  ]
}
```

------

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

### キーポリシー
<a name="example-key-policy"></a>

```
{
  "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 を無効にしてください。詳細については、[ACLs の無効化」および「オブジェクト所有権の適用](https://docs.aws.amazon.com/AmazonS3/latest/userguide/ensure-object-ownership.html)」を参照してください。 **

## Amazon Timestream 送信先 AWS IoT FleetWise へのアクセスを許可する
<a name="using-timestream"></a>

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

コンソールを使用して[キャンペーンを作成する](create-campaign.md#create-campaign-console)と、 AWS IoT FleetWise は必要なポリシーをロールに自動的にアタッチします。

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

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

**重要**  
 AWS IoT FleetWise の Timestream リソースを作成するときは、同じ AWS リージョンを使用する必要があります。 AWS リージョンを切り替えると、Timestream リソースへのアクセスに問題がある可能性があります。
AWS IoT FleetWise は、米国東部 (バージニア北部）、欧州 (フランクフルト）、アジアパシフィック (ムンバイ) で利用できます。
サポートされているリージョンのリストについては、「AWS 全般のリファレンス**」の「[Timestream エンドポイントとクォータ](https://docs.aws.amazon.com/general/latest/gr/timestream.html)」を参照してください。
+ Timestream データベースが必要です。チュートリアルについては、*「Amazon Timestream* [ デベロッパーガイド」の「データベースの作成](https://docs.aws.amazon.com/timestream/latest/developerguide/console_timestream.html#console_timestream.db.using-console)」を参照してください。
+ 指定の Timestream データベースにテーブルが作成されている必要があります。チュートリアルについては、*「Amazon Timestream* [ デベロッパーガイド」の「テーブルの作成](https://docs.aws.amazon.com/timestream/latest/developerguide/console_timestream.html#console_timestream.table.using-console)」を参照してください。

を使用して 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
```

### 信頼ポリシー
<a name="example-trust-policy"></a>

------
#### [ 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:123456789012:campaign/campaign-name"
           ],
           "aws:SourceAccount": [
            "123456789012"
          ]
        }
      }
    }
  ]
}
```

------

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

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

```
aws iam create-policy --policy-name AWSIoTFleetwiseAccessTimestreamPermissionsPolicy --policy-document file://permissions-policy.json
```

### アクセス許可ポリシー
<a name="example-permissions-policy"></a>

------
#### [ 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) をコピーします。

1. IAM アクセス許可ポリシーを IAM ロールにアタッチするには、次のコマンドを実行します。
   + *permissions-policy-arn* は、前のステップでコピーした ARN に置き換えます。
   + *TimestreamExecutionRole* は、作成した IAM ロールの名前に置き換えます。

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

詳細については、「IAM ユーザーガイド**」の「[AWS リソースのアクセス管理](https://docs.aws.amazon.com/IAM/latest/UserGuide/access.html)」を参照してください。

## を使用してコマンドのペイロードを生成する AWS IoT Device Management アクセス許可を付与する AWS IoT FleetWise
<a name="generate-command-payload"></a>

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

まず、ペイロードの生成 AWS IoT Device Management に必要なアクセス許可を付与する IAM ロールを作成する必要があります。次に、 `roleArn`フィールドを使用して、このロールの ARN を [https://docs.aws.amazon.com/iot/latest/apireference/API_CreateCommand.html](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateCommand.html) API に提供します。以下に、いくつかのポリシーの例を示します。

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

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

------
#### [ JSON ]

****  

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

------

### すべての車両にアクセス許可を付与する (IoT モノ)
<a name="generate-command-payload-example1"></a>

次の例は、 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": "*"
        }
    ]
}
```

------

### 特定の車両にアクセス許可を付与する (IoT モノ)
<a name="generate-command-payload-example2"></a>

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

この例では、次のように置き換えます。
+  AWS IoT FleetWise リソースを使用している の*リージョン* AWS リージョン 。
+ *111122223333*。 AWS アカウント 
+ 車両の IoT モノの名前が の *<VEHICLE\$1NAME>*。

------
#### [ JSON ]

****  

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

------

### 特定の車両とシグナルにアクセス許可を付与する
<a name="generate-command-payload-example3"></a>

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

この例では、次のように置き換えます。
+  AWS IoT AWS リージョン FleetWise リソースを使用している の*リージョン*。
+ *111122223333*。 AWS アカウント 
+ *<VEHICLE\$1NAME>* と車両の IoT モノの名前。
+ *<Vehicle.actuator2> などのシグナルの名前を持つ <SIGNAL\$1FQN**>*。

------
#### [ 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>"
                    ]
                }
            }
        }
    ]
}
```

------

### 特定の車両と状態テンプレートにアクセス許可を付与する
<a name="generate-command-payload-example4"></a>

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

この例では、次のように置き換えます。
+ *region* は、 AWS リージョン AWS IoT FleetWise リソースを使用している です。
+ *111122223333* はお客様の AWS アカウント 番号です。
+ *<VEHICLE\$1NAME>* は、車両の IoT モノの名前です。
+ *<STATE\$1TEMPLATE\$1ID>* と状態テンプレートの識別子。

------
#### [ 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 キーを使用するためのアクセス許可を付与する
<a name="generate-command-payload-example5"></a>

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

この例では、次のように置き換えます。
+  AWS IoT AWS リージョン FleetWise リソースを使用している の*リージョン*。
+ *111122223333*。 AWS アカウント 
+ *<KMS\$1KEY\$1ID>* と 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>"
        }
    ]
}
```

------