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 の両方で、この記事に含まれる推奨事項の一部を自動的に監視できます。 Defender for IoT と Defender for Containers は、エッジベースのソリューションを保護するための防御の最前線である必要があります。 詳細については、以下をご覧ください。
資産のセキュリティ
このセクションでは、産業機器、センサー、IoT ソリューションの一部であるその他のデバイスなど、資産をセキュリティで保護する方法について説明します。 資産のセキュリティは、生成および送信するデータの整合性と機密性を確保するために重要です。
Azure Key Vault とシークレット ストア拡張機能を使用する: Azure Key Vault を使用して、キー、パスワード、証明書、シークレットなどの資産の機密情報を格納および管理します。 Azure IoT Operations は、クラウドでの管理されたコンテナー ソリューションとして Azure Key Vault を使い、Kubernetes 用 Azure Key Vault Secret Store 拡張機能を使ってクラウドからシークレットを同期して、それらを Kubernetes シークレットとしてエッジに格納します。 詳細については、 Azure IoT Operations デプロイのシークレットの管理に関するページを参照してください。
セキュリティで保護された証明書管理を設定する: 資産とエッジ ランタイム環境の間のセキュリティで保護された通信を確保するには、証明書の管理が重要です。 Azure IoT Operations には、証明書の発行、更新、取り消しなど、証明書を管理するためのツールが用意されています。 詳細については、「 Azure IoT Operations 内部通信の証明書管理」を参照してください。
改ざん防止ハードウェアの選択: デバイス カバーの開口部やデバイスの一部の取り外しなど、物理的な改ざんを検出する組み込みのメカニズムを備えた資産ハードウェアを選択します。 これらの改ざんシグナルは、クラウドにアップロードされたデータ ストリームの一部にすることができ、オペレーターはこれらのイベントにアラートを送信します。
資産ファームウェアのセキュリティで保護された更新プログラムを有効にする: 資産のオンエア更新を有効にするサービスを使用します。 更新プログラムのセキュリティで保護されたパスとファームウェア バージョンの暗号化保証を使用して資産を構築し、更新中および更新後に資産をセキュリティで保護します。
資産ハードウェアを安全に展開する: 資産ハードウェアの展開は、特にパブリックスペースや教師なしロケールなどの安全でない場所で、可能な限り改ざんを防止します。 USB ポートを安全にカバーする必要がない場合など、物理的な攻撃フットプリントを最小限に抑えるために必要な機能のみを有効にします。
デバイス製造元のセキュリティと展開のベスト プラクティスに従います。デバイスの製造元がセキュリティと展開のガイダンスを提供する場合は、この記事の一般的なガイダンスと共に、そのガイダンスに従ってください。
接続のセキュリティ
このセクションでは、資産、エッジ ランタイム環境、クラウド サービス間の接続をセキュリティで保護する方法について説明します。 接続のセキュリティは、送信されるデータの整合性と機密性を確保するために重要です。
トランスポート層セキュリティ (TLS) を使用して資産からの接続をセキュリティで保護する: Azure IoT 操作内のすべての通信は 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 クラスターとエッジ デバイスを他のネットワーク リソースから分離します。 エンタープライズ ファイアウォールまたはプロキシを使用している場合は、必要なエンドポイントを許可リストに追加します。 詳細については、「 運用展開のガイドライン - ネットワーク」を参照してください。
エッジ セキュリティ
このセクションでは、エッジ プラットフォームで実行されるソフトウェアであるエッジ ランタイム環境をセキュリティで保護する方法について説明します。 このソフトウェアは、資産データを処理し、資産とクラウド サービス間の通信を管理します。 エッジ ランタイム環境のセキュリティは、処理および送信されるデータの整合性と機密性を確保するために重要です。
エッジ ランタイム環境を up-to-date に保つ: クラスターと Azure IoT Operations のデプロイを最新のパッチとマイナー リリースで up-to日付に保ち、使用可能なすべてのセキュリティとバグの修正プログラムを取得します。 運用環境のデプロイでは、 Azure Arc の自動アップグレードをオフに して、クラスターに新しい更新プログラムが適用されるタイミングを完全に制御します。 代わりに、必要に応じてエージェントを手動でアップグレードします。
コンテナーと Helm イメージの整合性を確認する: クラスターにイメージをデプロイする前に、イメージが Microsoft によって署名されていることを確認します。 詳細については、「 イメージ署名の検証」を参照してください。
MQTT ブローカーでの認証には、常に X.509 証明書または Kubernetes サービス アカウント トークンを使用します。MQTT ブローカーは、クライアントに対して複数の認証方法をサポートします。 リスナー ポートごとに、BrokerAuthentication リソースに関する固有の認証設定を構成できます。 詳細については、「 MQTT ブローカー認証の構成」を参照してください。
MQTT ブローカーのトピック資産に必要な最小限の特権を提供する: 承認ポリシーは、クライアントがブローカーに対して実行できるアクション (トピックの接続、発行、サブスクライブなど) を決定します。 BrokerAuthorization リソースで 1 つまたは複数の認可ポリシーを使うように MQTT ブローカーを構成します。 詳細については、 MQTT ブローカー承認の構成に関するページを参照してください。
クラウド セキュリティ
このセクションでは、資産データを処理して格納するサービスであるクラウド サービスをセキュリティで保護する方法について説明します。 クラウド サービスのセキュリティは、データの整合性と機密性を確保するために不可欠です。
クラウド接続にユーザー割り当てマネージド ID を使用する: 常にマネージド ID 認証を使用します。 可能な場合は、データ フロー エンドポイントでユーザー割り当てマネージド ID を使用し、柔軟性と監査可能性を確保します。 詳細については、「 Azure IoT Operations でセキュリティで保護された設定を有効にする」を参照してください。
可観測性リソースをデプロイし、ログを設定する: Observability を使用すると、Azure IoT Operations 構成のすべてのレイヤーを可視化できます。 これは、問題の実際の動作に関する分析情報を提供し、サイト信頼性エンジニアリングの有効性を高めます。 Azure IoT Operations を使用すると、Azure でホストされているカスタム キュレーションされた Grafana ダッシュボードを通じて、可観測性が提供されます。 これらのダッシュボードは、Prometheus 用の Azure Monitor マネージド サービスと Container Insights を利用しています。 Azure IoT Operations をデプロイする前に、クラスターに可観測性リソースをデプロイします。
Azure RBAC を使用して資産および資産エンドポイントへのアクセスをセキュリティで保護する Azure IoT Operations の資産および資産エンドポイントは、Kubernetes クラスターと Azure portal の両方で表現されます。 Azure RBAC を使用して、これらのリソースへのアクセスをセキュリティで保護します。 Azure RBAC は、Azure リソースへのアクセスを管理できる承認システムです。 Azure RBAC を使用して、特定のスコープでユーザー、グループ、アプリケーションにアクセス許可を付与します。 詳細については、「 資産と資産エンドポイントへのアクセスをセキュリティで保護する」を参照してください。