次の方法で共有


デバイスの機能と通信

デバイス機能は、サービス UART 通信のデバイス固有の OS ポリシーを決定します。 ホスト コンピューターと接続されているデバイス間のすべての通信は、サービス UART を介して行われます。 ホスト コンピューターは、接続されているデバイスと通信して、デバイスに対する操作を実行します。 製造元、ソフトウェア開発者、フィールド サービス技術者は、機能を使用して、デバイスが悪意のあるユーザーから保護されていることを確認しながら、必要な操作に対して Service-UART 通信のロックを解除します。

デバイスの製造元と OEM は、サービス UART 通信をロックダウンして、デバイスへの物理的なアクセス権を持つユーザーによる不正使用を防ぐことができます。 このような通信をロックダウンすることは、 デバイスのファイナライズの一部です。 ファイナライズ後、ユーザーはデバイスの ID を取得できますが、それ以上は取得できません。その他のすべての操作には、デバイス機能が必要です。 ファイナライズは、通常、製造元がデバイスを顧客サイトに出荷する前に、工場のフロアで実行されます。

デバイス機能ファイルには、1 つのデバイスに対してのみ 0 個以上の機能が含まれています。 機能ファイルは、それが意図されているデバイスではないデバイスに適用されている場合は機能しません。 デバイスには次の機能があります。それぞれの機能については、このトピックの後半で説明します。

メモ

デバイス機能は、アプリケーション機能とは関係ありません。 アプリケーション機能は、アプリケーションが実行時に必要とするリソースを指定します。 アプリケーション機能の詳細については、「 アプリケーション マニフェスト 」を参照してください。

デバイスの機能または製造状態を判断する方法

接続されたデバイスに格納されている機能構成を確認するには、 az sphere device capability show-attached コマンドを 使用します。 このコマンドは、機能ファイルを使用して構成された機能と、ボード上に既定で存在する一部の機能 (すべてではない) を表示します。

デバイスの機能は、デバイスの製造状態の影響を受ける可能性があります。 デバイスの製造状態を判断するには、 az sphere device manufacturing-state show コマンドを 使用します。 コマンドでデバイスが DeviceComplete の製造状態にあるか、 が返された Device access is forbidden場合、service-UART 通信はロックされており、コンピューターからデバイスと通信するにはデバイス機能が必要です。 デバイスが DeviceComplete の製造状態にある場合、製造操作は、デバイスが機能ファイルを介してロック解除されている場合にのみ許可されます。

メモ

顧客サイトにデバイスをインストールする場合は、インストール前にデバイスが DeviceComplete の製造状態に完了していることを確認する必要があります。 「 Azure Sphere デバイスのファイナライズ」を参照してください。

DeviceComplete の製造状態は、通常、開発キットには適していません。 製造エンジニアが開発する製造操作のテストを有効にするには、開発キットを 空白 の製造状態または Module1Complete の製造状態にする必要があります。

デバイスが機能を取得する方法

デバイスは、次の 3 つの方法のいずれかで機能を取得できます。

  • 既定で開かれます。 空白の製造状態または Module1Complete 製造状態のデバイスには、既定でいくつかの機能が開いています。 これは、デバイス機能ファイルを使用して機能のロックを解除するプロセスで必要とされるように、製造段階のデバイスをクラウドに接続したり、カタログに要求したりする必要がないようにするために行われます。 製造が進むにつれて、製造元は、 ファクトリ フロア のタスクで説明されているように、デバイスの製造状態を変更して、不要になった機能をロックダウンできます。

  • デバイスにサイドローディングされます。 デバイスには、ホスト コンピューターからデバイスにサイドロードされた機能ファイルがある場合があります。 az sphere device capability download コマンドを使用して、機能ファイルを取得します。 このサイドロードされた一連の機能は、新しい機能ファイル (機能のない空白のファイルである可能性があります) がサイドロードされるまで保持されます。 これは、アプリケーション開発中の通常の状況です。たとえば、 az sphere device enable-development コマンドが実行されている場合です。 アプリケーション開発は、開発者がデバッグなどの操作を実行し、サイドロードされたバージョンのアプリケーションを簡単に削除してデプロイできるロック解除状態のデバイスを持つことによって支援されます。

  • 各操作でデバイスに渡されます。 デバイスは、操作ごとにローカルで選択された機能を適用できます。 az sphere device capability apply コマンドは、ホスト コンピューターにローカルに格納されている機能ファイルを選択します。 このコマンドを実行すると、選択した機能が、後続のコマンドごとにコンピューターからデバイスに渡されます。 これは、機能がデバイスではなくコンピューターに格納されるため、フィールド内のデバイスに対して機能を使用する場合に推奨される方法です。 フィールド エンジニアが誤って機能の削除を忘れてデバイスをセキュリティで保護されていない状態にしておくリスクは回避されます。

「製造後にデバイスに変更を加える」の説明に従って、機能ファイルをデバイスにサイドロードするか、操作で デバイスに渡す前に、Azure Sphere Security Service (AS3) からダウンロードする必要があります。 ダウンロードされた機能ファイルはデバイス固有です。ダウンロードすると、関連するデバイスで機能ファイルを繰り返し使用できます。

enableRfTestMode 機能

デバイスの製造状態が空白の場合、 enableRfTestMode 機能は既定でデバイスに存在 します。 この機能により、電子ヒューズのプログラミングとRF動作の構成とテストが可能になります。 カタログ所有者がこの機能をホスト コンピューターにダウンロードすることはできません。 この機能が必要な場合は、Microsoft の担当者にお問い合わせください。

デバイスの製造状態が 空白の場合、 az sphere デバイス機能 show-attached コマンドは enableRfTestMode 機能を表示します。

appDevelopment 機能

appDevelopment デバイス機能は、service-UART 通信のロックを解除し、デバイスが信頼する署名の種類を変更します。 これは、アプリケーションの開発中に使用することを目的としています。

既定では、Azure Sphere デバイスは、Azure Sphere Security Service によってダウンロードされた運用環境で署名されたイメージ パッケージを信頼しますが、SDK 署名されたイメージ パッケージは信頼しません。 そのため、SDK を使用してイメージ パッケージを作成し、デバイスに appDevelopment 機能がない限り、デバッグのために Azure Sphere デバイスにサイドロードすることはできません。 appDevelopment 機能により、デバイスはイメージ パッケージを信頼し、デバイスからアプリケーションを開始、停止、デバッグ、または削除できます。

要約すると、 appDevelopment 機能は service-UART 通信のロックを解除して、次の操作を許可します。

  • Visual Studio、Visual Studio Code、CLI、または az sphere image-package コマンドを使用して構築されたイメージ パッケージをサイドローディングする。

  • イメージ パッケージの署名方法に関係なく、Azure Sphere デバイスからのイメージ パッケージの開始、停止、デバッグ、または削除。

appDevelopment 機能を追加するには、az sphere device enable-development コマンドを使用します。 このコマンドは、接続されているデバイスの appDevelopment 機能をダウンロードし、デバイスに機能をサイドロードして、デバイスを既定の 開発デバイス グループに移動します。 別のデバイス グループを指定するには、 パラメーターを --device-group 含めます。

az sphere device enable-development を使用する場合、明示的にロックするまでデバイスはロック解除されたままになります。 デバイスを再ロックするには、 az sphere device enable-cloud-test コマンドを 使用します。 このコマンドは、指定されたコマンド ライン パラメーターに応じて、機能を削除し、デバイス グループを変更します。

az sphere device enable-development コマンドと az sphere device enable-cloud-test コマンドは、開発とデバッグ、またはクラウドデプロイ用にデバイスを準備する一連のアクションをそれぞれ実行します。 これらのコマンドを使用する代わりに、 az sphere device capability コマンドを使用して、デバイス機能をダウンロードまたは更新したり、デバイスに現在持っている機能を確認したりできます。

fieldServicing 機能

デバイスの製造状態が Blank または Module1Complete の場合、fieldServicing 機能は既定でデバイスに存在します。 デバイスが DeviceComplete の製造状態にある場合、 fieldServicing 機能はサイドロードできますが、通常はサービス セッション中に各操作でデバイスに渡されます。 サービス セッションを開始する方法の詳細については、「 製造後にデバイスに変更を加える」を参照してください。

デバイスの製造状態に関係なく、 fieldServicing 機能によって service-UART 通信がロック解除され、次の操作が可能になります。

  • 実稼働署名済みイメージ パッケージのサイドローディング。
  • 一時としてマークされている実稼働署名済みイメージ パッケージの開始、停止、削除。
  • Wi-Fi の構成などの定期的なメンテナンス タスクの実行。

デバイスの製造状態が Blank または Module1Complete の場合、デバイスには fieldServicing 機能が既定で存在しますが、az sphere デバイス機能 show-attached コマンドには fieldServicing 機能は表示されません。

最新の信頼されたキーストアへの依存関係

AS3 によって機能ファイルが作成されると、現在のイメージ署名キーを使用して署名されます。 各デバイスには、これらのキーが保持される OS の一部として信頼されたキーストアがあります。 ただし、デバイスがインターネットに接続されていない場合は、そのデバイスの信頼されたキーストアが古い場合、そのデバイスが対象としているデバイスによって機能が信頼されない可能性があります。

これを解決するために、1 つの方法は、信頼されたキーストアを更新するようにデバイスがインターネットに接続できるようにすることです。 デバイスをインターネットに接続 し、[ リセット ] を押して OS 更新プログラムをトリガーします。

これが不可能な場合は、更新された信頼されたキーストアをサイドロードできます。 これを行うには、 ライセンス条項 に同意し、 最新の OS 回復イメージをダウンロードし、この zip ファイルから "trusted-keystore.bin" ファイルのみを抽出します。 その後、 コマンド az sphere device sideload deploy --image-package <path-to-trustedkeystore.bin-file> を使用して、信頼されたキーストアをサイドロードできます。この機能はデバイスによって信頼されます。

3 つ目の方法は、 システム ソフトウェアを回復 して、Azure Sphere OS を最新のリリースバージョン (最新の信頼されたキーストアを含む) に更新することです。