次の方法で共有


Windows 上の TPM を使用して大規模な IoT Edge デバイスを作成してプロビジョニングする

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

重要

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

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

Windows コンテナーを含む Azure IoT Edge は、Azure IoT Edge のバージョン 1.2 以降ではサポートされません。

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

Windows で Azure IoT Edge for Linux を使用する場合は、同等のハウツー ガイドの手順に従

この記事では、次の 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 開発環境のセットアップ」の手順に従って、C 用 Azure IoT デバイス SDK をインストールしてビルドします。

  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 と保証キーを取得したら、次に進むことができます。

デバイスプロビジョニングサービス登録の作成

TPM のプロビジョニング情報を使用して、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 をインストールする

このセクションでは、IoT Edge 用に Windows VM または物理デバイスを準備します。 次に、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. 前のセクションで収集したデバイス プロビジョニング サービス ID スコープ とデバイス 登録 ID を把握します。

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

  3. Initialize-IoTEdge コマンドは、コンピューター上の IoT Edge ランタイムを構成します。 このコマンドの既定値は、Windows コンテナーを使用した手動プロビジョニングです。 手動プロビジョニングではなく、 -Dps フラグを使用してデバイス プロビジョニング サービスを使用します。

    paste_scope_id_herepaste_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 ハブに移動し、デバイスへの IoT Edge モジュールのデプロイを開始します。 デバイスで次のコマンドを使用して、ランタイムが正常にインストールされ、開始されたことを確認します。

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

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

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

    iotedge list
    

次のステップ

デバイス プロビジョニング サービスの登録プロセスでは、新しいデバイスをプロビジョニングするときに、デバイス ID とデバイス ツイン タグを同時に設定できます。 これらの値を使うことにより、自動デバイス管理を通じて個々のデバイスやデバイスグループをターゲットにすることができます。

Azure portal を使用して大規模な IoT Edge モジュールの展開と監視を行う方法または Azure CLI を使用する方法を理解します。