適用対象: IoT Edge 1.5
重要
IoT Edge 1.5 LTS は、サポートされているリリースです。 IoT Edge 1.4 LTS は、2024 年 11 月 12 日をもってサポートが終了しています。 以前のリリースの場合は、「IoT Edge を更新する」を参照してください。
Windows 上の Azure IoT Edge for Linux では、Windows クライアントまたはサーバー ホストのすべてのセキュリティ機能が使用され、すべての追加コンポーネントが同じセキュリティ原則に従っていることを確認します。 この記事では、既定で有効になっているさまざまなセキュリティ原則と、有効にできるオプションの原則について説明します。
仮想マシンのセキュリティ
IoT Edge for Linux (EFLOW) のキュレーションされた仮想マシンは、Microsoft CBL-Mariner に基づいています。 CBL-Mariner は、Microsoft のクラウド インフラストラクチャ、エッジ製品、サービス用の内部 Linux ディストリビューションです。 CBL-Mariner は、これらのデバイスとサービスに一貫したプラットフォームを提供し、Microsoft が Linux 更新プログラムを最新の状態に保つのに役立ちます。 詳細については、CBL-Mariner のセキュリティに関する記事を参照してください。
EFLOW 仮想マシンは、4 ポイントの包括的なセキュリティ プラットフォームを使用します。
- サービス更新プログラム
- 読み取り専用ルート ファイルシステム
- ファイアウォールのロックダウン
- DM-Verity
サービス更新プログラム
セキュリティの脆弱性が発生した場合、CBL-Mariner は EFLOW の毎月の更新プログラムを通じて最新のセキュリティ パッチと修正プログラムを提供します。 仮想マシンにはパッケージ マネージャーがないため、RPM パッケージを手動でダウンロードまたはインストールすることはできません。 EFLOW は、A/B 更新メカニズムを使用して、仮想マシンに対するすべての更新プログラムをインストールします。 EFLOW の更新プログラムの詳細については、「IoT Edge for Linux on Windows の更新プログラム」を参照してください。
読み取り専用ルート ファイルシステム
EFLOW 仮想マシンには、 rootfs と データという 2 つの主要なパーティションがあります。 rootFS-A または rootFS-B パーティションは交換可能であり、1 つは /
で読み取り専用ファイルシステムとしてマウントされるため、このパーティション内のファイルを変更することはできません。
の下にマウントされた/var
パーティションは読み取り可能で書き込み可能であるため、その内容を変更できます。 更新プロセスでは、このパーティションに格納されているデータは変更されないため、更新間で変更されることはありません。
特定のユース ケースに対して /etc
、 /home
、 /root
、および /var
への書き込みアクセスが必要になる場合があるため、EFLOW は、書き込みアクセスを提供するために、 /var/.eflow/overlays
のデータ パーティションにこれらのディレクトリをオーバーレイします。 このセットアップでは、これらのディレクトリに書き込みます。 オーバーレイの詳細については、overlayfs に関する記事を参照してください。
パーティション | [サイズ] | 説明 |
---|---|---|
BootEFIA | 8 MB | 将来の GRUBless ブート用のファームウェア パーティション A |
BootA | 192 MB | A パーティションのブートローダーが含まれています |
RootFS A | 4 GB | ルート ファイルシステムを保持する 2 つのアクティブまたはパッシブ パーティションの 1 つです |
BootEFIB | 8 MB | 将来の GRUBless ブート用のファームウェア パーティション B |
BootB | 192 MB | B パーティションのブートローダーが含まれています |
RootFS B | 4 GB | ルート ファイルシステムを保持する 2 つのアクティブまたはパッシブ パーティションの 1 つです |
ログ | 1 GB または 6 GB | /logs 以下にマウントされた特定のパーティションをログに記録します |
データ | 2 GB から 2 TB | 更新プログラムをまたいで永続的なデータを格納するためのステートフル パーティション。 展開構成に従って展開可能。 |
注
パーティション レイアウトは論理ディスク サイズを表し、仮想マシンがホスト OS ディスクで使用する物理領域を示すわけではありません。
ファイアウォール
既定では、EFLOW 仮想マシンはファイアウォール構成に iptables ユーティリティを使用します。 Iptables は 、Linux カーネル内の IP パケット フィルター 規則のテーブルを設定、維持、および検査します。 既定の実装では、ポート 22 (SSH サービス) での受信トラフィックが許可され、他のトラフィックがブロックされます。 次の手順で iptables の構成を確認します。
管理者特権の PowerShell セッションを開きます
EFLOW 仮想マシンに接続します
Connect-EflowVm
すべての iptables 規則を一覧表示します
sudo iptables -L
検証済みブート
EFLOW 仮想マシンは、ブロック デバイスの透過的な整合性チェックを提供する device-mapper-verity (dm-verity) カーネル機能を使った検証済みブートをサポートしています。 dm-verity を使うと、ルート特権を保持してデバイスを危険にさらす可能性のある永続的なルートキットを防ぐのに役立ちます。 この機能により、仮想マシンの基本ソフトウェア イメージは同じであり、変更されません。 仮想マシンは 、dm-verity 機能を使用して、特定のブロック デバイス、ファイル システムの基になるストレージ レイヤーを確認し、予想される構成と一致するかどうかを確認します。
既定では、この機能は仮想マシンでは無効になっていますが、オンまたはオフにすることができます。 詳細については、「dm-verity」を参照してください。
トラステッド プラットフォーム モジュール (TPM)
トラステッド プラットフォーム モジュール (TPM) テクノロジは、ハードウェア ベースのセキュリティ関連機能を提供するために設計されています。 TPM チップは、暗号化操作を実行するように設計されたセキュアな暗号プロセッサです。 このチップには、改ざんに強い複数の物理セキュリティ メカニズムが搭載されており、悪意のあるソフトウェアが TPM のセキュリティ機能を破ることはできません。
EFLOW 仮想マシンは vTPM をサポートしていません。 ただし、TPM パススルー機能を有効または無効にできます。これにより、EFLOW 仮想マシンは Windows ホスト OS TPM を使用できます。 これにより、次の 2 つの主なシナリオを実行できます。
- Device Provision Service (DPS) を使用した IoT Edge デバイス プロビジョニングに TPM テクノロジを使用します。 詳細については、「TPM を使用して IoT Edge for Linux on Windows デバイスを大規模に作成およびプロビジョニングする」を参照してください。
- TPM に格納されている暗号化キーへの読み取り専用アクセス。 詳細については、TPM パススルーを有効にする Set-EflowVmFeature に関する記事を参照してください。
ホストと仮想マシンの通信をセキュリティで保護する
EFLOW を使用すると、PowerShell モジュールを使用して仮想マシンと対話できます。 詳細については、「IoT Edge for Linux on Windows 用の PowerShell 関数」を参照してください。 このモジュールを実行するには、管理者特権のセッションが必要であり、Microsoft Corporation 証明書で署名されています。
Windows ホスト オペレーティング システムと PowerShell コマンドレットで必要な EFLOW 仮想マシン間のすべての通信では、SSH チャネルが使用されます。 既定では、仮想マシンの SSH サービスでは、ユーザー名とパスワードを使用した認証は行われず、証明書の認証のみが許可されます。 証明書は EFLOW デプロイ プロセス中に作成され、EFLOW インストールごとに一意です。 SSH ブルート フォース攻撃を防ぐために、仮想マシンは SSH サービスへの 1 分あたり 3 つ以上の接続を試行すると、IP アドレスをブロックします。
EFLOW 継続的リリース (CR) バージョンでは、SSH 接続のトランスポート チャネルが変更されます。 もともと、SSH サービスは TCP ポート 22 で実行され、同じネットワーク上のすべての外部デバイスが TCP ソケットを使用してアクセスできます。 セキュリティを確保するために、EFLOW CR は通常の TCP ソケットではなく、Hyper-V ソケット経由で SSH サービスを実行します。 Hyper-V ソケット経由のすべての通信は、ネットワークを使用せずに、Windows ホスト OS と EFLOW 仮想マシンの間で維持されます。 このセットアップでは、接続を Windows ホスト OS のみに制限することで、SSH サービスへのアクセスが制限されます。 詳細については、Hyper-V ソケットに関する記事を参照してください。
次のステップ
詳細については、Windows IoT セキュリティ プレミスを参照してください