アプリケーション プラットフォーム

Azure Sphere デバイスで実行されるアプリケーションは、サンドボックス コンテナーで動作します。 この環境は、ソフトウェアとデータのセキュリティを維持し、サービスの中断を防ぐために設計されています。

この図は、アプリケーション プラットフォームのソフトウェア要素を示しています。 Microsoft が提供する要素は灰色で、製造元が提供する要素は白です。

アプリケーション プラットフォーム

Azure Sphere アプリケーション プラットフォーム

アプリケーション プラットフォームでは、Normal World と Secure World の 2 つの運用環境がサポートされています。 Azure Sphere アプリケーションは、Normal World ユーザー モードのアプリケーション コンテナーで実行され、Azure Sphere ライブラリと一連の OS サービスにアクセスできます。 Microsoft が提供するデバイス ドライバーを含む基になるカスタム Linux カーネルは、標準のワールド スーパーバイザ モードで実行され、セキュリティ モニターは Secure World で実行されます。 スーパーバイザー モードまたは Secure World で実行できるのは、Microsoft が提供するコードのみです。

アプリケーションは、POSIX 環境のサブセットをサポートするコンテナーで実行されます。 システム関数には、Azure Sphere ライブラリとランタイム サービスを介してのみアクセスできます。POSIX システム関数の完全なセットは使用できません。

ハードウェア レベル (図に示されていません) では、セキュリティ サブシステムは、ハードウェア ベースのセキュリティで保護された信頼ルートを提供します。 デバイスの起動時に、セキュリティ サブシステムはハードウェアの全体的なセキュリティを検証し、ファームウェアが正しく署名されていることを検証した後にのみ、他のコンポーネントを起動します。 同様に、ファームウェアは、読み込む前にソフトウェアの次のレイヤーのセキュリティを検証し、その上のレイヤーを検証します。

アプリケーションのセキュリティ

Azure Sphere アプリケーション プラットフォームは、デバイス、アプリケーション、およびそのデータのセキュリティを確保するように設計されています。 アプリケーション セキュリティ機能には、次のものが含まれます。

  • 外部リソースへの制限付きアクセス
  • アプリケーション機能
  • 署名要件
  • デバイス機能

リソースへのアクセス

外部ソフトウェアからの悪意のある干渉を防ぐために、Azure Sphere アプリケーションは、Microsoft が提供するライブラリとランタイム サービスにのみアクセスできます。 ライブラリは、プラットフォームがセキュリティで保護され、簡単に更新できるように制限されています。 他の制約の中でも、ダイレクト ファイル I/O、プロセス間通信 (IPC)、またはシェル アクセスはサポートされていません。

アプリケーション機能

アプリケーション機能 は、アプリケーションに必要なリソースです。 アプリケーション機能には、アプリケーションで使用される GPIO および UART 周辺機器、接続先のインターネット ホスト、Wi-Fi 構成を変更するアクセス許可が含まれます。 すべてのアプリケーションには、これらのリソースを識別する アプリケーション マニフェストが必要です。

署名要件

Azure Sphere デバイスにデプロイされたすべてのイメージ パッケージに署名する必要があります。 Azure Sphere SDK と [az sphere image-package](../reference/az sphere-image-package.md) コマンドは、SDK 署名キーを使用してテストするためのイメージ パッケージに署名します。 Azure Sphere デバイスは、 appDevelopmentデバイス機能 も存在する場合にのみ、このキーを信頼します。

Azure Sphere Security Service の運用環境では、クラウドにアップロードするときにイメージ パッケージに署名します。 運用環境で署名されたイメージ パッケージは、サイドロードまたはクラウドから読み込むことができます。

デバイス機能

デバイス機能を使用すると、ユーザーはデバイス固有のアクティビティを実行できます。 デバイス機能は Azure Sphere Security Service によって付与され、Azure Sphere チップのフラッシュ メモリに格納されます。 既定では、Azure Sphere チップにはデバイス機能がありません。

appDevelopment デバイス機能は、デバイスが信頼する署名の種類を変更します。 既定では、Azure Sphere デバイスは運用環境で署名されたイメージ パッケージを信頼しますが、SDK 署名付きイメージ パッケージは信頼しません。 その結果、SDK 署名されたイメージ パッケージを、この機能を持たない Azure Sphere デバイスにサイドロードすることはできません。 ただし、appDevelopment 機能が存在する場合、デバイスは SDK 署名付きイメージ パッケージを信頼します。 さらに、ユーザーはデバイスからアプリケーションを起動、停止、デバッグ、または削除できます。 要約すると、次の作業を行う前に、アプリケーション開発機能がデバイスに存在している必要があります。

  • Visual Studio または azsphere image-package コマンドによってビルドされたイメージ パッケージをサイドロードします。
  • イメージ パッケージの署名方法に関係なく、Azure Sphere デバイスからイメージ パッケージを開始、停止、デバッグ、または削除します。

az sphere device enable-development コマンドは、appDevelopment 機能を作成して適用し、デバイスがクラウド アプリケーションの更新プログラムを受信できないようにします。