IoT Edge for Linux on Windows セキュリティ
適用対象: IoT Edge 1.4
重要
サポートされているリリースは、IoT Edge 1.5 LTS と IoT Edge 1.4 です。 IoT Edge 1.4 LTS は、2024 年 11 月 12 日にサポートが終了します。 以前のリリースの場合は、「IoT Edge を更新する」を参照してください。
Azure IoT Edge for Linux on Windows は、Windows クライアントおよびサーバー ホスト上で実行することからすべてのセキュリティ オファリングの恩恵を受けており、すべての追加コンポーネントが同じセキュリティの前提を確実に維持できます。 この記事では、既定で有効であるまざまなセキュリティ プレミスと、ユーザーが有効にすることができる省略可能なプレミスの一部について説明します。
仮想マシンのセキュリティ
IoT Edge for Linux (EFLOW) のキュレーションされた仮想マシンは、Microsoft CBL-Mariner に基づいています。 CBL-Mariner は、Microsoft のクラウド インフラストラクチャと、エッジ製品およびサービス向けの内部 Linux ディストリビューションです。 CBL-Mariner は、これらのデバイスとサービスに一貫したプラットフォームを提供するように設計されており、Linux 更新プログラムを最新の状態に保つ Microsoft の機能を拡張できます。 詳細については、CBL-Mariner のセキュリティに関する記事を参照してください。
EFLOW 仮想マシンは、4 ポイントの包括的なセキュリティ プラットフォーム上に構築されています。
- サービス更新プログラム
- 読み取り専用ルート ファイルシステム
- ファイアウォールのロックダウン
- DM-Verity
サービス更新プログラム
セキュリティの脆弱性が発生した場合、ELOW のマンスリー更新プログラムを介して提供されるように、CBL-Mariner は最新のセキュリティ パッチと修正プログラムをリリースします。 仮想マシンにはパッケージ マネージャーがないので、RPM パッケージを手動でダウンロードし、インストールすることはできません。 仮想マシンに対するすべての更新プログラムは、EFLOW の A/B 更新メカニズムを使ってインストールされます。 EFLOW の更新プログラムの詳細については、「IoT Edge for Linux on Windows の更新プログラム」を参照してください
読み取り専用ルート ファイルシステム
EFLOW 仮想マシンは、主に 2 つのパーティション (rootfs と data) で構成されています。 rootFS-A または rootFS-B パーティションは入れ替え可能であり、2 つのうちの 1 つは /
で読み取り専用ファイルシステムとしてマウントされます。つまり、このパーティション内に格納されたファイルに変更を加えることはできません。 一方、/var
以下にマウントされた data パーティションは読み取りと書き込みが可能であり、パーティション内のコンテンツを変更できます。 このパーティションに格納されたデータは更新プロセスで操作されないため、更新プログラム間で変更されることはありません。
特定のユース ケースで /etc
、/home
、/root
、/var
への書き込みアクセスが必要な場合があるので、これらのディレクトリへの書き込みアクセスは、特にディレクトリ /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 | 更新プログラムをまたいで永続的なデータを格納するためのステートフル パーティション。 デプロイ構成に応じて拡張可能 |
Note
パーティション レイアウトは論理ディスク サイズを表します。仮想マシンがホスト 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 つのシナリオが有効になります。
- デバイス プロビジョン サービス (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 の証明書を使って署名されています。
PowerShell コマンドレットに必要な Windows ホスト オペレーティング システムと EFLOW 仮想マシン間のすべての通信は、SSH チャネルを使って行われます。 既定では、仮想マシンの SSH サービスはユーザー名とパスワードによる認証を許可しておらず、証明書認証に限定されます。 証明書は EFLOW のデプロイ プロセス時に作成され、EFLOW のインストールごとに一意です。 さらに、SSH ブルート フォース攻撃を防ぐために、SSH サービスへの接続試行回数が 1 分間に 3 回を超えた場合、仮想マシンは IP アドレスをブロックします。
EFLOW 継続的リリース (CR) バージョンでは、SSH 接続を確立するために使うトランスポート チャネルに変更を導入しました。 元の SSH サービスは TCP ポート 22 で動作します。同じネットワーク内のすべての外部デバイスは、その特定のポートへの TCP ソケットを使ってアクセスできます。 セキュリティ上の理由から、EFLOW CR は SSH サービスを通常の TCP ソケットではなく、Hyper-V ソケット上で実行します。 Hyper-V ソケット経由のすべての通信は、ネットワークを使わずに、Windows ホスト OS と EFLOW 仮想マシン間で実行されます。 そのため、SSH サービスのアクセスは制限され、Windows ホスト OS のみに接続が制限されます。 詳細については、Hyper-V ソケットに関する記事を参照してください。
次のステップ
詳細については、Windows IoT セキュリティ プレミスを参照してください