IoT ソリューションを使用すると、IoT デバイスと資産を大規模に接続、監視、制御できます。 クラウドに接続されたソリューションでは、デバイスと資産がクラウドに直接接続されます。 エッジに接続されたソリューションでは、デバイスと資産がエッジ ランタイム環境に接続されます。 IoT ソリューションを脅威から保護するには、物理資産とデバイス、エッジ インフラストラクチャ、クラウド サービスをセキュリティで保護する必要があります。 また、エッジでもクラウドでも、IoT ソリューションを流れるデータをセキュリティで保護する必要があります。
この記事では、IoT ソリューションを最適にセキュリティで保護する方法に関するガイダンスを提供します。 各セクションには、追加の詳細とガイダンスを提供するコンテンツへのリンクが含まれています。
次の図は、一般的な エッジ接続 IoT ソリューションのコンポーネントの概要を示しています。 この記事では、エッジに接続された IoT ソリューションのセキュリティについて説明します。
エッジに接続された IoT ソリューションでは、セキュリティを次の 4 つの領域に分割できます。
資産のセキュリティ: オンプレミスにデプロイされている間に IoT 資産をセキュリティで保護します。
接続のセキュリティ: 資産、エッジ、クラウド サービス間で転送中のすべてのデータが機密であり、改ざんを防ぎます。
エッジ セキュリティ: データの移動時にデータをセキュリティで保護し、エッジに格納します。
クラウド セキュリティ: データの移動時にデータをセキュリティで保護し、クラウドに格納します。
Microsoft Defender for IoT および Microsoft Defender for Containers
Microsoft Defender for IoTは、IoT および運用テクノロジ (OT) デバイス、脆弱性、脅威を特定するために特別に構築された統合セキュリティ ソリューションです。 Microsoft Defender for Containers は、マルチクラウド環境とオンプレミス環境全体で、コンテナー化された資産 (Kubernetes クラスター、Kubernetes ノード、Kubernetes ワークロード、コンテナー レジストリ、コンテナー イメージなど) とそのアプリケーションのセキュリティを向上、監視、および維持するためのクラウドネイティブ ソリューションです。
Defender for IoT と Defender for Containers の両方で、この記事に含まれる推奨事項の一部を自動的に監視できます。 IoT の Defender と Containers の Defender は、エッジ接続ソリューションを保護するための防御の最前線であるべきです。 詳細については、以下をご覧ください。
資産のセキュリティ
このセクションでは、産業機器、センサー、IoT ソリューションの一部であるその他のデバイスなど、資産をセキュリティで保護する方法について説明します。 資産のセキュリティは、生成および送信するデータの整合性と機密性を確保するために重要です。
Azure Key Vaultとシークレット ストア拡張機能の使用: Azure Key Vault を使用して、キー、パスワード、証明書、シークレットなどの資産の機密情報を格納および管理します。 Azure IoT Operationsは、クラウド上のマネージド コンテナー ソリューションとしてAzure Key Vaultを使用し、Kubernetes 用の Azure Key Vault シークレット ストア拡張機能 を使用してクラウドからシークレットを同期し、それらを Kubernetes シークレットとしてエッジに格納します。 詳細については、Azure IoT OperationsデプロイのManage シークレットを参照してください。
セキュリティで保護された証明書管理を設定する: 資産とエッジ ランタイム環境の間のセキュリティで保護された通信を確保するには、証明書の管理が重要です。 Azure IoT Operationsには、証明書の発行、更新、取り消しなど、証明書を管理するためのツールが用意されています。 詳細については、「Azure IoT Operations 内部通信のための証明書管理」を参照してください。
改ざん防止ハードウェアの選択: デバイス カバーの開口部やデバイスの一部の取り外しなど、物理的な改ざんを検出する組み込みのメカニズムを備えた資産ハードウェアを選択します。 これらの改ざんシグナルは、クラウドにアップロードされたデータ ストリームの一部にすることができ、オペレーターはこれらのイベントにアラートを送信します。
資産ファームウェアのセキュリティで保護された更新プログラムを有効にする: 資産のオンエア更新を有効にするサービスを使用します。 更新プログラムのセキュリティで保護されたパスとファームウェア バージョンの暗号化保証を使用して資産を構築し、更新中および更新後に資産をセキュリティで保護します。
資産ハードウェアを安全に展開する: 資産ハードウェアの展開は、特にパブリックスペースや教師なしロケールなどの安全でない場所で、可能な限り改ざんを防止します。 USB ポートを安全にカバーする必要がない場合など、物理的な攻撃フットプリントを最小限に抑えるために必要な機能のみを有効にします。
デバイス製造元のセキュリティと展開のベスト プラクティスに従います。デバイスの製造元がセキュリティと展開のガイダンスを提供する場合は、この記事の一般的なガイダンスと共に、そのガイダンスに従ってください。
接続のセキュリティ
このセクションでは、資産、エッジ ランタイム環境、クラウド サービス間の接続をセキュリティで保護する方法について説明します。 接続のセキュリティは、送信されるデータの整合性と機密性を確保するために重要です。
トランスポート層セキュリティ (TLS) を使用して資産からの接続をセキュリティで保護します: Azure IoT Operations内のすべての通信は TLS を使用して暗号化されます。 エッジに接続されたソリューションの意図しない攻撃者への露出を最小限に抑える既定のセキュリティで保護されたエクスペリエンスを提供するために、Azure IoT Operationsは TLS サーバー証明書用の既定のルート CA と発行者と共にデプロイされます。 運用環境へのデプロイの場合、独自の CA 発行者とエンタープライズ PKI ソリューションを使用することをお勧めします。
運用環境用に独自の CA を使用する: 運用展開の場合は、既定の自己署名ルート CA を独自の CA 発行者に置き換え、エンタープライズ PKI と統合して信頼とコンプライアンスを確保します。 詳細については、「Azure IoT Operations 内部通信のための証明書管理」を参照してください。
エンタープライズ ファイアウォールまたはプロキシを使用して送信トラフィックを管理する: エンタープライズ ファイアウォールまたはプロキシを使用する場合は、許可リストに Azure IoT Operations エンドポイントを追加します。
メッセージ ブローカーの内部トラフィックを暗号化する: エッジ インフラストラクチャ内の内部通信のセキュリティを確保することは、データの整合性と機密性を維持するために重要です。 MQTT ブローカーのフロントエンドポッドとバックエンド ポッドの間で転送中の内部トラフィックとデータを暗号化するように MQTT ブローカーを構成する必要があります。 詳細については、「 ブローカーの内部トラフィックと内部証明書の暗号化を構成する」を参照してください。
MQTT ブローカーのリスナーの自動証明書管理を使用して TLS を構成する: Azure IoT Operationsは、MQTT ブローカーのリスナーに対して自動証明書管理を提供します。 この機能により、証明書を手動で管理する管理オーバーヘッドが軽減され、タイムリーな更新が保証され、セキュリティ ポリシーへのコンプライアンスの維持に役立ちます。 詳細については、 BrokerListener を使用した MQTT ブローカー通信のセキュリティ保護に関するページを参照してください。
OPC UA サーバーへのセキュリティで保護された接続を設定する: OPC UA サーバーに接続するときは、セッションを安全に確立するために信頼する OPC UA サーバーを決定する必要があります。 詳細については、「OPC UA 用コネクタの OPC UA 証明書インフラストラクチャを構成する」を参照してください。
ネットワークの分離とセグメント化: ネットワークのセグメント化とファイアウォールを使用して、IoT Operations クラスターとエッジ デバイスを他のネットワーク リソースから分離します。 エンタープライズ ファイアウォールまたはプロキシを使用している場合は、必要なエンドポイントを許可リストに追加します。 詳細については、「 運用展開のガイドライン - ネットワーク」を参照してください。
エッジ セキュリティ
このセクションでは、エッジ プラットフォームで実行されるソフトウェアであるエッジ ランタイム環境をセキュリティで保護する方法について説明します。 このソフトウェアは、資産データを処理し、資産とクラウド サービス間の通信を管理します。 エッジ ランタイム環境のセキュリティは、処理および送信されるデータの整合性と機密性を確保するために重要です。
エッジランタイム環境を最新の状態に保つ: クラスターとAzure IoT Operationsのデプロイメントを最新のパッチとマイナーリリースで更新し、利用可能なすべてのセキュリティとバグ修正を取得します。 運用環境のデプロイでは、Azure Arc新しい更新プログラムがクラスターに適用されるタイミングを完全に制御します。 代わりに、必要に応じてエージェントを手動でアップグレードします。
コンテナー イメージと Helm イメージの整合性を検証する: クラスターにイメージをデプロイする前に、イメージがMicrosoftによって署名されていることを確認します。 詳細については、「 イメージ署名の検証」を参照してください。
MQTT ブローカーでの認証には、常に X.509 証明書または Kubernetes サービス アカウント トークンを使用します。MQTT ブローカーは、クライアントに対して複数の認証方法をサポートします。 リスナー ポートごとに、BrokerAuthentication リソースに関する固有の認証設定を構成できます。 詳細については、「 MQTT ブローカー認証の構成」を参照してください。
MQTT ブローカーのトピック資産に必要な最小限の特権を提供する: 承認ポリシーは、クライアントがブローカーに対して実行できるアクション (トピックの接続、発行、サブスクライブなど) を決定します。 BrokerAuthorization リソースで 1 つまたは複数の認可ポリシーを使うように MQTT ブローカーを構成します。 詳細については、 MQTT ブローカー承認の構成に関するページを参照してください。
クラウド セキュリティ
このセクションでは、資産データを処理して格納するサービスであるクラウド サービスをセキュリティで保護する方法について説明します。 クラウド サービスのセキュリティは、データの整合性と機密性を確保するために不可欠です。
クラウド接続にユーザー割り当てマネージド ID を使用する: 常にマネージド ID 認証を使用します。 可能な場合は、データ フロー エンドポイントでユーザー割り当てマネージド ID を使用し、柔軟性と監査可能性を確保します。 詳細については、 Azure IoT Operationsを参照してください。
監視リソースをデプロイし、ログを設定します: 監視によって、Azure IoT Operations構成のすべてのレイヤーを可視化できます。 これは、問題の実際の動作に関する分析情報を提供し、サイト信頼性エンジニアリングの有効性を高めます。 Azure IoT Operationsは、Azureでホストされているカスタムキュレーションされた Grafana ダッシュボードを通じて監視を提供します。 これらのダッシュボードは、Prometheus と Container Insights 用Azure Monitorマネージド サービスを利用します。
Azure IoT Operationsをデプロイする前に、クラスターに可観測性リソースをデプロイします。
AZURE RBAC を使用した資産と資産エンドポイントへの安全なアクセス: Azure IoT Operationsの資産と資産エンドポイントは、Kubernetes クラスターと Azure ポータルの両方に表示されます。 Azure RBAC を使用して、これらのリソースへのアクセスをセキュリティで保護します。 Azure RBAC は、Azure リソースへのアクセスを管理できる承認システムです。 Azure RBAC を使用して、特定のスコープでユーザー、グループ、およびアプリケーションにアクセス許可を付与します。 詳細については、「 資産と資産エンドポイントへのアクセスをセキュリティで保護する」を参照してください。
次の図は、一般的な クラウドに接続された IoT ソリューションのコンポーネントの概要を示しています。 この記事では、クラウドに接続された IoT ソリューションのセキュリティについて説明します。
クラウドに接続された IoT ソリューションでは、セキュリティを次の 3 つの領域に分割できます。
デバイスのセキュリティ: オンプレミスにデプロイされている間に IoT デバイスをセキュリティで保護します。
接続のセキュリティ: IoT デバイスと IoT クラウド サービスの間で送信されるすべてのデータが機密で改ざんされないようにします。
クラウド セキュリティ: データの移動時にデータをセキュリティで保護し、クラウドに格納します。
この記事の推奨事項は、 共有責任モデルで説明されているセキュリティ義務を満たすのに役立ちます。
Microsoft Defender for IoT
Microsoft Defender for IoTは、この記事の推奨事項の一部を自動的に監視します。 Microsoft Defender for IoTは、Azure リソースのセキュリティ状態を定期的に分析して潜在的なセキュリティの脆弱性を特定し、それらに対処する方法に関する推奨事項を提供します。 詳細については、以下をご覧ください。
デバイスのセキュリティ
このセクションでは、データを収集して送信するハードウェア コンポーネントである IoT デバイスをセキュリティで保護する方法について説明します。 デバイスのセキュリティは、生成および送信するデータの整合性と機密性を確保するために重要です。
ハードウェアの最小要件の範囲: 操作に必要な最小限の機能を含めるデバイス ハードウェアを選択します。それ以上は含められません。 たとえば、USB ポートは、ソリューション内のデバイスの操作に必要な場合にのみ含めます。 追加の機能により、デバイスが不要な攻撃ベクトルに公開される可能性があります。
改ざん防止ハードウェアの選択: デバイス カバーの開口部やデバイスの一部の取り外しなど、物理的な改ざんを検出するメカニズムが組み込まれたデバイス ハードウェアを選択します。 これらの改ざんシグナルは、クラウドにアップロードされたデータ ストリームの一部となり、オペレーターにこれらのイベントにアラートを送信できます。
セキュリティで保護されたハードウェアを選択する: 可能な場合は、セキュリティで保護された暗号化されたストレージやブート機能などのセキュリティ機能を含むデバイス ハードウェア を信頼できるプラットフォーム モジュールに基づいて選択します。 これらの機能により、デバイスの安全性が高く、IoT インフラストラクチャ全体の保護に役立ちます。
セキュリティで保護された更新プログラムを有効にします: Device Update for IoT Hub などのサービスを IoT デバイスの空の更新プログラムに使用します。 更新プログラムのセキュリティで保護されたパスを使用してデバイスを構築し、更新中と更新後にデバイスをセキュリティで保護するためのファームウェア バージョンの暗号化保証を行います。
セキュリティで保護されたソフトウェア開発手法に従う: セキュリティで保護されたソフトウェアの開発では、プロジェクトの開始時から実装、テスト、デプロイまで、セキュリティを考慮する必要があります。
Microsoft Security Development Lifecycle は、セキュリティで保護されたソフトウェアを構築するための段階的なアプローチを提供します。
可能な限りデバイス SDK を使用する: デバイス SDK は、堅牢で安全なデバイス アプリケーションの開発に役立つ暗号化や認証などのさまざまなセキュリティ機能を実装します。 詳細については、「Azure IoT SDK」を参照してください。
オープンソースソフトウェアを慎重に選択する:オープンソースソフトウェアは、ソリューションをすばやく開発する機会を提供します。 オープン ソース ソフトウェアを選択する場合は、各オープン ソース コンポーネントのコミュニティのアクティビティ レベルを考慮してください。 アクティブなコミュニティは、ソフトウェアがサポートされ、問題が検出され、対処されることを保証します。 あいまいで非アクティブなオープンソース ソフトウェア プロジェクトはサポートされていない可能性があり、問題は検出されない可能性があります。
ハードウェアを安全に展開する: IoT デプロイでは、パブリック スペースや教師なしロケールなど、セキュリティで保護されていない場所にハードウェアを展開することが必要になる場合があります。 このような状況では、ハードウェアの展開を可能な限り改ざん防止し、物理的な攻撃フットプリントを最小限に抑えるために必要な機能のみを有効にします。
ハードウェア セキュリティ モジュール (HSM) に資格情報を格納する: HSM を使用して、秘密キーや証明書などのデバイス シークレットを安全に格納し、抽出や改ざんから保護します。 詳細については、IoT Hub X.509 認証、DPS HSM ガイダンス、および IoT Edge セキュリティ マネージャーを参照してください。
デバイス キーと証明書を定期的にローテーションする: 不正アクセスのリスクを最小限に抑えるために、特に侵害または有効期限が切れた後に資格情報を定期的にローテーションします。 詳細については、「 DPS で証明書をロールする方法」および 「IoT Central X.509 証明書管理」を参照してください。
更新プログラムとパッチ: 最新のセキュリティ パッチと更新プログラムを使用して、すべてのランタイム、SDK、OS コンポーネントを最新の状態に保ちます。 詳細については、IoT Edge更新ガイダンスを参照してください。
悪意のあるアクティビティから保護する: オペレーティング システムで許可されている場合は、各デバイス オペレーティング システムに最新のウイルス対策およびマルウェア対策機能をインストールします。
頻繁に監査する: セキュリティ インシデントに対応できるように、セキュリティの問題について IoT インフラストラクチャを監査します。 ほとんどのオペレーティング システムでは、組み込みのイベント ログが提供されます。 ログを頻繁に確認して、セキュリティ違反を確認します。 デバイスは、監査情報を個別のデータ ストリームとしてクラウド サービスに送信し、そこで分析できます。
デバイス製造元のセキュリティと展開のベスト プラクティスに従います。デバイスの製造元がセキュリティと展開のガイダンスを提供する場合は、この記事の一般的なガイダンスと共に、そのガイダンスに従ってください。
フィールド ゲートウェイを使用して、レガシ デバイスまたは制約付きデバイスのセキュリティ サービスを提供します。レガシ デバイスと制約付きデバイスでは、データの暗号化、インターネットとの接続、高度な監査を提供する機能が不足している可能性があります。 このような場合、最新のセキュリティで保護されたフィールド ゲートウェイは、レガシ デバイスからのデータを集計し、インターネット経由でこれらのデバイスを接続するために必要なセキュリティを提供できます。
IoT Edgeデバイスはゲートウェイとして使用できセキュリティで保護された認証、暗号化されたセッションのネゴシエーション、クラウドからのコマンドの受信、およびその他の多くのセキュリティ機能を提供します。
Azure Sphereは、信頼された接続用に設計されていない既存のレガシ システムなど、他のデバイスをセキュリティで保護するためのガーディアン モジュールとして機能できます。
保存データの暗号化: デバイスが紛失または盗難にあった場合にデータを保護するために、デバイスとエッジ ストレージに対して、Windowsに BitLocker などの OS レベルの暗号化を使用します。 詳細については、IoT Edge security を参照してください。
接続のセキュリティ
このセクションでは、IoT デバイスとクラウド サービス間の接続をセキュリティで保護する方法について説明します。 接続のセキュリティは、送信されるデータの整合性と機密性を確保するために重要です。
X.509 証明書を使用して、IoT Hubまたは IoT Central に対してデバイスを認証します: IoT Hubと IoT Central では、デバイス認証用の X509 証明書がサポートされます。 対称キーよりも高いセキュリティを提供するため、運用環境では X509 ベースの認証を使用します。 詳細については、「デバイスを IoT Hubおよび IoT Central での Device 認証の概念を参照してください。
共有対称キーを使用しない: 対称キーを使用する場合は、デバイス間で対称キーを共有しないでください。 キーが漏洩した場合に広範囲にわたる侵害を防ぐために、各デバイスには一意の資格情報が必要です。 詳細については、 デバイスの製造元のセキュリティ プラクティスに関するページを参照してください。
トランスポート層セキュリティ (TLS) 1.2 を使用してデバイスからの接続をセキュリティで保護します: IoT Hubと IoT Central では、TLS を使用して IoT デバイスとサービスからの接続をセキュリティで保護します。 現在、TLS プロトコルの 3 つのバージョン (1.0、1.1、1.2) がサポートされています。 TLS 1.0 と 1.1 はレガシと見なされます。 詳細については、IoT HubTransport Layer Security (TLS) のサポートと>、Azure IoT Hub Device Provisioning Service (DPS) での TLS のサポートに関するページを参照してください。
強力な暗号スイートを使用し、ルート CA 証明書を最新の状態に保つ: セキュリティで保護された接続を維持するために、暗号スイートと信頼されたルート証明書を定期的に更新します。 詳細については、IoT Hub TLS のサポートを参照してください。
デバイス上の TLS ルート証明書を更新する方法があることを確認します。TLS ルート証明書は長い間持続しますが、有効期限が切れたり失効したりする可能性があります。 デバイスで証明書を更新できない場合、デバイスは後で IoT Hub、IoT Central、またはその他のクラウド サービスに接続できない可能性があります。 詳細については、「 X.509 デバイス証明書をロールする方法」を参照してください。
Azure Private Link を使用して操作する: Azure Private Linkを使用すると、デバイスを仮想ネットワーク上のプライベート エンドポイントに接続でき、IoT ハブのパブリック デバイス接続エンドポイントへのアクセスをブロックできます。 詳細については、Azure Private Link を使用したIoT Hubへの Ingress 接続とプライベート エンドポイントを使用した IoT Central のネットワーク セキュリティに関するページを参照してください。
ネットワーク アクセスを制限する: IP フィルターを使用して、信頼できるソースとネットワークへのアクセスを制限します。 詳細については、「IoT Hub IP フィルタリング、IoT Central プライベート エンドポイント、および DPS IP フィルタリングを参照してください。
必要でない場合はパブリック ネットワーク アクセスを無効にする: 可能な場合はパブリック エンドポイントを無効にして、パブリック インターネットへの公開を防止します。 詳細については、「IoT Hubパブリック ネットワーク アクセスおよび DPS パブリック ネットワーク アクセス」を参照してください。
セキュリティで保護されたネットワーク セグメント内のエッジ デバイスとサービスを分離する: ネットワークのセグメント化とファイアウォールを使用して、IoT Edgeデバイスとサービスを他のネットワーク リソースから分離します。 詳細については、IoT Edge for Linux on Windows security を参照してください。
クラウド セキュリティ
このセクションでは、IoT デバイス データを処理して格納するサービスであるクラウド サービスをセキュリティで保護する方法について説明します。 クラウド サービスのセキュリティは、データの整合性と機密性を確保するために不可欠です。
セキュリティで保護されたソフトウェア開発手法に従う: セキュリティで保護されたソフトウェアの開発では、プロジェクトの開始時から実装、テスト、デプロイまで、セキュリティを考慮する必要があります。
Microsoft Security Development Lifecycle は、セキュリティで保護されたソフトウェアを構築するための段階的なアプローチを提供します。
オープンソースソフトウェアを慎重に選択する:オープンソースソフトウェアは、ソリューションをすばやく開発する機会を提供します。 オープンソース ソフトウェアを選択する場合は、各オープンソース コンポーネントのコミュニティのアクティビティ レベルを検討してください。 アクティブなコミュニティは、ソフトウェアがサポートされ、問題が検出され、対処されることを保証します。 あいまいで非アクティブなオープンソース ソフトウェア プロジェクトはサポートされておらず、問題が検出されない可能性があります。
細心の注意を払って統合する: 多くのソフトウェア セキュリティの欠陥がライブラリと API の境界に存在します。 現在のデプロイに必要ない機能も、API レイヤーを通じて利用できる場合があります。 全体的なセキュリティを確保するには、統合コンポーネントのすべてのインターフェイスでセキュリティ上の欠陥がないか確認します。
クラウド資格情報の保護: 攻撃者は、IoT デプロイの構成と運用に使用するクラウド認証資格情報を使用して、IoT システムにアクセスして侵害することができます。 パスワードを頻繁に変更して資格情報を保護し、パブリック マシンではこれらの資格情報を使用しないでください。
IoT Hub: サービスと管理 API のアクセスにMicrosoft Entra IDとAzure RBAC を使用して、きめ細かい ID ベースのアクセス制御を有効にします。 詳細については、「IoT Hub Entra ID 認証および DPS Entra ID 認証」を参照>。
必要がない場合は共有アクセス ポリシーを無効にする: 共有アクセス ポリシーとトークンを必要としない場合に無効にすることで、攻撃対象領域を減らします。 詳細については、IoT Hub共有アクセス ポリシーを参照してください。
IoT Central アプリケーションのアクセス制御を定義する: IoT Central アプリケーションに対して有効にするアクセスの種類を理解し、定義します。 詳細については、以下をご覧ください。
バックエンド サービスの既定のアクセス制御: 他のAzure サービスは、IoT Hub または IoT Central アプリケーションがデバイスから取り込むデータを使用できます。 デバイスから他のAzure サービスにメッセージをルーティングできます。 IoT Hubまたは IoT Central がこれらのサービスに接続するための適切なアクセス許可を理解して構成します。 詳細については、以下をご覧ください。
必要な最小限のアクセス許可のみを付与する: ユーザー、アプリ、デバイスにロールとアクセス許可を割り当てるときに、最小限の特権の原則を適用します。 詳細については、 ID 管理のベスト プラクティスに関するページを参照してください。
クラウドから IoT ソリューションを監視する: Azure Monitor または IoT Central アプリケーションの正常性を監視するために、IoT Hub メトリックを使用して、IoT ソリューションの全体的な正常性を監視します。
診断の設定: ソリューションのイベントをログに記録して操作を監視し、診断ログをAzure Monitorに送信します。 詳細については、 IoT ハブでの問題の監視と診断に関するページを参照してください。
関連コンテンツ