透過的なゲートウェイとして機能するように IoT Edge デバイスを構成するConfigure an IoT Edge device to act as a transparent gateway

この記事では、他のデバイスが IoT Hub と通信するための透過的なゲートウェイとして機能するように IoT Edge デバイスを構成するための詳細な手順を提供します。This article provides detailed instructions for configuring an IoT Edge device to function as a transparent gateway for other devices to communicate with IoT Hub. この記事では、 IoT Edge ゲートウェイ という用語は、透過的ゲートウェイとして構成された IoT Edge デバイスを指します。This article uses the term IoT Edge gateway to refer to an IoT Edge device configured as a transparent gateway. 詳細は、「IoT Edge デバイスをゲートウェイとして使用する方法」を参照してください。For more information, see How an IoT Edge device can be used as a gateway.

注意

現時点では:Currently:

  • また、Edge 対応デバイスは、IoT Edge ゲートウェイに接続できません。Edge-enabled devices can't connect to IoT Edge gateways.
  • ダウンストリーム デバイスではファイル アップロードを使用できません。Downstream devices can't use file upload.

透過的なゲートウェイ接続を正常にセットアップするための 3 つの一般的な手順があります。There are three general steps to set up a successful transparent gateway connection. この記事では、最初の手順について説明します。This article covers the first step:

  1. ゲートウェイ デバイスをサーバーとして構成し、ダウンストリーム デバイスが安全に接続できるようにします。ダウンストリーム デバイスからメッセージを受信するようにゲートウェイを設定し、適切な宛先にルーティングします。Configure the gateway device as a server so that downstream devices can connect to it securely. Set up the gateway to receive messages from downstream devices and route them to the proper destination.
  2. ダウンストリーム デバイスのデバイス ID を作成して、IoT Hub で認証できるようにします。Create a device identity for the downstream device so that it can authenticate with IoT Hub. ゲートウェイ デバイスを介してメッセージを送信するようにダウンストリーム デバイスを構成します。Configure the downstream device to send messages through the gateway device. その手順については、「Azure IoT Hub に対するダウンストリーム デバイスの認証を行う」を参照してください。For those steps, see Authenticate a downstream device to Azure IoT Hub.
  3. ダウンストリーム デバイスをゲートウェイ デバイスに接続し、メッセージの送信を開始します。Connect the downstream device to the gateway device and start sending messages. その手順については、「ダウンストリーム デバイスを Azure IoT Edge ゲートウェイに接続する」を参照してください。For those steps, see Connect a downstream device to an Azure IoT Edge gateway.

デバイスがゲートウェイとして機能するためには、そのダウンストリーム デバイスに安全に接続する必要があります。For a device to act as a gateway, it needs to securely connect to its downstream devices. Azure IoT Edge では、公開キー基盤 (PKI) を使用して、これらのデバイス間にセキュリティで保護された接続を設定することができます。Azure IoT Edge allows you to use a public key infrastructure (PKI) to set up secure connections between devices. この場合、透過的なゲートウェイとして機能する IoT Edge デバイスにダウンストリーム デバイスが接続できるようにします。In this case, we're allowing a downstream device to connect to an IoT Edge device acting as a transparent gateway. 妥当なセキュリティを維持するために、ダウン ストリーム デバイスはゲートウェイ デバイスの ID を確認する必要があります。To maintain reasonable security, the downstream device should confirm the identity of the gateway device. この ID 検査により、お使いのデバイスが悪意のある可能性のあるゲートウェイに接続することを防止できます。This identity check prevents your devices from connecting to potentially malicious gateways.

Azure IoT Hub クラウド サービスを使って作成された ID を持つ任意のアプリケーションまたはプラットフォームを、ダウンストリーム デバイスにすることもできます。A downstream device can be any application or platform that has an identity created with the Azure IoT Hub cloud service. 多くの場合、これらのアプリケーションでは Azure IoT device SDK が使用されます。These applications often use the Azure IoT device SDK. ダウンストリーム デバイスは、IoT Edge ゲートウェイ デバイスそのもので実行されているアプリケーションの場合もあります。A downstream device could even be an application running on the IoT Edge gateway device itself. ただし、IoT Edge デバイスを IoT Edge ゲートウェイのダウンストリームにすることはできません。However, an IoT Edge device cannot be downstream of an IoT Edge gateway.

デバイス ゲートウェイ トポロジに必要な信頼を有効にする証明書インフラストラクチャを作成できます。You can create any certificate infrastructure that enables the trust required for your device-gateway topology. この記事では、IoT Hub で X.509 CA セキュリティを 有効にするために使用するのと同じ証明書のセットアップを前提としています。これには、特定の IoT ハブ (IoT ハブのルート CA) に関連付けられた X.509 CA 証明書、およびこの CA と IoT Edge デバイスの CA によって署名された一連の証明書が使用されます。In this article, we assume the same certificate setup that you would use to enable X.509 CA security in IoT Hub, which involves an X.509 CA certificate associated to a specific IoT hub (the IoT hub root CA), a series of certificates signed with this CA, and a CA for the IoT Edge device.

注意

この記事全体で使用されている " ルート CA 証明書 " という用語は、PKI 証明書チェーンの最上位機関の公開証明書を指し、必ずしもシンジケート化された認証局の証明書ルートではありません。The term root CA certificate used throughout these articles refers to the topmost authority public certificate of the PKI certificate chain, and not necessarily the certificate root of a syndicated certificate authority. 多くの場合、実際は中間 CA の公開証明書です。In many cases, it is actually an intermediate CA public certificate.

次の手順では、証明書を作成し、ゲートウェイ上の適切な場所にインストールするプロセスについて説明します。The following steps walk you through the process of creating the certificates and installing them in the right places on the gateway. 任意のマシンを使用して証明書を生成してから、その証明書をお使いの IoT Edge デバイスにコピーできます。You can use any machine to generate the certificates, and then copy them over to your IoT Edge device.

前提条件Prerequisites

IoT Edge がインストールされている Linux または Windows デバイス。A Linux or Windows device with IoT Edge installed.

準備ができたデバイスがない場合は、Azure 仮想マシンで作成できます。If you do not have a device ready, you can create one in an Azure virtual machine. 初めての IoT Edge モジュールを Linux 仮想デバイスにデプロイする」の手順に従って IoT Hub を作成し、仮想マシンを作成して、IoT Edge ランタイムを構成します。Follow the steps in Deploy your first IoT Edge module to a virtual Linux device to create an IoT Hub, create a virtual machine, and configure the IoT Edge runtime.

デバイス CA 証明書をセットアップするSet up the device CA certificate

すべての IoT Edge ゲートウェイには、デバイス CA 証明書がインストールされている必要があります。All IoT Edge gateways need a device CA certificate installed on them. IoT Edge セキュリティ デーモンは、IoT Edge デバイス CA 証明書を使用してワークロード CA 証明書に署名します。この証明書は IoT Edge ハブのサーバー証明書に署名します。The IoT Edge security daemon uses the IoT Edge device CA certificate to sign a workload CA certificate, which in turn signs a server certificate for IoT Edge hub. ゲートウェイは、接続の開始時に、ダウンストリーム デバイスにサーバー証明書を提示します。The gateway presents its server certificate to the downstream device during the initiation of the connection. ダウンストリーム デバイスは、サーバー証明書がルート CA 証明書にロールアップされる証明書チェーンの一部であることを確認します。The downstream device checks to make sure that the server certificate is part of a certificate chain that rolls up to the root CA certificate. このプロセスにより、ダウンストリーム デバイスは、ゲートウェイが信頼できるソースからのものであることを確認できます。This process allows the downstream device to confirm that the gateway comes from a trusted source. 詳細については、「Azure IoT Edge での証明書の使用方法について理解する」を参照してください。For more information, see Understand how Azure IoT Edge uses certificates.

ゲートウェイ証明書の設定

ルート CA 証明書とデバイス CA 証明書 (およびその秘密キー) が、IoT Edge ゲートウェイ デバイス上に存在し、IoT Edge の config.yaml ファイルで構成されている必要があります。The root CA certificate and the device CA certificate (with its private key) need to be present on the IoT Edge gateway device and configured in the IoT Edge config.yaml file. この場合の " ルート CA 証明書 " は、この IoT Edge シナリオに対する最上位の証明機関であることに注意してください。Remember that in this case root CA certificate means the topmost certificate authority for this IoT Edge scenario. ゲートウェイ デバイスの CA 証明書とダウンストリーム デバイスの証明書は、同じルート CA 証明書にロールアップする必要があります。The gateway device CA certificate and the downstream device certificates need to roll up to the same root CA certificate.

ヒント

ルート CA 証明書とデバイス CA 証明書を IoT Edge デバイスにインストールするプロセスの詳細については、「IoT Edge デバイスで証明書を管理する」も参照してください。The process of installing the root CA certificate and device CA certificate on an IoT Edge device is also explained in more detail in Manage certificates on an IoT Edge device.

次のファイルを準備します。Have the following files ready:

  • ルート CA 証明書Root CA certificate
  • デバイス CA 証明書Device CA certificate
  • デバイス CA 秘密キーDevice CA private key

運用シナリオでは、独自の証明機関を使用してこれらのファイルを生成する必要があります。For production scenarios, you should generate these files with your own certificate authority. 開発シナリオとテスト シナリオでは、デモ証明書を使用できます。For development and test scenarios, you can use demo certificates.

  1. デモ証明書を使用している場合は、「IoT Edge デバイスの機能をテストするためのデモ用の証明書を作成する」の手順に従ってファイルを作成します。If you're using demo certificates, use the instructions in Create demo certificates to test IoT Edge device features to create your files. そのページでは、以下の手順を実行する必要があります。On that page, you need to take the following steps:

    1. まず、デバイスで証明書を生成するためのスクリプトを設定します。To start, set up the scripts for generating certificates on your device.
    2. ルート CA 証明書を作成します。Create a root CA certificate. それらの手順を終えると、ルート CA 証明書ファイルが作成されます。At the end of those instructions, you'll have a root CA certificate file:
      • <path>/certs/azure-iot-test-only.root.ca.cert.pem.<path>/certs/azure-iot-test-only.root.ca.cert.pem.
    3. IoT Edge デバイスの CA 証明書を作成します。Create IoT Edge device CA certificates. それらの手順を終えると、デバイス CA 証明書とその秘密キーが作成されます。At the end of those instructions, you'll have a device CA certificate and its private key:
      • <path>/certs/iot-edge-device-<cert name>-full-chain.cert.pem、および<path>/certs/iot-edge-device-<cert name>-full-chain.cert.pem and
      • <path>/private/iot-edge-device-<cert name>.key.pem
  2. 別のマシンで証明書を作成した場合は、それらを IoT Edge デバイスにコピーします。If you created the certificates on a different machine, copy them over to your IoT Edge device.

  3. お使いの IoT Edge デバイスで、セキュリティ デーモン構成ファイルを開きます。On your IoT Edge device, open the security daemon config file.

    • Windows: C:\ProgramData\iotedge\config.yamlWindows: C:\ProgramData\iotedge\config.yaml
    • Linux: /etc/iotedge/config.yamlLinux: /etc/iotedge/config.yaml
  4. ファイルの Certificate settings セクションを見つけます。Find the Certificate settings section of the file. certificates: で始まる 4 行をコメント解除し、以下のプロパティの値として、3 つのファイルへのファイル URI を指定します。Uncomment the four lines starting with certificates: and provide the file URIs to your three files as values for the following properties:

    • device_ca_cert : デバイス CA 証明書device_ca_cert : device CA certificate
    • device_ca_pk : デバイス CA 秘密キーdevice_ca_pk : device CA private key
    • trusted_ca_certs : ルート CA 証明書trusted_ca_certs : root CA certificate

    certificates: の行の前に空白文字がないこと、および他の行が 2 つの空白でインデントされていることを確認します。Make sure there is no preceding whitespace on the certificates: line, and that the other lines are indented by two spaces.

  5. ファイルを保存して閉じます。Save and close the file.

  6. IoT Edge を再起動します。Restart IoT Edge.

    • Windows: Restart-Service iotedgeWindows: Restart-Service iotedge
    • Linux: sudo systemctl restart iotedgeLinux: sudo systemctl restart iotedge

edgeHub をデプロイしてメッセージをルーティングするDeploy edgeHub and route messages

ダウンストリーム デバイスによって、テレメトリとメッセージがゲートウェイ デバイスに送信されます。ここで、IoT Edge ハブ モジュールは、他のモジュールまたは IoT Hub に情報をルーティングする役割を担います。Downstream devices send telemetry and messages to the gateway device, where the IoT Edge hub module is responsible for routing the information to other modules or to IoT Hub. この機能のためにゲートウェイ デバイスを準備するには、次のことを確認してください。To prepare your gateway device for this function, make sure that:

  • IoT Edge ハブ モジュールがデバイスにデプロイされます。The IoT Edge hub module is deployed to the device.

    デバイスに IoT Edge を初めてインストールするときには、1 つのシステム モジュール (IoT Edge エージェント) のみが自動的に起動します。When you first install IoT Edge on a device, only one system module starts automatically: the IoT Edge agent. デバイスの最初のデプロイを作成すると、2 番目のシステム モジュール (IoT Edge ハブ) も起動します。Once you create the first deployment for a device, the second system module, the IoT Edge hub, starts as well. デバイス上で edgeHub モジュールが実行されていない場合は、デバイスのデプロイを作成します。If the edgeHub module isn't running on your device, create a deployment for your device.

  • IoT Edge ハブ モジュールには、ダウンストリーム デバイスからの受信メッセージを処理するためのルートが設定されています。The IoT Edge hub module has routes set up to handle incoming messages from downstream devices.

    ダウンストリーム デバイスからのメッセージを処理するためのルートがゲートウェイ デバイスに存在している必要があります。そうではない場合、メッセージは処理されません。The gateway device must have a route in place to handle messages from downstream devices or else those messages will not be processed. ゲートウェイ デバイスのモジュールに、または直接 IoT Hub にメッセージを送信することができます。You can send the messages to modules on the gateway device or directly to IoT Hub.

IoT Edge ハブ モジュールをデプロイし、ダウンストリーム デバイスからの受信メッセージを処理するためのルートを使用して構成するには、次の手順に従います。To deploy the IoT Edge hub module and configure it with routes to handle incoming messages from downstream devices, follow these steps:

  1. Azure Portal で、お使いの IoT ハブに移動します。In the Azure portal, navigate to your IoT hub.

  2. IoT Edge に移動し、ゲートウェイとして使用する IoT Edge デバイスを選択します。Go to IoT Edge and select your IoT Edge device that you want to use as a gateway.

  3. [Set Modules] (モジュールの設定) を選択します。Select Set Modules .

  4. [モジュール] ページで、ゲートウェイ デバイスにデプロイするモジュールを追加できます。On the Modules page, you can add any modules you want to deploy to the gateway device. この記事では、このページで明示的に設定する必要のない edgeHub モジュールの構成とデプロイに重点を置いて説明します。For the purposes of this article we're focused on configuring and deploying the edgeHub module, which doesn't need to be explicitly set on this page.

  5. Next:次へ: ルート を選択します。Select Next: Routes .

  6. [ルート] ページで、ダウンストリーム デバイスからのメッセージを処理するためのルートが存在することを確認します。On the Routes page, make sure that there is a route to handle messages coming from downstream devices. 次に例を示します。For example:

    • モジュールやダウンストリーム デバイスからのすべてのメッセージを IoT Hub に送信するルート。A route that sends all messages, whether from a module or from a downstream device, to IoT Hub:

      • 名前 : allMessagesToHubName : allMessagesToHub
      • : FROM /messages/* INTO $upstreamValue : FROM /messages/* INTO $upstream
    • すべてのダウンストリーム デバイスからのすべてのメッセージを IoT Hub に送信するルート。A route that sends all messages from all downstream devices to IoT Hub:

      • 名前 : allDownstreamToHubName : allDownstreamToHub
      • : FROM /messages/* WHERE NOT IS_DEFINED ($connectionModuleId) INTO $upstreamValue : FROM /messages/* WHERE NOT IS_DEFINED ($connectionModuleId) INTO $upstream

      IoT Edge モジュールからのメッセージとは異なり、ダウンストリーム デバイスからのメッセージにはモジュール ID が関連付けられていないため、このルートは機能します。This route works because, unlike messages from IoT Edge modules, messages from downstream devices don't have a module ID associated with them. ルートの WHERE 句を使用すると、そのシステム プロパティが含まれるメッセージをフィルター処理で除外できます。Using the WHERE clause of the route allows us to filter out any messages with that system property.

      メッセージのルーティングについて詳しくは、モジュールのデプロイとルートの確立に関する記事をご覧ください。For more information about message routing, see Deploy modules and establish routes.

  7. ルートが 1 つ以上作成されたら、 [確認と作成] を選択します。Once your route or routes are created, select Review + create .

  8. [確認および作成] ページで、 [作成] を選択します。On the Review + create page, select Create .

ゲートウェイ デバイスで開いているポートOpen ports on gateway device

IoT Hub とのすべての通信は送信接続を介して行われるため、Standard IoT Edge デバイスが機能するために受信接続は必要ありません。Standard IoT Edge devices don't need any inbound connectivity to function, because all communication with IoT Hub is done through outbound connections. ゲートウェイ デバイスは、ダウンストリーム デバイスからメッセージを受信する必要があるため、異なります。Gateway devices are different because they need to receive messages from their downstream devices. ダウンストリーム デバイスとゲートウェイ デバイスの間にファイアウォールがある場合は、ファイアウォール経由でも通信が可能である必要があります。If a firewall is between the downstream devices and the gateway device, then communication needs to be possible through the firewall as well.

ゲートウェイ シナリオが機能するには、IoT Edge ハブでサポートされているプロトコルの少なくとも 1 つが、ダウンストリーム デバイスからの受信トラフィック用に開かれている必要があります。For a gateway scenario to work, at least one of the IoT Edge hub's supported protocols must be open for inbound traffic from downstream devices. サポートされているプロトコルは、MQTT、AMQP、HTTPS、MQTT over WebSockets、および AMQP over WebSockets です。The supported protocols are MQTT, AMQP, HTTPS, MQTT over WebSockets, and AMQP over WebSockets.

PortPort ProtocolProtocol
88838883 MQTTMQTT
56715671 AMQPAMQP
443443 HTTPSHTTPS
MQTT+WSMQTT+WS
AMQP+WSAMQP+WS

次のステップNext steps

これで IoT Edge デバイスが透過的なゲートウェイとしてセットアップされたので、ゲートウェイを信頼してメッセージを送信するようにダウンストリーム デバイスを構成する必要があります。Now that you have an IoT Edge device set up as a transparent gateway, you need to configure your downstream devices to trust the gateway and send messages to it. Azure IoT Hub に対するダウンストリーム デバイスの認証を行う」に進み、透過的なゲートウェイのシナリオを設定する手順について確認してください。Continue on to Authenticate a downstream device to Azure IoT Hub for the next steps in setting up your transparent gateway scenario.