モノのインターネット (IoT) のデプロイのセキュリティ保護Secure your Internet of Things (IoT) deployment

この記事では、Azure の IoT インフラストラクチャを保護する詳細事項の次のレベルを説明します。This article provides the next level of detail for securing the Azure IoT-based Internet of Things (IoT) infrastructure. 各コンポーネントを設定し、デプロイする実装レベルの詳細へリンクします。It links to implementation level details for configuring and deploying each component. また、さまざまな方法の比較や選択肢についても説明しています。It also provides comparisons and choices between various competing methods.

Azure IoT デプロイの保護は、次の 3 つのセキュリティ領域に分類できます。Securing the Azure IoT deployment can be divided into the following three security areas:

  • デバイスのセキュリティ: デプロイされている間に、IoT デバイスをセキュリティ保護。Device Security: Securing the IoT device while it is deployed in the wild.

  • 接続のセキュリティ: IoT デバイスと IoT Hub の間で送信されるすべてのデータの保護、改ざん防止。Connection Security: Ensuring all data transmitted between the IoT device and IoT Hub is confidential and tamper-proof.

  • クラウド セキュリティ: クラウド経由、またクラウド格納によりデータを保護する手段の提供。Cloud Security: Providing a means to secure data while it moves through, and is stored in the cloud.

次の 3 つのセキュリティ領域

安全なデバイス プロビジョニングと認証Secure device provisioning and authentication

IoT ソリューション アクセラレータでは、次の 2 つの方法を使って IoT デバイスをセキュリティで保護します。The IoT solution accelerators secure IoT devices using the following two methods:

  • デバイスで IoT Hub と通信するために使用される各デバイスの一意の id キー (セキュリティ トークン) の提供。By providing a unique identity key (security tokens) for each device, which can be used by the device to communicate with the IoT Hub.

  • IoT Hub にデバイスを認証させる手段として、オンデバイスの X.509 証明書と秘密キーの使用。By using an on-device X.509 certificate and private key as a means to authenticate the device to the IoT Hub. この認証メソッドでは、デバイスの秘密キーがデバイス以外では分からなくなるため、常に高レベルのセキュリティ保護を提供できます。This authentication method ensures that the private key on the device is not known outside the device at any time, providing a higher level of security.

セキュリティ トークンの方法では、各呼び出しに対称キーを関連付けることによって、IoT Hub にデバイスで実行する各呼び出しの認証を提供します。The security token method provides authentication for each call made by the device to IoT Hub by associating the symmetric key to each call. X.509 ベースの認証は、TLS 接続の確立の一部として物理層に IoT デバイスの認証を許可します。X.509-based authentication allows authentication of an IoT device at the physical layer as part of the TLS connection establishment. 安全性が低いパターンである X.509 認証を行わず、セキュリティ トークン ベースのメソッドを使用できます。The security-token-based method can be used without the X.509 authentication, which is a less secure pattern. 2 つの方法の選択は主に、いかに安全なデバイス認証が必要であるか、また (秘密キーを安全に格納して) デバイスにセキュリティで保護された記憶域の可用性によって決まります。The choice between the two methods is primarily dictated by how secure the device authentication needs to be, and availability of secure storage on the device (to store the private key securely).

IoT Hub のセキュリティ トークンIoT Hub security tokens

IoT Hub では、デバイスとサービスの認証にセキュリティ トークンを使用することにより、ネットワーク経由でのキーの送信を回避します。IoT Hub uses security tokens to authenticate devices and services to avoid sending keys on the network. さらに、セキュリティ トークンには、有効期間とスコープの制限があります。Additionally, security tokens are limited in time validity and scope. Azure IoT SDK を使用すると、自動的にトークンを生成できます。その際、特別な構成は必要ありません。Azure IoT SDKs automatically generate tokens without requiring any special configuration. ただし、一部のシナリオでは、ユーザーがセキュリティ トークンを直接生成して使用する必要があります。Some scenarios, however, require the user to generate and use security tokens directly. これらのシナリオには、MQTT、AMQP、または HTTP サーフェスの直接的な使用や、トークン サービス パターンの実装が含まれます。These scenarios include the direct use of the MQTT, AMQP, or HTTP surfaces, or the implementation of the token service pattern.

セキュリティ トークンとその使用状況の構造の詳細については、次の記事で説明します。More details on the structure of the security token and its usage can be found in the following articles:

各 IoT Hub には、転送中の cloud-to-device メッセージを含むキューなど、サービス内にデバイスごとのリソースを作成したり、デバイス向けのエンドポイントへのアクセスを許可したりするために使用できる ID レジストリがあります。Each IoT Hub has an identity registry that can be used to create per-device resources in the service, such as a queue that contains in-flight cloud-to-device messages, and to allow access to the device-facing endpoints. IoT Hub ID レジストリでは、ソリューションのデバイス ID とセキュリティ キーのセキュリティで保護されたストレージが提供されます。The IoT Hub identity registry provides secure storage of device identities and security keys for a solution. デバイス ID は個別に、またはまとめて許可リストあるいはブロック リストに追加できるため、デバイスへのアクセスを完全に制御できます。Individual or groups of device identities can be added to an allow list, or a block list, enabling complete control over device access. 次の記事では、ID レジストリの構造とサポートされている操作について詳しく説明します。The following articles provide more details on the structure of the identity registry and supported operations.

IoT Hub では、MQTT、AMQP、HTTP などのプロトコルがサポートされますIoT Hub supports protocols such as MQTT, AMQP, and HTTP. 各プロトコルは、IoT デバイスから IoT Hub まで異なる方法でセキュリティ トークンを使用します。Each of these protocols uses security tokens from the IoT device to IoT Hub differently:

  • AMQP: SASL PLAIN および AMQP 要求ベースのセキュリティ (IoT Hub レベルのトークンの場合、{policyName}@sas.root.{iothubName}。デバイス スコープのトークンの場合、{deviceId})。AMQP: SASL PLAIN and AMQP Claims-based security ({policyName}@sas.root.{iothubName} with IoT hub-level tokens; {deviceId} with device-scoped tokens).

  • MQTT: CONNECT パケットでは、{ClientId}[ユーザー名] フィールドの {IoThubhostname}/{deviceId}、および [パスワード] フィールドの SAS トークンとして {deviceId} が使用されます。MQTT: CONNECT packet uses {deviceId} as the {ClientId}, {IoThubhostname}/{deviceId} in the Username field and an SAS token in the Password field.

  • HTTP: 有効なトークンは、承認要求ヘッダーにあります。HTTP: Valid token is in the authorization request header.

IoT Hub ID レジストリを使用して、デバイスごとのセキュリティ資格情報とアクセス制御を構成できます。IoT Hub identity registry can be used to configure per-device security credentials and access control. ただし、IoT ソリューションで既にカスタム デバイス ID レジストリや認証スキームにかなり投資している場合、トークン サービスを作成することで、この既存のインフラストラクチャに IoT Hub を統合できます。However, if an IoT solution already has a significant investment in a custom device identity registry and/or authentication scheme, it can be integrated into an existing infrastructure with IoT Hub by creating a token service.

X.509 証明書ベースのデバイスの認証X.509 certificate-based device authentication

デバイスベースの X.509 証明書およびそれに関連付けられている秘密キーと公開キーの組を使用することにより、物理層で追加の認証が可能になります。The use of a device-based X.509 certificate and its associated private and public key pair allows additional authentication at the physical layer. 秘密キーは、デバイスに安全に格納され、デバイスの外側では検出されません。The private key is stored securely in the device and is not discoverable outside the device. X.509 証明書には、デバイス ID など、デバイスとその他の組織の詳細に関する情報が含まれています。The X.509 certificate contains information about the device, such as device ID, and other organizational details. 証明書の署名は、秘密キーを使用して生成されます。A signature of the certificate is generated by using the private key.

高度なデバイスのプロビジョニング フロー:High-level device provisioning flow:

  • デバイスの製造または有効化中に、デバイスに関連付けられた物理デバイス - デバイス ID や X.509 証明書に対する識別子を結び付けます。Associate an identifier to a physical device – device identity and/or X.509 certificate associated to the device during device manufacturing or commissioning.

  • IoT Hub – デバイス ID や IoT Hub ID レジストリの関連するデバイス情報に対応する ID のエントリを作成します。Create a corresponding identity entry in IoT Hub – device identity and associated device information in the IoT Hub identity registry.

  • IoT Hub ID レジストリの X.509 証明書の拇印を安全に格納します。Securely store X.509 certificate thumbprint in IoT Hub identity registry.

デバイス上のルート証明書Root certificate on device

IoT Hub でセキュリティで保護された TLS 接続を確立している間は、IoT デバイスは、デバイスの SDK の一部であるルート証明書を使用して IoT Hub を認証します。While establishing a secure TLS connection with IoT Hub, the IoT device authenticates IoT Hub using a root certificate that is part of the device SDK. C クライアントの SDK では、証明書はリポジトリのルートの下の、"\c\certs" フォルダーの下にあります。For the C client SDK, the certificate is located under the folder "\c\certs" under the root of the repo. これらのルート証明書の有効期間が長期間であるとしても、それが切れるまたは取り消される可能性があります。Though these root certificates are long-lived, they still may expire or be revoked. デバイスで証明書を更新できない場合、デバイスは IoT Hub (またはその他のクラウド サービス) に、後で接続することできません。If there is no way of updating the certificate on the device, the device may not be able to subsequently connect to the IoT Hub (or any other cloud service). IoT デバイスをデプロイした後に、ルート証明書を更新するための手段を持つと、このようなリスクを効果的に軽減します。Having a means to update the root certificate once the IoT device is deployed effectively mitigates this risk.

接続のセキュリティ保護Securing the connection

IoT デバイスと IoT Hub の間でのインターネット接続は、トランスポート層セキュリティ (TLS) 規格を使用してセキュリティ保護されます。Internet connection between the IoT device and IoT Hub is secured using the Transport Layer Security (TLS) standard. Azure IoT では TLS 1.2、TLS 1.1、TLS 1.0 の順序でサポートされます。Azure IoT supports TLS 1.2, TLS 1.1, and TLS 1.0, in this order. TLS 1.0 のサポートは、旧バージョンとの互換性を保つために提供されます。Support for TLS 1.0 is provided for backward compatibility only. TLS 1.2 を使用するようにハブを構成する方法については、IoT Hub での TLS のサポートを参照してください。これにより、最も高いセキュリティを達成できます。Check TLS support in IoT Hub to see how to configure your hub to use TLS 1.2, as it provides the most security.

クラウドを保護するSecuring the cloud

Azure IoT Hub ではセキュリティ キーごとにアクセス制御ポリシーの定義付けが行われます。Azure IoT Hub allows definition of access control policies for each security key. それは次の一連のアクセス許可を使用して、各 IoT Hub のエンドポイントへのアクセスを許可します。It uses the following set of permissions to grant access to each of IoT Hub's endpoints. 次のアクセス許可により、機能に応じて IoT Hub へのアクセスを制限します。Permissions limit the access to an IoT Hub based on functionality.

  • RegistryReadRegistryRead. ID レジストリへの読み取りアクセスを許可します。Grants read access to the identity registry. 詳細については、ID レジストリに関するページを参照してください。For more information, see identity registry.

  • RegistryReadWriteRegistryReadWrite. ID レジストリへの読み取りと書き込みアクセスを許可します。Grants read and write access to the identity registry. 詳細については、ID レジストリに関するページを参照してください。For more information, see identity registry.

  • ServiceConnectServiceConnect. クラウド サービス向けの通信エンドポイントと監視エンドポイントへのアクセスを許可します。Grants access to cloud service-facing communication and monitoring endpoints. たとえば、D2C メッセージの受信、C2D メッセージの送信、対応する配信確認メッセージの取得のアクセス許可をバックエンド クラウド サービスに付与します。For example, it grants permission to back-end cloud services to receive device-to-cloud messages, send cloud-to-device messages, and retrieve the corresponding delivery acknowledgments.

  • DeviceConnectDeviceConnect. デバイス向けのエンドポイントへのアクセスを許可します。Grants access to device-facing endpoints. たとえば、D2C メッセージの送信と、C2D メッセージの受信のアクセス許可を付与します。For example, it grants permission to send device-to-cloud messages and receive cloud-to-device messages. このアクセス許可はデバイスによって使用されます。This permission is used by devices.

IoT Hub とセキュリティ トークンを使用して DeviceConnect アクセス許可を取得するには、デバイス ID キーを使用する方法と共有アクセス キーを使用する方法の 2 とおりがあります。There are two ways to obtain DeviceConnect permissions with IoT Hub with security tokens: using a device identity key, or a shared access key. さらに、デバイスからアクセスできるすべての機能は、仕様により、 /devices/{deviceId}というプレフィックスを持つエンドポイントで公開されることに注意することが重要です。Moreover, it is important to note that all functionality accessible from devices is exposed by design on endpoints with prefix /devices/{deviceId}.

サービス コンポーネントでは、適切なアクセス許可を付与する共有アクセス ポリシーを使用した場合にのみセキュリティ トークンを生成できますService components can only generate security tokens using shared access policies granting the appropriate permissions.

Azure IoT Hub とソリューションの一部として使用するその他のサービスは、Azure Active Directory を使用してユーザーを管理できます。Azure IoT Hub and other services that may be part of the solution allow management of users using the Azure Active Directory.

Azure IoT Hub によって取り込まれたデータは、Azure Stream Analytics や Azure Blob Storage などのさまざまなサービスで使用できます。Data ingested by Azure IoT Hub can be consumed by a variety of services such as Azure Stream Analytics and Azure blob storage. これらのサービスでは、管理アクセスが可能になります。These services allow management access. これらのサービスと利用可能なオプションの詳細については、以下をご覧ください。Read more about these services and available options:

  • Azure Cosmos DB: 属性、構成、セキュリティ プロパティなど、プロビジョニングするデバイスのメタデータを管理する半構造化データ用に完全にインデックス付けされたスケーラブル データベース サービス。Azure Cosmos DB: A scalable, fully-indexed database service for semi-structured data that manages metadata for the devices you provision, such as attributes, configuration, and security properties. Azure Cosmos DB では、高パフォーマンスで高スループットの処理、スキーマに依存しないデータのインデックス付けと豊富な SQL クエリ インターフェイスが提供されます。Azure Cosmos DB offers high-performance and high-throughput processing, schema-agnostic indexing of data, and a rich SQL query interface.

  • Azure Stream Analytics: クラウドにおけるリアルタイム ストリーム処理。これにより、デバイス、センサー、インフラストラクチャ、アプリケーションからリアルタイムの分析情報を得られるようにする低コストの分析ソリューションを迅速に開発してデプロイすることができます。Azure Stream Analytics: Real-time stream processing in the cloud that enables you to rapidly develop and deploy a low-cost analytics solution to uncover real-time insights from devices, sensors, infrastructure, and applications. この完全に管理されたサービスからのデータは、高スループット、低待機時間、および回復性を維持した状態で任意のボリュームにスケーリングできます。The data from this fully-managed service can scale to any volume while still achieving high throughput, low latency, and resiliency.

  • Azure App Services: クラウドとオンプレミスのどちらにあるデータにも接続できる強力な Web アプリとモバイル アプリを構築するためのクラウド プラットフォーム。Azure App Services: A cloud platform to build powerful web and mobile apps that connect to data anywhere; in the cloud or on-premises. iOS、Android、Windows 用の魅力的なモバイル アプリをビルドします。Build engaging mobile apps for iOS, Android, and Windows. 多数のクラウド ベース サービスとエンタープライズ アプリケーションへのすぐに利用可能な接続により、使用しているサービスとしてのソフトウェア (SaaS) およびエンタープライズ アプリケーションと統合します。Integrate with your Software as a Service (SaaS) and enterprise applications with out-of-the-box connectivity to dozens of cloud-based services and enterprise applications. お気に入りの言語や IDE (.NET、Node.js、PHP、Python、または Java) でコードを作成し、Web アプリと API をこれまで以上に迅速にビルドできます。Code in your favorite language and IDE (.NET, Node.js, PHP, Python, or Java) to build web apps and APIs faster than ever.

  • Logic Apps: Azure App Service の Logic Apps 機能は、既存の基幹業務システムに IoT ソリューションを統合し、ワークフロー プロセスを自動化するのに役立ちます。Logic Apps: The Logic Apps feature of Azure App Service helps integrate your IoT solution to your existing line-of-business systems and automate workflow processes. 開発者は Logic Apps を使用することで、トリガーで開始され、一連の手順 (つまり、ビジネス プロセスに統合するために強力なコネクタを使用するルールとアクション) を実行するワークフローを設計できます。Logic Apps enables developers to design workflows that start from a trigger and then execute a series of steps—rules and actions that use powerful connectors to integrate with your business processes. Logic Apps では、SaaS、クラウド ベース、およびオンプレミス アプリケーションの広範なエコシステムにすぐに接続できます。Logic Apps offers out-of-the-box connectivity to a vast ecosystem of SaaS, cloud-based, and on-premises applications.

  • Azure Blob Storage: デバイスからクラウドに送信されるデータに対応する信頼性と経済性に優れたクラウド ストレージ。Azure Blob storage: Reliable, economical cloud storage for the data that your devices send to the cloud.

まとめConclusion

この記事では、Azure IoT を使って IoT インフラストラクチャの設計や導入について実装レベルの詳細の概要を説明します。This article provides overview of implementation level details for designing and deploying an IoT infrastructure using Azure IoT. 各コンポーネントをセキュリティで保護して構成することが、IoT インフラストラクチャ全体をセキュリティ保護するポイントです。Configuring each component to be secure is key in securing the overall IoT infrastructure. Azure IoT で利用可能な設計についての選択肢は、ある程度の柔軟性と選択の幅を持たせますが、セキュリティに影響が及ぶことがあります。The design choices available in Azure IoT provide some level of flexibility and choice; however, each choice may have security implications. これらの選択肢がリスクやコストから評価されることをお勧めします。It is recommended that each of these choices be evaluated through a risk/cost assessment.

参照See also

IoT Hub 開発者ガイドの IoT Hub へのアクセス制御に関するページで IoT Hub のセキュリティについて学習します。Read about IoT Hub security in Control access to IoT Hub in the IoT Hub developer guide.