Windows で TPM を使用して IoT Edge デバイスを大規模に作成およびプロビジョニングする

適用対象:[はい] アイコンIoT Edge 1.1

重要

IoT Edge 1.1 のサポート終了日は、2022 年 12 月 13 日でした。 本製品、サービス、テクノロジ、または API のサポート内容については、Microsoft 製品のライフサイクルに関するページをご確認ください。 最新バージョンのIoT Edgeに更新する方法の詳細については、「IoT Edgeの更新」を参照してください。

この記事では、トラステッド プラットフォーム モジュール (TPM) を使用して Azure IoT Edge for Windows デバイスを自動プロビジョニングする手順について説明します。 IoT Edge デバイスは、Azure IoT Hub Device Provisioning Service を使用して自動プロビジョニングできます。 自動プロビジョニングの処理に慣れていない場合は、プロビジョニングの概要に関する記事を読んでから先に進んでください。

注意

Windows コンテナーを使用する Azure IoT Edge は、Azure IoT Edge のバージョン 1.2 以降サポートされなくなります。

IoT Edge を Windows デバイスで実行するための新しい方法である Azure IoT Edge for Linux on Windows の使用を検討してください。

Azure IoT Edge for Linux on Windows を使用する場合は、同等のハウツーガイドに記載されている手順に従います。

この記事では、次の 2 つの手法の概要を説明します。 ソリューションのアーキテクチャに基づいて、使用する手法を選択してください。

  • 物理 TPM ハードウェアを使用して Windows デバイスを自動プロビジョニングする。
  • シミュレートされた TPM を実行して Windows デバイスを自動プロビジョニングする。 この手法は、テスト シナリオとしてのみお勧めします。 シミュレートされた TPM では、物理 TPM と同じセキュリティは提供されません。

手順は使用する手法によって異なるので、先に進む前に正しいタブが表示されていることをご確認ください。

タスクは次のとおりです。

  • デバイスのプロビジョニング情報を取得します。
  • デバイスの個別登録を作成する。
  • IoT Edge ランタイムをインストールし、デバイスを IoT Hub に接続する。

前提条件

前提条件は、物理 TPM と仮想 TPM ソリューションで同じです。

クラウド リソース

デバイスの要件

Windows 開発マシン。 この記事では、Windows 10 を使用します。

注意

Device Provisioning Service で TPM 構成証明を使用する場合は、TPM 2.0 が必要です。

TPM を使用する場合、グループではなく個別の Device Provisioning Service の登録のみ作成できます。

TPM を設定する

このセクションでは、TPM の登録 ID と保証キーを取得するために使用できるツールをビルドします。

  1. Windows 開発環境の設定に関するセクションの手順に従って、Azure IoT device SDK for C をインストールしてビルドします。

  2. 管理者特権のある PowerShell セッションで次のコマンドを実行して、TPM 用のデバイス プロビジョニング情報を取得する SDK ツールをビルドします。

    cd azure-iot-sdk-c\cmake
    cmake -Duse_prov_client:BOOL=ON ..
    cd provisioning_client\tools\tpm_device_provision
    make
    .\tpm_device_provision
    
  3. 出力ウィンドウに、デバイスの登録 ID保障キーが表示されます。 後ほど Device Provisioning Service でデバイスの個別登録を作成するときに使用できるように、これらの値をコピーします。

ヒント

SDK ツールを使用してプロビジョニング情報を取得しない場合は、情報を取得するための別の方法を見つける必要があります。 TPM チップごとに固有の保証キーを、それに関連付けられている TPM チップの製造元から取得します。 TPM デバイス用の一意の登録 ID を生成できます。 たとえば、保証キーの SHA-256 ハッシュを作成できます。

登録 ID と保証キーを取得したら、次に進むことができます。

Device Provisioning Service 登録の作成

TPM のプロビジョニング情報を使用して、Device Provisioning Service で個別登録を作成します。

Device Provisioning Service 内に登録を作成するときに、デバイス ツインの初期状態を宣言する機会があります。 デバイス ツインでは、ソリューションで使用される任意のメトリック (リージョン、環境、場所、デバイスの種類など) によってデバイスをグループ化するためのタグを設定できます。 これらのタグは、自動展開を作成するために使用されます。

ヒント

この記事の手順は Azure portal 向けですが、Azure CLI を使用して個別登録を作成することもできます。 詳細については、az iot dps enrollment を参照してください。 この CLI コマンドの一部として、edge-enabled フラグを使用して、登録の対象が IoT Edge デバイスであることを指定します。

  1. Azure portal で、IoT Hub Device Provisioning Service のインスタンスに移動します。

  2. [設定] の下の [登録の管理] を選択します。

  3. [個別登録の追加] を選択し、登録を構成する次の手順を完了します。

    1. [メカニズム][TPM] を選択します。

    2. VM または物理デバイスからコピーした保証キー登録 ID を指定します。

    3. 必要に応じて、デバイス ID を指定します。 デバイス ID を指定しなかった場合は、登録 ID が使用されます。

    4. [True] を選択し、VM または物理デバイスが IoT Edge デバイスであることを宣言します。

    5. デバイスの接続先になるリンクされた IoT ハブを選択するか、 [Link to new IoT Hub](新しい IoT ハブへのリンク) を選択します。 複数のハブを選択でき、デバイスは、選択した割り当てポリシーに従ってそれらのハブの 1 つに割り当てられます。

    6. 必要に応じて、 [デバイス ツインの初期状態] にタグ値を追加します。 タグを使用して、デバイス グループをモジュール展開のターゲットにすることができます。 詳細については、大規模な IoT Edge モジュールの展開に関する記事を参照してください。

    7. [保存] を選択します。

これで、このデバイスの登録が存在しているので、IoT Edge ランタイムによってインストール時にデバイスを自動的にプロビジョニングできます。

IoT Edge をインストールする

このセクションでは、Windows VM または物理デバイスを IoT Edge 用に準備します。 次に、IoT Edge をインストールします。

Azure IoT Edge は、OCI と互換性のあるコンテナー ランタイムに依存します。 Moby (Moby ベースのエンジン) はインストール スクリプトに含まれているので、エンジンをインストールする追加手順はありません。

IoT Edge ランタイムをインストールするには:

  1. PowerShell を管理者として実行します。

    PowerShell(x86) ではなく、PowerShell の AMD64 セッションを使用します。 使用しているセッションの種類がわからない場合は、次のコマンドを実行します。

    (Get-Process -Id $PID).StartInfo.EnvironmentVariables["PROCESSOR_ARCHITECTURE"]
    
  2. Deploy-IoTEdge コマンドを実行します。これにより、次のタスクが実行されます。

    • お使いの Windows コンピューターがサポートされているバージョンであることを確認します
    • コンテナー機能をオンにします
    • Moby エンジンと IoT Edge ランタイムをダウンロードします
    . {Invoke-WebRequest -useb https://aka.ms/iotedge-win} | Invoke-Expression; `
    Deploy-IoTEdge
    
  3. メッセージが表示されたら、デバイスを再起動します。

デバイスに IoT Edge をインストールするときは、追加のパラメーターを使用して、プロセスを次のように変更できます。

  • プロキシ サーバーを経由するようトラフィックを誘導する
  • オフライン インストール用にローカル ディレクトリをインストーラーに指定する

これらの追加パラメーターの詳細については、Windows コンテナーを使用した IoT Edge 用の PowerShell スクリプトに関するページを参照してください。

クラウド ID を使用してデバイスをプロビジョニングする

ランタイムがデバイスにインストールされたら、Device Provisioning Service と IoT Hub に接続するために使用される情報でデバイスを構成します。

  1. 前のセクションで集めた Device Provisioning Service の ID スコープとデバイスの登録 ID を把握しておきます。

  2. 管理者モードで PowerShell ウィンドウを開きます。 IoT Edge をインストールするときは、PowerShell (x86) ではなく、PowerShell の AMD64 セッションを必ず使用してください。

  3. Initialize-IoTEdge コマンドを使用して、お使いのマシンに IoT Edge ランタイムを構成します。 このコマンドでは、Windows コンテナーを使用した手動プロビジョニングが既定で設定されます。 手動プロビジョニングではなく Device Provisioning Service を使用するには、-Dps フラグを使用します。

    paste_scope_id_here および paste_registration_id_here のプレースホルダー値を、前に収集したデータに置き換えます。

    . {Invoke-WebRequest -useb https://aka.ms/iotedge-win} | Invoke-Expression; `
    Initialize-IoTEdge -Dps -ScopeId paste_scope_id_here -RegistrationId paste_registration_id_here
    

インストールの成功を確認する

ランタイムが正常に開始したら、IoT Hub に移動し、デバイスへの IoT Edge モジュールの展開を始めます。 ランタイムが正常にインストールされ、起動されたことを確認するには、デバイスで次のコマンドを使用します。

  1. IoT Edge サービスの状態を確認します。

    Get-Service iotedge
    
  2. 過去 5 分のサービス ログを調べます。

    . {Invoke-WebRequest -useb aka.ms/iotedge-win} | Invoke-Expression; Get-IoTEdgeLog
    
  3. 実行中のモジュールを一覧表示します。

    iotedge list
    

次のステップ

Device Provisioning Service の登録プロセスでは、新しいデバイスをプロビジョニングするときに、デバイス ID とデバイス ツイン タグを同時に設定できます。 これらの値を使用して、個々のデバイスまたはデバイス グループをデバイスの自動管理で使用できます。

使用方法については、「Azure Portal を使用した大規模な IoT Edge モジュールの展開と監視」または「Azure CLI を使用した大規模な IoT Edge モジュールの展開と監視」を参照してください。