次の方法で共有


対称キーを使用して Linux で大規模な IoT Edge デバイスを作成してプロビジョニングする

適用対象:IoT Edge 1.5 のチェックマーク IoT Edge 1.5

重要

IoT Edge 1.5 LTS は、サポートされているリリースです。 IoT Edge 1.4 LTS は、2024 年 11 月 12 日をもってサポートが終了しています。 以前のリリースの場合は、「IoT Edge を更新する」を参照してください。

この記事では、対称キーを使用して 1 つ以上の Linux IoT Edge デバイスを設定する手順について説明します。 Azure IoT Hub デバイス プロビジョニング サービス (DPS) を使用して Azure IoT Edge デバイスを 自動的に設定します。 自動プロビジョニング プロセスに慣れていない場合は、続行する前に プロビジョニングの概要を 確認してください。

主なタスクを次に示します。

  1. 1 つのデバイスに対して 個別 登録を作成するか、一連のデバイスの グループ登録 を作成します。
  2. IoT Edge ランタイムをインストールし、IoT Hub に接続する。

ヒント

簡素化されたエクスペリエンスのために、Azure IoT Edge 構成ツールをお試しください。 現在パブリック プレビュー中のこのコマンド ライン ツールは、デバイスに IoT Edge をインストールし、DPS と対称キーの構成証明を使用してプロビジョニングします。

対称キー構成証明は、デバイス プロビジョニング サービス インスタンスを使用してデバイスを認証する簡単な方法です。 この方法は、デバイス のプロビジョニングを初めて使用する開発者、または厳密なセキュリティ要件がない開発者向けの "Hello world" エクスペリエンスです。 TPM または X.509 証明書を使用したデバイス構成証明の方が安全性が高く、より厳格なセキュリティ ニーズに使用する必要があります。

前提条件

クラウド リソース

デバイスの要件

物理または仮想 Linux デバイスを IoT Edge デバイスとして使用します。

各デバイスを識別する一意登録 ID を定義します。 MAC アドレス、シリアル番号、またはデバイスからの一意の情報を使用します。 たとえば、MAC アドレスとシリアル番号を組み合わせて、 sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6などの登録 ID を形成します。 有効な文字は、小文字の英字、数字、ダッシュ (-) です。

DPS の登録を作成する

DPS を介して 1 つ以上のデバイスをプロビジョニングする登録を作成します。

単一の IoT Edge デバイスをプロビジョニングする方法を求めている場合は、個別の登録を作成します。 複数のデバイスをプロビジョニングする必要がある場合は、DPS グループ登録を作成する手順に従います。

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

デバイス プロビジョニング サービスでの登録の詳細については、デバイス登録の管理方法に関するページをご覧ください。

DPS 個別登録を作成する

ヒント

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

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

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

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

    1. [メカニズム][対称キー] を選択します。

    2. デバイスの一意の登録 ID を指定します。

    3. 必要に応じて、デバイスの IoT Hub デバイス ID を指定します。 デバイス ID を使用して、個々のデバイスをモジュール展開のターゲットにすることができます。 デバイス ID を指定しなかった場合は、登録 ID が使用されます。

    4. [True] を選択して、その登録が IoT Edge デバイス用のものであることを宣言します。

    5. 必要に応じて、[デバイス ツインの初期状態] にタグ値を追加します。 タグを使用して、デバイス グループをモジュール展開のターゲットにすることができます。 次に例を示します。

      {
         "tags": {
            "environment": "test"
         },
         "properties": {
            "desired": {}
         }
      }
      
    6. [保存] を選択します。

  4. IoT Edge ランタイムのインストール時に使用する個別登録の主キーの値をコピーします。

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

IoT Edge をインストールする

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

次のコマンドを実行してパッケージ リポジトリを追加し、信頼できるキーの一覧に Microsoft パッケージ署名キーを追加します。

重要

2022 年 6 月 30 日、Raspberry Pi OS Stretch は階層 1 OS サポート リストから廃止されました。 潜在的なセキュリティの脆弱性を回避するには、ホスト OS を Bullseye に更新します。

レベル 2 でサポートされているプラットフォーム オペレーティング システムの場合、インストール パッケージは、Azure IoT Edge リリースから入手できます。 「オフラインまたは特定のバージョンのインストール (省略可能)」のインストール手順を参照してください。

インストールは、数個のコマンドで実行できます。 ターミナルを開き、次のコマンドを実行します。

  • 24.04:

    wget https://packages.microsoft.com/config/ubuntu/24.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
    sudo dpkg -i packages-microsoft-prod.deb
    rm packages-microsoft-prod.deb
    
  • 22.04:

    wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
    sudo dpkg -i packages-microsoft-prod.deb
    rm packages-microsoft-prod.deb
    
  • 20.04:

    wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
    sudo dpkg -i packages-microsoft-prod.deb
    rm packages-microsoft-prod.deb
    

オペレーティング システムのバージョンの詳細については、「Azure IoT Edge でサポートされているプラットフォーム」を参照してください。

Azure IoT Edge ソフトウェア パッケージには、パッケージ内にあるライセンス条項 (usr/share/doc/{package-name} または LICENSE ディレクトリ) が適用されます。 パッケージを使用する前に、ライセンス条項をお読みください。 インストールし、パッケージを使用すると、これらの条項に同意したものと見なされます。 ライセンス条項に同意しない場合は、そのパッケージを使用しないでください。

コンテナー エンジンをインストールする

Azure IoT Edge は、OCI と互換性のあるコンテナー ランタイムに依存します。 運用環境のシナリオでは、Moby エンジンを使用することをお勧めします。 Moby エンジンは、IoT Edge で公式にサポートされているコンテナー エンジンです。 Docker CE/EE コンテナー イメージは、Moby ランタイムと互換性があります。 Ubuntu Core スナップを使用している場合、Docker スナップは Canonical によって処理され、運用シナリオでサポートされます。

Moby エンジンをインストールします。

sudo apt-get update; \
  sudo apt-get install moby-engine

既定では、コンテナー エンジンによってコンテナー ログ サイズの制限は設定されません。 時間の経過と共に、この状況により、デバイスがログでいっぱいになり、ディスク領域が不足する可能性があります。 ただし、ローカルに表示するようにログを構成することはできますが、省略しても構いません。 ログ記録の構成の詳細については、「 運用環境で IoT Edge ソリューションをデプロイする準備」を参照してください

次の手順では、ログ メカニズムとして local ログ ドライバーを使用するようにコンテナーを構成する方法を示します。

  1. 既存の Docker デーモンの構成ファイルを作成または編集します

    sudo nano /etc/docker/daemon.json
    
  2. 例で示すように、既定のログ ドライバーを local ログ ドライバーに設定します。

       {
          "log-driver": "local"
       }
    
  3. コンテナー エンジンを再起動して、変更を有効にします。

    sudo systemctl restart docker
    

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

IoT Edge サービスによって、IoT Edge デバイス上にセキュリティ標準が提供されて維持されます。 サービスは起動のたびに開始され、IoT Edge ランタイムの残りの部分を開始することでデバイスをブートストラップします。

バージョン 1.2 以降、 Azure IoT ID サービスは、IoT Edge および IoT Hub と通信する必要があるその他のデバイス コンポーネントの ID プロビジョニングと管理を処理します。

このセクションの手順では、インターネットに接続されているデバイスに最新バージョンの IoT Edge をインストールする一般的なプロセスが示されています。 プレリリース バージョンなどの特定のバージョンをインストールする必要がある場合、またはオフライン時にインストールする必要がある場合は、この記事の後半の 「オフラインまたは特定のバージョンのインストール 手順」に従ってください。

ヒント

古いバージョンを実行している IoT Edge デバイスが既にあり、最新リリースにアップグレードする場合は、「 IoT Edge を更新する」の手順を使用します。 それ以降のバージョンは、以前のバージョンの IoT Edge と十分に異なるため、アップグレードには特定の手順が必要です。

(まだ最新の状態でない場合) 最新バージョンの IoT Edge と IoT ID サービス パッケージをインストールします。

  • 22.04:

    sudo apt-get update; \
       sudo apt-get install aziot-edge
    
  • 20.04:

    sudo apt-get update; \
       sudo apt-get install aziot-edge
    

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

ランタイムがデバイスにインストールされたら、デバイス プロビジョニング サービスと IoT Hub に接続するための情報を使用してデバイスを構成します。

次の情報を用意しておきます。

  • DPS の ID スコープ
  • 作成したデバイス登録 ID
  • 個別登録の主キー、またはグループ登録を使用するデバイスの派生キーのいずれか。

IoT Edge のインストールの一部として提供されるテンプレート ファイルに基づいて、デバイスの構成ファイルを作成します。

sudo cp /etc/aziot/config.toml.edge.template /etc/aziot/config.toml

IoT Edge デバイスで構成ファイルを開きます。

sudo nano /etc/aziot/config.toml
  1. ファイルのプロビジョニング セクションを見つけます。 対称キーを使った DPS プロビジョニング用の行のコメントを解除し、他のすべてのプロビジョニング行はコメントアウトされていることを確認してください。

    # DPS provisioning with symmetric key
    [provisioning]
    source = "dps"
    global_endpoint = "https://global.azure-devices-provisioning.net"
    id_scope = "PASTE_YOUR_SCOPE_ID_HERE"
    
    # Uncomment to send a custom payload during DPS registration
    # payload = { uri = "PATH_TO_JSON_FILE" }
    
    [provisioning.attestation]
    method = "symmetric_key"
    registration_id = "PASTE_YOUR_REGISTRATION_ID_HERE"
    
    symmetric_key = { value = "PASTE_YOUR_PRIMARY_KEY_OR_DERIVED_KEY_HERE" }
    
    # auto_reprovisioning_mode = Dynamic
    
  2. id_scoperegistration_idsymmetric_key の値を DPS およびデバイス情報で更新します。

    対称キー パラメーターは、インライン キー、ファイル URI、または PKCS#11 URI を受け取ることができます。 使用する形式に基づいて、1 つの対称キー行のみをコメント解除します。 インライン キーを使用する場合は、例のように base64 でエンコードされたキーを使用します。 ファイル URI を使用する場合、ファイルにはキーの生バイトが含まれている必要があります。

    PKCS#11 URI を使用する場合は、構成ファイルで PKCS#11 セクションを見つけて、PKCS#11 構成情報を入力します。

    プロビジョニング構成設定の詳細については、「IoT Edge デバイスの設定を構成する」を参照してください。

  3. 必要に応じて、ファイルの自動再プロビジョニング モード セクションを見つけます。 auto_reprovisioning_mode パラメーターを使用して、デバイスの再プロビジョニング動作を設定します。 動的 - ある IoT Hub から別の IoT Hub に移動できることをデバイスが検出した場合に再プロビジョニングします。 これが既定です。 AlwaysOnStartup - デバイスが再起動されたとき、またはクラッシュによってデーモンが再起動されたときに再プロビジョニングします。 OnErrorOnly - デバイスの再プロビジョニングを自動的にトリガーしません。 接続エラーが原因で ID プロビジョニング中にデバイスが IoT Hub に接続できない場合、各モードには暗黙的なデバイス再プロビジョニング フォールバックがあります。 詳細については、「IoT Hub デバイスの再プロビジョニングの概念」を参照してください。

  4. 必要に応じて、payload パラメーターのコメントを解除して、ローカル JSON ファイルへのパスを指定します。 デバイスが登録されると、ファイルの内容が 追加データとして DPS に送信されます 。 これは、カスタム割り当てに役立ちます。 たとえば、人間の介入なしに IoT プラグ アンド プレイモデル ID に基づいてデバイスを割り当てる場合などです。

  5. ファイルを保存して閉じます。

  6. デバイスで行った構成変更を適用します。

    sudo iotedge config apply
    

正常にインストールされたことを確認する

ランタイムが正常に起動した場合は、IoT Hub に移動し、デバイスへの IoT Edge モジュールのデプロイを開始します。

デバイス プロビジョニング サービスで作成した個々の登録が使用されていることを確認します。 Azure portal で Device Provisioning Service インスタンスに移動します。 作成した個別登録の詳細を開きます。 登録の状態が 割り当てられ、デバイス ID が一覧表示されます。

デバイスで次のコマンドを実行して、IoT Edge が正常にインストールされて開始されることを確認します。

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

    sudo iotedge system status
    
  2. サービス ログを表示します。

    sudo iotedge system logs
    
  3. 実行中のモジュールを一覧表示します。

    sudo iotedge list
    

次のステップ

デバイス プロビジョニング サービスの登録プロセスでは、新しいデバイスを設定するときにデバイス ID とデバイス ツイン タグを設定できます。 これらの値を使用して、デバイスの自動管理を使用して個々のデバイスまたはデバイス のグループをターゲットにします。 Azure portal または Azure CLI使用して、大規模な IoT Edge モジュールをデプロイおよび監視する方法について説明します。