次の方法で共有


IoT ソリューションのセキュリティに関するベスト プラクティス

この概要では、一般的な Azure IoT ソリューションのセキュリティ保護に関する主な概念について説明します。 各セクションには、追加の詳細とガイダンスを提供するコンテンツへのリンクが含まれています。

次の図は、一般的なエッジ ベースの IoT ソリューションでのコンポーネントの概要を示したものです。 この記事では、エッジベースの IoT ソリューションのセキュリティについて説明します。

セキュリティを強調する IoT エッジベースのソリューション アーキテクチャの概要を示す図。

エッジベースの IoT ソリューションのセキュリティは、次の 3 つの領域に分割できます。

  • 資産セキュリティ: 管理、監視、データ収集を行う物理的または仮想的な価値のある項目を保護します。

  • 接続のセキュリティ: 資産、エッジ、クラウド サービス間で転送中のすべてのデータが機密情報として扱われ、改ざんを防ぎます。

  • エッジ セキュリティ: データの移動中にデータをセキュリティで保護し、エッジに格納します。

  • "クラウド セキュリティ": データが移動し、クラウドに保存される間、データを保護します。

通常、エッジ ベースのソリューションでは、Azure のセキュリティ機能を使用してエンド ツー エンドの操作をセキュリティで保護する必要があります。 Azure IoT Operations には、シークレット管理証明書管理Azure Arc 対応 Kubernetes クラスターでのセキュリティ設定などのセキュリティ機能が組み込まれています。 Kubernetes クラスターが Azure に接続されると、Azure への送信接続が開始され、業界標準の SSL を使用して転送中のデータをセキュリティで保護し、次のような他のいくつかのセキュリティ機能が有効になります。

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 は、エッジベースのソリューションを保護するための防御の最前線である必要があります。 詳細については、以下をご覧ください。

資産のセキュリティ

  • シークレットの管理: 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 Operations 内のすべての通信は TLS を使用して暗号化されます。 エッジベースのソリューションが攻撃者に対して不注意で公開されるのを最小限に抑える既定のセキュリティで保護されたエクスペリエンスを提供するために、Azure IoT Operations は TLS サーバー証明書用の既定のルート CA と発行者を使用してデプロイされます。 運用環境へのデプロイの場合、独自の CA 発行者とエンタープライズ PKI ソリューションを使用することをお勧めします。

  • エンタープライズ ファイアウォールまたはプロキシを使用して送信トラフィックを管理することを検討する: エンタープライズ ファイアウォールまたはプロキシを使用する場合は、Azure IoT Operations エンドポイントを許可リストに追加します。

  • メッセージ ブローカーの内部トラフィックを暗号化する: エッジ インフラストラクチャ内の内部通信のセキュリティを確保することは、データの整合性と機密性を維持するために重要です。 MQTT ブローカーのフロントエンド ポッドとバックエンド ポッドの間で内部トラフィックと転送中のデータを暗号化するように MQTT ブローカーを構成する必要があります。 詳細については、「ブローカーの内部トラフィックと内部証明書の暗号化を構成する」を参照してください。

  • MQTT ブローカーのリスナーの自動証明書管理を使用して TLS を構成する: Azure IoT Operations は、MQTT ブローカーのリスナーに対して自動証明書管理を提供します。 これにより、証明書を手動で管理する管理オーバーヘッドが軽減され、タイムリーな更新が保証され、セキュリティ ポリシーへのコンプライアンスを維持するのに役立ちます。 詳細については、「BrokerListener を使用して MQTT ブローカー通信をセキュリティで保護する」を参照してください。

  • OPC UA サーバーへのセキュリティで保護された接続を設定する: OPC UA サーバーに接続するときは、セッションを安全に確立するために信頼する OPC UA サーバーを決定する必要があります。 詳細については、「OPC UA 用コネクタの OPC UA 証明書インフラストラクチャを構成する」を参照してください。

エッジ セキュリティ

  • エッジ ランタイム環境を最新の状態に保つ: クラスターと Azure IoT Operations のデプロイを最新の修正プログラムとマイナー リリースを使用して最新の状態に保ち、使用可能なすべてのセキュリティとバグ修正を取得できるようにします。 運用環境へのデプロイの場合は、Azure Arc の自動アップグレードをオフにして、クラスターに新しい更新プログラムが適用されるタイミングを全面的に制御します。 代わりに、必要に応じてエージェントを手動でアップグレードします。

  • Docker イメージと helm イメージの整合性を確認する: イメージをクラスターにデプロイする前に、イメージが Microsoft によって署名されていることを確認します。 詳細については、「イメージの署名を検証する」を参照してください。

  • MQTT ブローカーでの認証には、常に X.509 証明書または Kubernetes サービス アカウント トークンを使用する: MQTT ブローカーは、クライアントに対して複数の認証方法をサポートしています。 リスナー ポートごとに、BrokerAuthentication リソースに関する固有の認証設定を構成できます。 詳細については、「MQTT ブローカー認証を構成する」を参照してください。

  • MQTT ブローカーでトピック資産に必要な最小限の特権を提供する: 認可ポリシーは、クライアントがブローカーに対して実行できるアクション (トピックへの接続、公開、サブスクライブなど) を決定します。 BrokerAuthorization リソースで 1 つまたは複数の認可ポリシーを使うように MQTT ブローカーを構成します。 詳細については、「MQTT ブローカー認可を構成する」を参照してください。

  • Azure IoT Layered Network Management (プレビュー)を使用して分離ネットワーク環境を構成する: Azure IoT Layered Network Management (プレビュー) は、分離されたネットワーク環境での Azure とクラスター間の接続を容易にするコンポーネントです。 産業シナリオでは、分離ネットワークは ISA-95/Purdue Network アーキテクチャに準拠します。 詳細については、「Azure IoT Layered Network Management (プレビュー) とは」を参照してください。

クラウド セキュリティ

  • クラウド接続にユーザー割り当てマネージド ID を使用する: 常にマネージド ID 認証を使用します。 可能な場合は、データ フロー エンドポイントでユーザー割り当てマネージド ID を使用し、柔軟性と監査可能性を確保します。

  • 可観測性リソースをデプロイし、ログを設定する: 監視機能により、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 を使用して、特定のスコープ内のユーザー、グループ、アプリケーションにアクセス許可を付与できます。 詳細については、「資産と資産エンドポイントへのアクセスをセキュリティで保護する」を参照してください。

次のステップ

IoT セキュリティの詳細については、次をご覧ください。