IoT ソリューションのセキュリティに関するベスト プラクティス
この概要では、一般的な Azure IoT ソリューションのセキュリティ保護に関する主な概念について説明します。 各セクションには、追加の詳細とガイダンスを提供するコンテンツへのリンクが含まれています。
一般的な IoT ソリューションのコンポーネントの概要を次の図に示します。 この記事では、IoT ソリューションのセキュリティについて説明します。
IoT ソリューションのセキュリティは、次の 3 つの領域に分割できます。
"デバイスのセキュリティ:" IoT デバイスが実際の環境に展開されている間、そのデバイスを保護します。
"接続のセキュリティ": IoT デバイスと IoT クラウド サービスの間で送信されるすべてのデータの機密性と改ざん防止を確保します。
"クラウド セキュリティ": データが移動し、クラウドに保存される間、データを保護します。
この記事のレコメンデーションを実装すると、共有責任モデルで説明されているセキュリティの義務を満たすのに役立ちます。
Microsoft Defender for IoT
Microsoft Defender for IoT では、この記事に含まれるレコメンデーションの一部を自動的に監視できます。 Microsoft Defender for IoT を、Azure のリソースを保護するための防御の最前線にする必要があります。 Microsoft Defender for IoT では、Azure リソースのセキュリティ状態を定期的に分析し、潜在的なセキュリティ脆弱性を特定します。 その後、それらに対処する方法の推奨事項を提供します。 詳細については、以下をご覧ください。
- セキュリティに関する推奨事項を使用してセキュリティ体制を強化する。
- 組織向けの Microsoft Defender for IoT とは。
- デバイス ビルダー向け Microsoft Defender for IoT とは。
デバイス セキュリティ
ハードウェアのスコープを最小要件に絞る: 操作に必要な最小限の機能を含むデバイス ハードウェアを選択します。それ以上の機能は含めません。 たとえば、USB ポートは、ソリューション内のデバイスの操作に必要な場合にのみ含めます。 デバイスに機能を追加すると、不要な攻撃ベクトルにさらされる可能性があります。
改ざん防止ハードウェアを選択する: デバイス カバーの開放、やデバイスの一部の取り外しなど、物理的な改ざんを検出するメカニズムが組み込まれたデバイス ハードウェアを選択します。 これらの改ざん信号は、クラウドにアップロードされるデータ ストリームに含めることができます。これにより、このようなイベントをオペレーターに警告できます。
セキュリティで保護されたハードウェアを選択する: 可能な場合は、トラステッド プラットフォーム モジュールに基づいた、セキュリティで保護された暗号化されたストレージや、ブート機能などのセキュリティ機能を含むデバイス ハードウェアを選択します。 これらの機能により、デバイスのセキュリティが強化され、IoT インフラストラクチャ全体の保護に役立ちます。
セキュリティで保護されたアップグレードを有効にする: デバイスのライフタイム中にファームウェアのアップグレードが発生することは避けられません。 アップグレードの間およびアップグレード後にデバイスをセキュリティで保護するために、アップグレード用のセキュリティで保護されたパスとファームウェア バージョンの暗号化保証を使用してデバイスを構築します。
セキュリティで保護されたソフトウェアの開発方法に従う: セキュリティで保護されたソフトウェアの開発には、プロジェクトの開始からその実装、テスト、およびデプロイに至るまで、セキュリティを初期段階から考慮する必要があります。 Microsoft セキュリティ開発ライフサイクルは、セキュリティで保護されたソフトウェアを構築するためのステップ バイ ステップ アプローチを提供します。
可能な場合はデバイス SDK を使用する: デバイス SDK は、堅牢で安全なデバイス アプリケーションの開発に役立つ暗号化や認証などのさまざまなセキュリティ機能を実装します。 詳しくは、「Azure IoT SDK」をご覧ください。
オープンソース ソフトウェアを慎重に選択する: オープンソース ソフトウェアは、ソリューションを簡単に開発する機会を提供します。 オープン ソース ソフトウェアを選択する際には、オープン ソース コンポーネントごとにコミュニティのアクティビティ レベルを考慮します。 アクティブなコミュニティでは、確実にソフトウェアがサポートされ、問題が検出されて対処がなされます。 不明瞭な非アクティブなオープン ソース ソフトウェア プロジェクトはサポートされず、問題が検出されない可能性が高くなります。
ハードウェアを安全にデプロイする: IoT の配置では、公共施設や監視されていないロケールなど、セキュリティで保護されていない場所にハードウェアを配置することが必要な場合があります。 このような状況では、ハードウェアのデプロイが可能な限り改ざん防止であることを確認します。 たとえば、ハードウェアに USB ポートがある場合は、安全にカバーされていることを確認します。
認証キーを安全に保管する: デプロイ中、各デバイスはデバイス ID、およびクラウド サービスによって生成される関連する認証キーを必要とします。 これらのキーは、デプロイ後にも物理的に安全に保管します。 悪意のあるデバイスは、侵害されたキーを使用して既存のデバイスを偽装できます。
システムを常に最新の状態に保つ: デバイスのオペレーティング システムとすべてのデバイス ドライバーが最新バージョンにアップグレードされることを確認します。 オペレーティング システムを最新の状態に保つことは、悪意のある攻撃からの保護を保証するのに役立ちます。
悪意のあるアクティビティから保護する: オペレーティング システムで許可される場合は、各デバイスのオペレーティング システムに最新のウイルス対策とマルウェア対策機能をインストールします。
頻繁に監査を行う: セキュリティ インシデントに対応するときには、セキュリティ関連の問題について IoT インフラストラクチャを監査することが重要です。 ほとんどのオペレーティング システムは、組み込みのイベント ログを提供します。これらを頻繁に監査して、セキュリティ違反が発生していないかどうかを確認する必要があります。 デバイスは、独立した製品利用統計情報ストリームとしてクラウド サービスに送信して分析可能な監査情報を送信できます。
デバイス製造元のセキュリティと展開のベスト プラクティスに従う: デバイスの製造元がセキュリティとデプロイのガイダンスを提供している場合は、この記事に記載されている一般的なガイダンスに加えて、そのガイダンスに従ってください。
フィールド ゲートウェイを使用して、レガシ デバイスまたは制約付きデバイスのセキュリティ サービスを提供する: レガシ デバイスと制約付きデバイスでは、データの暗号化、インターネットとの接続、高度な監査を提供する機能が不足している可能性があります。 このような場合は、セキュリティで保護された最新のフィールド ゲートウェイによってレガシ デバイスからデータを集計し、これらのデバイスをインターネット経由で接続するために必要なセキュリティを提供できます。 フィールド ゲートウェイは、セキュリティで保護された認証、暗号化されたセッションのネゴシエーション、クラウドからのコマンドの受信など、多数のセキュリティ機能を提供します。
接続のセキュリティ
X.509 証明書を使用して、IoT Hub または IoT Centralに対してデバイスを認証する: IoT Hub と IoT Central では、デバイスの認証方法として X509 証明書ベースの認証とセキュリティ トークンの両方がサポートされます。 可能であれば、運用環境では、セキュリティが強化される X509 ベースの認証を使用します。 詳細については、「デバイスを IoT Hub に認証」と「IoT Central のデバイス認証の概念」をご覧ください。
トランスポート層セキュリティ (TLS) 1.2 を使用してデバイスからの接続をセキュリティで保護する: IoT Hub と IoT Central では、TLS を使用して IoT デバイスとサービスからの接続をセキュリティで保護します。 現在、TLS プロトコルの 3 つのバージョン (1.0、1.1、1.2) がサポートされています。 TLS 1.0 と 1.1 はレガシと見なされます。 詳細については、「認証と権限承認」をご覧ください。
デバイスで TLS ルート証明書を更新する方法があることを確認する: TLS ルート証明書の有効期間は長いですが、それでも有効期限切れ、または取り消しの可能性があります。 デバイスで証明書を更新する方法がない場合、デバイスは IoT Hub、IoT Central、または他のクラウド サービスに後日接続できない可能性があります。
Azure Private Linkの使用を検討する: Azure Private Link を使うと、デバイスを仮想ネットワーク上のプライベート エンドポイントに接続して、IoT ハブのパブリック デバイス向けエンドポイントへのアクセスをブロックできます。 詳細については、「Azure Private Link を使用した IoT Hub へのイングレス接続」と、プライベート エンドポイントを使用する IoT Central のネットワーク セキュリティに関するページをご覧ください。
クラウド セキュリティ
セキュリティで保護されたソフトウェアの開発方法に従う: セキュリティで保護されたソフトウェアの開発には、プロジェクトの開始からその実装、テスト、およびデプロイに至るまで、セキュリティを初期段階から考慮する必要があります。 Microsoft セキュリティ開発ライフサイクルは、セキュリティで保護されたソフトウェアを構築するためのステップ バイ ステップ アプローチを提供します。
オープンソース ソフトウェアを慎重に選択する: オープンソース ソフトウェアは、ソリューションを簡単に開発する機会を提供します。 オープン ソース ソフトウェアを選択する際には、オープン ソース コンポーネントごとにコミュニティのアクティビティ レベルを考慮します。 アクティブなコミュニティでは、確実にソフトウェアがサポートされ、問題が検出されて対処がなされます。 不明瞭な非アクティブなオープン ソース ソフトウェア プロジェクトはサポートされず、問題が検出されない可能性が高くなります。
注意深く統合を行う: ソフトウェア セキュリティの欠陥の多くは、ライブラリと API の境界に存在します。 現在の配置には必要ない可能性がある機能でも、API レイヤーを介して利用できる場合があります。 全体のセキュリティを確保するために、統合するコンポーネントのすべてのインターフェイスにセキュリティ上の欠陥がないことを確認します。
クラウドの資格情報を保護する: 攻撃者は、IoT デプロイの構成と運用に使用するクラウド認証資格情報を使用して、IoT システムにアクセスして侵害できます。 パスワードを頻繁に変更し、パブリック マシンでこれらの資格情報の使用を控えることで、資格情報を保護します。
IoT ハブのアクセス制御を定義する: 必要な機能に基づいて、IoT Hub ソリューション内の各コンポーネントが必要とするアクセスの種類を理解し、定義します。 サービス API に IoT ハブに接続するためのアクセス許可を付与するには、Microsoft Entra ID と Shared Access Signatureの 2 つの方法があります。 可能であれば、運用環境では、セキュリティが強化される Microsoft Entra ID を使用します。
IoT Central アプリケーションのアクセス制御を定義する: IoT Central アプリケーションに対して有効にするアクセスの種類を理解し、定義します。 詳細については、以下をご覧ください。
バックエンド サービスのアクセス制御を定義する: 他の Azure サービスは、IoT Hub または IoT Central アプリケーションがデバイスから取り込むデータを使用できます。 デバイスから他の Azure サービスにメッセージをルーティングできます。 IoT Hub または IoT Central がこれらのサービスに接続するための適切なアクセス許可を理解して構成します。 詳細については、以下をご覧ください。
クラウドから IoT ソリューションを監視する: Azure Monitor の IoT Hub メトリックを使用して IoT ソリューションの全体的な正常性を監視するか、IoT Central アプリケーションの正常性を監視します。
診断の設定: ソリューションでイベントをログに記録し、診断ログを Azure Monitor に送信して、操作を監視します。 詳細については、「IoT ハブでの問題の監視と診断」をご覧ください。
次のステップ
IoT セキュリティの詳細については、次をご覧ください。