デバイスのプロビジョニング

AWS IoT Coreと通信するためには、デバイスの認証を行う必要があります。 AWS IoTへの接続として考える場合、以下3つのクレデンシャル情報の設定が考えられます。

IAM/Roleの利用

  • セキュリティクレデンシャルベースでの認証
  • 上限数の問題があるのでデバイスの規模感がフィットするのか事前に確認する必要があります

Cognitoを利用

  • 認証を解決するためにapplication側で画面があるなど、認証フローを解決可能であることを確認することが必要です

AWS IoT Coreの証明書機能を利用

  • TLSを利用した証明書を用いた認証
  • 作成できる証明書の数に制限はありません

このハンズオンでは、AWS IoT証明書を利用してデバイスの認証を行います。 証明書をデバイスに対してどのように埋め込むかについては、それぞれの要件について適切な方法を選択する必要があります。

3-3で独自CAをIoT Coreに登録します。3-2、3-4、3-5はお好きなものを選択してプロビジョニングを行ってください。

1. Just in Time Provisioning

AWS IoT への接続を最初に試みたときに、デバイスをプロビジョニングします。製造時に証明書をAWS IoTに登録する必要がありません。プロビジョニングテンプレートに沿って自動で登録することができます。

2. Just in Time Registration

AWS IoT への接続を最初に試みたときに、デバイスをプロビジョニングします。製造時に証明書をAWS IoTに登録する必要がありません。接続時にLambdaをトリガーに、許可されたデバイスのリストか照会をして、デバイスのプロビジョニングを行います。Lambdaを起動することで登録フローに柔軟に処理を追加することができます。

3. Fleet Provisioning

AWS IoT フリートプロビジョニングを使用する場合、初めて AWS IoT に接続するときにデバイス証明書とプライベートキーを生成し、AWS IoTからデバイスに対して安全に配信することができます。これによって製造時に個別の証明書をAWS IoTに登録する必要がありません。JITR、JITPでは、一意のIDを安全に生成してデバイスに書き込むことが必要でした。フリートプロビジョニングでは、Lambda関数を介してデバイスから送信された初回接続時のメッセージのペイロードを検証し、 IDを顧客のAWSアカウントに登録し、必要なすべてのアクセス許可とレジストリメタデータ(モノ、モノのグループなど)をデバイスに設定することができます。

このハンズオンでは、Just in Time Registration、Just in Time Provisioningについて独自の認証局(CA)からデバイス証明書を発行していますが、AWS IoT CoreではAmazon Trust Serviceが署名した証明書を使用することも可能です。独自の認証局を利用することで証明書の有効期限を自分自身で管理することができます。